arm: Move inline functions

This commit is contained in:
Sebastian Huber
2013-01-04 16:22:18 +01:00
parent 13cf9520f4
commit 8df0e91ab0
3 changed files with 36 additions and 34 deletions

View File

@@ -20,6 +20,8 @@
* http://www.rtems.com/license/LICENSE.
*/
#include <rtems/score/armv4.h>
#include <bsp.h>
#include <bsp/irq.h>
#include <bsp/irq-generic.h>

View File

@@ -55,6 +55,40 @@ void _ARMV4_Exception_irq_default( void );
void _ARMV4_Exception_fiq_default( void );
static inline uint32_t arm_status_irq_enable( void )
{
uint32_t arm_switch_reg;
uint32_t psr;
RTEMS_COMPILER_MEMORY_BARRIER();
__asm__ volatile (
ARM_SWITCH_TO_ARM
"mrs %[psr], cpsr\n"
"bic %[arm_switch_reg], %[psr], #0x80\n"
"msr cpsr, %[arm_switch_reg]\n"
ARM_SWITCH_BACK
: [arm_switch_reg] "=&r" (arm_switch_reg), [psr] "=&r" (psr)
);
return psr;
}
static inline void arm_status_restore( uint32_t psr )
{
ARM_SWITCH_REGISTERS;
__asm__ volatile (
ARM_SWITCH_TO_ARM
"msr cpsr, %[psr]\n"
ARM_SWITCH_BACK
: ARM_SWITCH_OUTPUT
: [psr] "r" (psr)
);
RTEMS_COMPILER_MEMORY_BARRIER();
}
#endif /* ARM_MULTILIB_ARCH_V4 */
#ifdef __cplusplus

View File

@@ -503,40 +503,6 @@ typedef enum {
ARM_EXCEPTION_MAKE_ENUM_32_BIT = 0xffffffff
} Arm_symbolic_exception_name;
static inline uint32_t arm_status_irq_enable( void )
{
uint32_t arm_switch_reg;
uint32_t psr;
RTEMS_COMPILER_MEMORY_BARRIER();
__asm__ volatile (
ARM_SWITCH_TO_ARM
"mrs %[psr], cpsr\n"
"bic %[arm_switch_reg], %[psr], #0x80\n"
"msr cpsr, %[arm_switch_reg]\n"
ARM_SWITCH_BACK
: [arm_switch_reg] "=&r" (arm_switch_reg), [psr] "=&r" (psr)
);
return psr;
}
static inline void arm_status_restore( uint32_t psr )
{
ARM_SWITCH_REGISTERS;
__asm__ volatile (
ARM_SWITCH_TO_ARM
"msr cpsr, %[psr]\n"
ARM_SWITCH_BACK
: ARM_SWITCH_OUTPUT
: [psr] "r" (psr)
);
RTEMS_COMPILER_MEMORY_BARRIER();
}
/** @} */
typedef struct {