summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/export/system.h5
-rw-r--r--firmware/target/hosted/sdl/system-target.h3
-rw-r--r--firmware/target/mips/ingenic_jz47xx/system-target.h26
3 files changed, 9 insertions, 25 deletions
diff --git a/firmware/export/system.h b/firmware/export/system.h
index ee668c87e4..bbaf5d74df 100644
--- a/firmware/export/system.h
+++ b/firmware/export/system.h
@@ -241,9 +241,10 @@ enum {
241#include "system-target.h" 241#include "system-target.h"
242#elif defined(HAVE_SDL) /* SDL build */ 242#elif defined(HAVE_SDL) /* SDL build */
243#include "system-sdl.h" 243#include "system-sdl.h"
244#define NEED_GENERIC_BYTESWAPS
244#endif 245#endif
245 246
246#if (CONFIG_PLATFORM & PLATFORM_HOSTED) 247#ifdef NEED_GENERIC_BYTESWAPS
247static inline uint16_t swap16(uint16_t value) 248static inline uint16_t swap16(uint16_t value)
248 /* 249 /*
249 result[15..8] = value[ 7..0]; 250 result[15..8] = value[ 7..0];
@@ -276,7 +277,7 @@ static inline uint32_t swap_odd_even32(uint32_t value)
276 return (t >> 8) | ((t ^ value) << 8); 277 return (t >> 8) | ((t ^ value) << 8);
277} 278}
278 279
279#endif /* PLATFORM_HOSTED */ 280#endif /* NEED_GENERIC_BYTESWAPS */
280 281
281#ifndef BIT_N 282#ifndef BIT_N
282#define BIT_N(n) (1U << (n)) 283#define BIT_N(n) (1U << (n))
diff --git a/firmware/target/hosted/sdl/system-target.h b/firmware/target/hosted/sdl/system-target.h
index 31194fc33a..3489ea5168 100644
--- a/firmware/target/hosted/sdl/system-target.h
+++ b/firmware/target/hosted/sdl/system-target.h
@@ -1 +1,4 @@
1#include "system-sdl.h" 1#include "system-sdl.h"
2
3#define NEED_GENERIC_BYTESWAPS
4
diff --git a/firmware/target/mips/ingenic_jz47xx/system-target.h b/firmware/target/mips/ingenic_jz47xx/system-target.h
index 1f8c388ec6..caf1733158 100644
--- a/firmware/target/mips/ingenic_jz47xx/system-target.h
+++ b/firmware/target/mips/ingenic_jz47xx/system-target.h
@@ -32,6 +32,9 @@
32#define CACHE_LINE_SIZE 32 32#define CACHE_LINE_SIZE 32
33#include "mmu-mips.h" 33#include "mmu-mips.h"
34 34
35/* no optimized byteswap functions implemented for mips, yet */
36#define NEED_GENERIC_BYTESWAPS
37
35/* This one returns the old status */ 38/* This one returns the old status */
36static inline int set_interrupt_status(int status, int mask) 39static inline int set_interrupt_status(int status, int mask)
37{ 40{
@@ -73,29 +76,6 @@ static inline void restore_interrupt(int status)
73#define set_irq_level(status) set_interrupt_status((status), ST0_IE) 76#define set_irq_level(status) set_interrupt_status((status), ST0_IE)
74#define disable_irq_save() disable_interrupt_save(ST0_IE) 77#define disable_irq_save() disable_interrupt_save(ST0_IE)
75#define restore_irq(c0_status) restore_interrupt(c0_status) 78#define restore_irq(c0_status) restore_interrupt(c0_status)
76
77static inline uint16_t swap16(uint16_t value)
78 /*
79 result[15..8] = value[ 7..0];
80 result[ 7..0] = value[15..8];
81 */
82{
83 return (value >> 8) | (value << 8);
84}
85
86static inline uint32_t swap32(uint32_t value)
87 /*
88 result[31..24] = value[ 7.. 0];
89 result[23..16] = value[15.. 8];
90 result[15.. 8] = value[23..16];
91 result[ 7.. 0] = value[31..24];
92 */
93{
94 uint32_t hi = swap16(value >> 16);
95 uint32_t lo = swap16(value & 0xffff);
96 return (lo << 16) | hi;
97}
98
99#define UNCACHED_ADDRESS(addr) ((unsigned int)(addr) | 0xA0000000) 79#define UNCACHED_ADDRESS(addr) ((unsigned int)(addr) | 0xA0000000)
100#define UNCACHED_ADDR(x) UNCACHED_ADDRESS((x)) 80#define UNCACHED_ADDR(x) UNCACHED_ADDRESS((x))
101#define PHYSADDR(x) ((x) & 0x1fffffff) 81#define PHYSADDR(x) ((x) & 0x1fffffff)