37#ifndef _RTEMS_SCORE_CPUIMPL_H
38#define _RTEMS_SCORE_CPUIMPL_H
40#include <rtems/score/cpu.h>
52#define CPU_PER_CPU_CONTROL_SIZE 0
54#ifdef ARM_MULTILIB_ARCH_V4
56#if defined(ARM_MULTILIB_VFP_D32)
57#define CPU_INTERRUPT_FRAME_SIZE 240
58#elif defined(ARM_MULTILIB_VFP)
59#define CPU_INTERRUPT_FRAME_SIZE 112
61#define CPU_INTERRUPT_FRAME_SIZE 40
66#define CPU_THREAD_LOCAL_STORAGE_VARIANT 11
74#ifdef ARM_MULTILIB_ARCH_V4
77#ifdef ARM_MULTILIB_VFP
79#ifdef ARM_MULTILIB_VFP_D32
106#ifdef ARM_MULTILIB_HAS_STORE_RETURN_STATE
116 uint32_t return_cpsr;
125 uint32_t return_cpsr;
133static inline struct Per_CPU_Control *_ARM_Get_current_per_CPU_control(
void )
139 "mrc p15, 0, %0, c13, c0, 4"
146#define _CPU_Get_current_per_CPU_control() _ARM_Get_current_per_CPU_control()
154void _CPU_Context_volatile_clobber( uintptr_t pattern );
156void _CPU_Context_validate( uintptr_t pattern );
158static inline void _CPU_Instruction_illegal(
void )
163static inline void _CPU_Instruction_no_operation(
void )
168static inline void _CPU_Use_thread_local_storage(
172#ifdef ARM_MULTILIB_HAS_THREAD_ID_REGISTER
174 "mcr p15, 0, %0, c13, c0, 3" : :
"r" (
context->thread_id ) :
"memory"
181static inline void *_CPU_Get_TLS_thread_pointer(
185 return (
void *)
context->thread_id;
#define RTEMS_NO_RETURN
Tells the compiler in a function declaration that this function does not return.
Definition: basedefs.h:386
RTEMS_NO_RETURN void _CPU_Fatal_halt(uint32_t source, CPU_Uint32ptr error)
Definition: bsp_fatal_halt.c:31
uintptr_t CPU_Uint32ptr
Definition: cpu.h:557
register struct Per_CPU_Control *_SPARC_Per_CPU_current __asm__("g6")
The pointer to the current per-CPU control is available via register g6.
rtems_termios_device_context * context
Definition: console-config.c:62
Interrupt stack frame (ISF).
Definition: cpuimpl.h:66
Thread register context.
Definition: cpu.h:169
Per CPU Core Structure.
Definition: percpu.h:384