diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/export/system.h | 4 | ||||
-rw-r--r-- | firmware/target/sh/system-sh.c | 11 | ||||
-rw-r--r-- | firmware/target/sh/system-target.h | 7 |
3 files changed, 22 insertions, 0 deletions
diff --git a/firmware/export/system.h b/firmware/export/system.h index b44600d2c2..489ed8dc12 100644 --- a/firmware/export/system.h +++ b/firmware/export/system.h | |||
@@ -266,6 +266,10 @@ static inline uint32_t swap_odd_even32(uint32_t value) | |||
266 | 266 | ||
267 | #endif /* !SIMULATOR */ | 267 | #endif /* !SIMULATOR */ |
268 | 268 | ||
269 | #ifndef TEST_BIT_N | ||
270 | #define TEST_BIT_N(n, mask) ((1UL << (n)) & (mask)) | ||
271 | #endif | ||
272 | |||
269 | /* Declare this as HIGHEST_IRQ_LEVEL if they don't differ */ | 273 | /* Declare this as HIGHEST_IRQ_LEVEL if they don't differ */ |
270 | #ifndef DISABLE_INTERRUPTS | 274 | #ifndef DISABLE_INTERRUPTS |
271 | #define DISABLE_INTERRUPTS HIGHEST_IRQ_LEVEL | 275 | #define DISABLE_INTERRUPTS HIGHEST_IRQ_LEVEL |
diff --git a/firmware/target/sh/system-sh.c b/firmware/target/sh/system-sh.c index 02af40282f..7779c975a7 100644 --- a/firmware/target/sh/system-sh.c +++ b/firmware/target/sh/system-sh.c | |||
@@ -27,6 +27,17 @@ | |||
27 | #include "font.h" | 27 | #include "font.h" |
28 | #include "led.h" | 28 | #include "led.h" |
29 | 29 | ||
30 | const unsigned bit_n_table[32] = { | ||
31 | 1LU<< 0, 1LU<< 1, 1LU<< 2, 1LU<< 3, | ||
32 | 1LU<< 4, 1LU<< 5, 1LU<< 6, 1LU<< 7, | ||
33 | 1LU<< 8, 1LU<< 9, 1LU<<10, 1LU<<11, | ||
34 | 1LU<<12, 1LU<<13, 1LU<<14, 1LU<<15, | ||
35 | 1LU<<16, 1LU<<17, 1LU<<18, 1LU<<19, | ||
36 | 1LU<<20, 1LU<<21, 1LU<<22, 1LU<<23, | ||
37 | 1LU<<24, 1LU<<25, 1LU<<26, 1LU<<27, | ||
38 | 1LU<<28, 1LU<<29, 1LU<<30, 1LU<<31 | ||
39 | }; | ||
40 | |||
30 | static const char* const irqname[] = { | 41 | static const char* const irqname[] = { |
31 | "", "", "", "", "IllInstr", "", "IllSltIn","","", | 42 | "", "", "", "", "IllInstr", "", "IllSltIn","","", |
32 | "CPUAdrEr", "DMAAdrEr", "NMI", "UserBrk", | 43 | "CPUAdrEr", "DMAAdrEr", "NMI", "UserBrk", |
diff --git a/firmware/target/sh/system-target.h b/firmware/target/sh/system-target.h index 3c225fbb69..2568911a1e 100644 --- a/firmware/target/sh/system-target.h +++ b/firmware/target/sh/system-target.h | |||
@@ -126,4 +126,11 @@ static inline uint32_t swap_odd_even32(uint32_t value) | |||
126 | return value; | 126 | return value; |
127 | } | 127 | } |
128 | 128 | ||
129 | extern const unsigned bit_n_table[32]; | ||
130 | #define BIT_N(n) ( \ | ||
131 | __builtin_constant_p(n) \ | ||
132 | ? (1LU << (n)) \ | ||
133 | : bit_n_table[n] \ | ||
134 | ) | ||
135 | |||
129 | #endif /* SYSTEM_TARGET_H */ | 136 | #endif /* SYSTEM_TARGET_H */ |