[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [PATCH v2 12/47] arm32: move arm32 specific code to a separate header
This patch creates a new header,include/arm/arm32/os.h, and move some functions to it. Signed-off-by: Huang Shijie <shijie.huang@xxxxxxx> --- include/arm/arm32/os.h | 31 +++++++++++++++++++++++++++++++ include/arm/os.h | 31 +++---------------------------- 2 files changed, 34 insertions(+), 28 deletions(-) create mode 100644 include/arm/arm32/os.h diff --git a/include/arm/arm32/os.h b/include/arm/arm32/os.h new file mode 100644 index 0000000..cb8e440 --- /dev/null +++ b/include/arm/arm32/os.h @@ -0,0 +1,31 @@ +#ifndef _ARM32_OS_H +#define _ARM32_OS_H + +#define BUG() while(1){asm volatile (".word 0xe7f000f0\n");} /* Undefined instruction; will call our fault handler. */ + +static inline void local_irq_disable(void) { + __asm__ __volatile__("cpsid i":::"memory"); +} + +static inline void local_irq_enable(void) { + __asm__ __volatile__("cpsie i":::"memory"); +} + +#define local_irq_save(x) { \ + __asm__ __volatile__("mrs %0, cpsr;cpsid i":"=r"(x)::"memory"); \ +} + +#define local_irq_restore(x) { \ + __asm__ __volatile__("msr cpsr_c, %0"::"r"(x):"memory"); \ +} + +#define local_save_flags(x) { \ + __asm__ __volatile__("mrs %0, cpsr":"=r"(x)::"memory"); \ +} + +/* We probably only need "dmb" here, but we'll start by being paranoid. */ +#define mb() __asm__("dsb":::"memory"); +#define rmb() __asm__("dsb":::"memory"); +#define wmb() __asm__("dsb":::"memory"); + +#endif diff --git a/include/arm/os.h b/include/arm/os.h index 6a1cc37..89b072d 100644 --- a/include/arm/os.h +++ b/include/arm/os.h @@ -14,35 +14,15 @@ void timer_handler(evtchn_port_t port, struct pt_regs *regs, void *ign); extern void *device_tree; -#define BUG() while(1){asm volatile (".word 0xe7f000f0\n");} /* Undefined instruction; will call our fault handler. */ - #define smp_processor_id() 0 #define barrier() __asm__ __volatile__("": : :"memory") extern shared_info_t *HYPERVISOR_shared_info; -// disable interrupts -static inline void local_irq_disable(void) { - __asm__ __volatile__("cpsid i":::"memory"); -} - -// enable interrupts -static inline void local_irq_enable(void) { - __asm__ __volatile__("cpsie i":::"memory"); -} - -#define local_irq_save(x) { \ - __asm__ __volatile__("mrs %0, cpsr;cpsid i":"=r"(x)::"memory"); \ -} - -#define local_irq_restore(x) { \ - __asm__ __volatile__("msr cpsr_c, %0"::"r"(x):"memory"); \ -} - -#define local_save_flags(x) { \ - __asm__ __volatile__("mrs %0, cpsr":"=r"(x)::"memory"); \ -} +#if defined (__arm__) +#include <arm32/os.h> +#endif static inline int irqs_disabled(void) { int x; @@ -50,11 +30,6 @@ static inline int irqs_disabled(void) { return x & 0x80; } -/* We probably only need "dmb" here, but we'll start by being paranoid. */ -#define mb() __asm__("dsb":::"memory"); -#define rmb() __asm__("dsb":::"memory"); -#define wmb() __asm__("dsb":::"memory"); - /************************** arm *******************************/ #ifdef __INSIDE_MINIOS__ #if defined (__arm__) -- 2.7.4 _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |