114 aligned_stack_ptr = new_stack_ptr & ~((
target_addr_t)align - 1);
115 if (aligned_stack_ptr != new_stack_ptr &&
123 return aligned_stack_ptr;
131 stacking, stack_ptr, 8);
157 const uint32_t ALIGN_NEEDED = (1 << 9);
166 if ((xpsr & ALIGN_NEEDED) != 0) {
167 LOG_DEBUG(
"XPSR(0x%08" PRIx32
") indicated stack alignment was necessary\r\n",
171 return new_stack_ptr;
178 const int XPSR_OFFSET = 0x3c;
180 stack_ptr, XPSR_OFFSET);
187 const int XPSR_OFFSET = 0x40;
189 stack_ptr, XPSR_OFFSET);
196 const int XPSR_OFFSET = 0x80;
198 stack_ptr, XPSR_OFFSET);
204 .stack_growth_direction = -1,
212 .stack_growth_direction = -1,
220 .stack_growth_direction = -1,
228 .stack_growth_direction = -1,
229 .num_output_registers = 26,
#define ARMV7M_NUM_CORE_REGS
#define LOG_DEBUG(expr ...)
static target_addr_t rtos_standard_cortex_m4f_stack_align(struct target *target, const uint8_t *stack_data, const struct rtos_register_stacking *stacking, target_addr_t stack_ptr)
static target_addr_t rtos_generic_stack_align(struct target *target, const uint8_t *stack_data, const struct rtos_register_stacking *stacking, target_addr_t stack_ptr, int align)
static const struct stack_register_offset rtos_standard_cortex_m4f_stack_offsets[]
static const struct stack_register_offset rtos_standard_cortex_m3_stack_offsets[ARMV7M_NUM_CORE_REGS]
const struct rtos_register_stacking rtos_standard_cortex_m3_stacking
static const struct stack_register_offset rtos_standard_cortex_m4f_fpu_stack_offsets[]
const struct rtos_register_stacking rtos_standard_cortex_m4f_fpu_stacking
const struct rtos_register_stacking rtos_standard_cortex_m4f_stacking
static target_addr_t rtos_standard_cortex_m4f_fpu_stack_align(struct target *target, const uint8_t *stack_data, const struct rtos_register_stacking *stacking, target_addr_t stack_ptr)
const struct rtos_register_stacking rtos_standard_cortex_r4_stacking
static target_addr_t rtos_standard_cortex_m3_stack_align(struct target *target, const uint8_t *stack_data, const struct rtos_register_stacking *stacking, target_addr_t stack_ptr)
static const struct stack_register_offset rtos_standard_cortex_r4_stack_offsets[]
target_addr_t rtos_cortex_m_stack_align(struct target *target, const uint8_t *stack_data, const struct rtos_register_stacking *stacking, target_addr_t stack_ptr, size_t xpsr_offset)
target_addr_t rtos_generic_stack_align8(struct target *target, const uint8_t *stack_data, const struct rtos_register_stacking *stacking, target_addr_t stack_ptr)
unsigned char stack_registers_size
signed char stack_growth_direction
enum target_endianness endianness
static uint32_t be_to_h_u32(const uint8_t *buf)
static uint32_t le_to_h_u32(const uint8_t *buf)