From 3722e41837b9573a02c0ca1eefd46b1b9e20ccfc Mon Sep 17 00:00:00 2001 From: nls Date: Thu, 15 Jul 2010 22:01:06 +0000 Subject: [PATCH] Don't duplicate byteswap code. Invent system where NEED_GENERIC_BYTESWAPS is set if the generic functions from system.h are needed. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27440 a1c6a512-1295-4272-9138-f99709370657 --- firmware/export/system.h | 5 +++-- firmware/target/hosted/sdl/system-target.h | 3 +++ .../target/mips/ingenic_jz47xx/system-target.h | 26 +++------------------- 3 files changed, 9 insertions(+), 25 deletions(-) diff --git a/firmware/export/system.h b/firmware/export/system.h index ee668c87e..bbaf5d74d 100644 --- a/firmware/export/system.h +++ b/firmware/export/system.h @@ -241,9 +241,10 @@ enum { #include "system-target.h" #elif defined(HAVE_SDL) /* SDL build */ #include "system-sdl.h" +#define NEED_GENERIC_BYTESWAPS #endif -#if (CONFIG_PLATFORM & PLATFORM_HOSTED) +#ifdef NEED_GENERIC_BYTESWAPS static inline uint16_t swap16(uint16_t value) /* result[15..8] = value[ 7..0]; @@ -276,7 +277,7 @@ static inline uint32_t swap_odd_even32(uint32_t value) return (t >> 8) | ((t ^ value) << 8); } -#endif /* PLATFORM_HOSTED */ +#endif /* NEED_GENERIC_BYTESWAPS */ #ifndef BIT_N #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 31194fc33..3489ea516 100644 --- a/firmware/target/hosted/sdl/system-target.h +++ b/firmware/target/hosted/sdl/system-target.h @@ -1 +1,4 @@ #include "system-sdl.h" + +#define NEED_GENERIC_BYTESWAPS + diff --git a/firmware/target/mips/ingenic_jz47xx/system-target.h b/firmware/target/mips/ingenic_jz47xx/system-target.h index 1f8c388ec..caf173315 100644 --- a/firmware/target/mips/ingenic_jz47xx/system-target.h +++ b/firmware/target/mips/ingenic_jz47xx/system-target.h @@ -32,6 +32,9 @@ #define CACHE_LINE_SIZE 32 #include "mmu-mips.h" +/* no optimized byteswap functions implemented for mips, yet */ +#define NEED_GENERIC_BYTESWAPS + /* This one returns the old status */ static inline int set_interrupt_status(int status, int mask) { @@ -73,29 +76,6 @@ static inline void restore_interrupt(int status) #define set_irq_level(status) set_interrupt_status((status), ST0_IE) #define disable_irq_save() disable_interrupt_save(ST0_IE) #define restore_irq(c0_status) restore_interrupt(c0_status) - -static inline uint16_t swap16(uint16_t value) - /* - result[15..8] = value[ 7..0]; - result[ 7..0] = value[15..8]; - */ -{ - return (value >> 8) | (value << 8); -} - -static inline uint32_t swap32(uint32_t value) - /* - result[31..24] = value[ 7.. 0]; - result[23..16] = value[15.. 8]; - result[15.. 8] = value[23..16]; - result[ 7.. 0] = value[31..24]; - */ -{ - uint32_t hi = swap16(value >> 16); - uint32_t lo = swap16(value & 0xffff); - return (lo << 16) | hi; -} - #define UNCACHED_ADDRESS(addr) ((unsigned int)(addr) | 0xA0000000) #define UNCACHED_ADDR(x) UNCACHED_ADDRESS((x)) #define PHYSADDR(x) ((x) & 0x1fffffff) -- 2.11.4.GIT