From 04e688cf16c80fd93124aa392e92bdc3db02167a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Tue, 18 Sep 2018 15:14:49 +0200 Subject: [PATCH] [ion] Register: fix potential bug in Register --- ion/src/device/regs/dma.h | 6 +++--- ion/src/device/regs/register.h | 2 +- ion/src/device/regs/syscfg.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ion/src/device/regs/dma.h b/ion/src/device/regs/dma.h index 75190d271..de2acc702 100644 --- a/ion/src/device/regs/dma.h +++ b/ion/src/device/regs/dma.h @@ -9,18 +9,18 @@ public: }; class SCR : Register32 { public: - enum class Burst { + enum class Burst : uint8_t { Single = 0, Incremental4 = 1, Incremental8 = 2, Incremental16 = 3 }; - enum class DataSize { + enum class DataSize : uint8_t { Byte = 0, HalfWord = 1, Word = 2 }; - enum class Direction { + enum class Direction : uint8_t { PeripheralToMemory = 0, MemoryToPeripheral = 1, MemoryToMemory = 2 diff --git a/ion/src/device/regs/register.h b/ion/src/device/regs/register.h index 9650824e7..541c39e69 100644 --- a/ion/src/device/regs/register.h +++ b/ion/src/device/regs/register.h @@ -50,7 +50,7 @@ typedef Register Register32; typedef Register Register64; #define REGS_FIELD_R(name,type,high,low) type get##name() volatile { return (type)getBitRange(high,low); }; -#define REGS_FIELD_W(name,type,high,low) void set##name(type v) volatile { setBitRange(high, low, (uint8_t)v); }; +#define REGS_FIELD_W(name,type,high,low) void set##name(type v) volatile { static_assert(sizeof(type) <= 2, "Invalid size"); setBitRange(high, low, static_cast(v)); }; #define REGS_FIELD(name,type,high,low) REGS_FIELD_R(name,type,high,low); REGS_FIELD_W(name,type,high,low); #define REGS_TYPE_FIELD(name,high,low) REGS_FIELD(name,name,high,low) #define REGS_BOOL_FIELD(name,bit) REGS_FIELD(name,bool,bit,bit) diff --git a/ion/src/device/regs/syscfg.h b/ion/src/device/regs/syscfg.h index d1b1afa29..0690b9430 100644 --- a/ion/src/device/regs/syscfg.h +++ b/ion/src/device/regs/syscfg.h @@ -9,7 +9,7 @@ class SYSCFG { public: class MEMRMP : Register32 { public: - enum class MemMode { + enum class MemMode : uint8_t { MainFlashmemory = 0, SystemFlashmemory = 1, EmbeddedSRAM = 3