mirror of
https://github.com/keirf/greaseweazle-firmware.git
synced 2025-10-31 11:06:44 -07:00
intrinsics: Remove unused definitions
This commit is contained in:
@@ -80,85 +80,6 @@ struct exception_frame {
|
|||||||
* confirmed on Cortex-M3. */
|
* confirmed on Cortex-M3. */
|
||||||
#define IRQ_restore(oldpri) write_special(basepri, (oldpri))
|
#define IRQ_restore(oldpri) write_special(basepri, (oldpri))
|
||||||
|
|
||||||
static inline uint16_t _rev16(uint16_t x)
|
|
||||||
{
|
|
||||||
uint16_t result;
|
|
||||||
asm volatile ("rev16 %0,%1" : "=r" (result) : "r" (x));
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline uint32_t _rev32(uint32_t x)
|
|
||||||
{
|
|
||||||
uint32_t result;
|
|
||||||
asm volatile ("rev %0,%1" : "=r" (result) : "r" (x));
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline uint32_t _rbit32(uint32_t x)
|
|
||||||
{
|
|
||||||
uint32_t result;
|
|
||||||
asm volatile ("rbit %0,%1" : "=r" (result) : "r" (x));
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
extern void __bad_cmpxchg(volatile void *ptr, int size);
|
|
||||||
|
|
||||||
static always_inline unsigned long __cmpxchg(
|
|
||||||
volatile void *ptr, unsigned long old, unsigned long new, int size)
|
|
||||||
{
|
|
||||||
unsigned long oldval, res;
|
|
||||||
|
|
||||||
switch (size) {
|
|
||||||
case 1:
|
|
||||||
do {
|
|
||||||
asm volatile(" ldrexb %1,[%2] \n"
|
|
||||||
" movs %0,#0 \n"
|
|
||||||
" cmp %1,%3 \n"
|
|
||||||
" it eq \n"
|
|
||||||
" strexbeq %0,%4,[%2] \n"
|
|
||||||
: "=&r" (res), "=&r" (oldval)
|
|
||||||
: "r" (ptr), "Ir" (old), "r" (new)
|
|
||||||
: "memory", "cc");
|
|
||||||
} while (res);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
do {
|
|
||||||
asm volatile(" ldrexh %1,[%2] \n"
|
|
||||||
" movs %0,#0 \n"
|
|
||||||
" cmp %1,%3 \n"
|
|
||||||
" it eq \n"
|
|
||||||
" strexheq %0,%4,[%2] \n"
|
|
||||||
: "=&r" (res), "=&r" (oldval)
|
|
||||||
: "r" (ptr), "Ir" (old), "r" (new)
|
|
||||||
: "memory", "cc");
|
|
||||||
} while (res);
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
do {
|
|
||||||
asm volatile(" ldrex %1,[%2] \n"
|
|
||||||
" movs %0,#0 \n"
|
|
||||||
" cmp %1,%3 \n"
|
|
||||||
" it eq \n"
|
|
||||||
" strexeq %0,%4,[%2] \n"
|
|
||||||
: "=&r" (res), "=&r" (oldval)
|
|
||||||
: "r" (ptr), "Ir" (old), "r" (new)
|
|
||||||
: "memory", "cc");
|
|
||||||
} while (res);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
__bad_cmpxchg(ptr, size);
|
|
||||||
oldval = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return oldval;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define cmpxchg(ptr,o,n) \
|
|
||||||
((__typeof__(*(ptr)))__cmpxchg((ptr), \
|
|
||||||
(unsigned long)(o), \
|
|
||||||
(unsigned long)(n), \
|
|
||||||
sizeof(*(ptr))))
|
|
||||||
|
|
||||||
/* Cortex initialisation */
|
/* Cortex initialisation */
|
||||||
void cortex_init(void);
|
void cortex_init(void);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user