or1k: Fix multicore stack calculation
Change the type of the stack pointers to enable pointer calculations at byte granularity, which is needed for the calculation of _or1k_stack_core[c] and _or1k_exception_stack_core[c] with _or1k_stack_size and _or1k_exception_stack_size. (util.c:53-54)
This commit is contained in:
parent
8c5911b37c
commit
81ad4e656a
@ -6,17 +6,17 @@
|
|||||||
|
|
||||||
#include "include/or1k-support.h"
|
#include "include/or1k-support.h"
|
||||||
|
|
||||||
extern uint32_t* _or1k_stack_top;
|
extern uint8_t* _or1k_stack_top;
|
||||||
extern size_t _or1k_stack_size;
|
extern size_t _or1k_stack_size;
|
||||||
extern uint32_t* _or1k_stack_bottom;
|
extern uint8_t* _or1k_stack_bottom;
|
||||||
|
|
||||||
extern uint32_t* _or1k_exception_stack_top;
|
extern uint8_t* _or1k_exception_stack_top;
|
||||||
extern size_t _or1k_exception_stack_size;
|
extern size_t _or1k_exception_stack_size;
|
||||||
extern uint32_t* _or1k_exception_stack_bottom;
|
extern uint8_t* _or1k_exception_stack_bottom;
|
||||||
|
|
||||||
#ifdef __OR1K_MULTICORE__
|
#ifdef __OR1K_MULTICORE__
|
||||||
extern uint32_t* *_or1k_stack_core;
|
extern uint8_t* *_or1k_stack_core;
|
||||||
extern uint32_t* *_or1k_exception_stack_core;
|
extern uint8_t* *_or1k_exception_stack_core;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -24,27 +24,27 @@
|
|||||||
|
|
||||||
#ifdef __OR1K_MULTICORE__
|
#ifdef __OR1K_MULTICORE__
|
||||||
// Define pointers to arrays
|
// Define pointers to arrays
|
||||||
uint32_t* *_or1k_stack_core;
|
uint8_t* *_or1k_stack_core;
|
||||||
uint32_t* *_or1k_exception_stack_core;
|
uint8_t* *_or1k_exception_stack_core;
|
||||||
uint32_t* *_or1k_exception_level;
|
uint32_t* *_or1k_exception_level;
|
||||||
#else
|
#else
|
||||||
// Define scalar
|
// Define scalar
|
||||||
uint32_t _or1k_exception_level;
|
uint32_t _or1k_exception_level;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint32_t* _or1k_stack_top;
|
uint8_t* _or1k_stack_top;
|
||||||
uint32_t* _or1k_stack_bottom;
|
uint8_t* _or1k_stack_bottom;
|
||||||
|
|
||||||
uint32_t* _or1k_exception_stack_top;
|
uint8_t* _or1k_exception_stack_top;
|
||||||
uint32_t* _or1k_exception_stack_bottom;
|
uint8_t* _or1k_exception_stack_bottom;
|
||||||
|
|
||||||
void _or1k_init() {
|
void _or1k_init() {
|
||||||
#ifdef __OR1K_MULTICORE__
|
#ifdef __OR1K_MULTICORE__
|
||||||
uint32_t c;
|
uint32_t c;
|
||||||
|
|
||||||
// Initialize stacks
|
// Initialize stacks
|
||||||
_or1k_stack_core = _sbrk_r(0, sizeof(uint32_t*) * or1k_numcores());
|
_or1k_stack_core = _sbrk_r(0, sizeof(uint8_t*) * or1k_numcores());
|
||||||
_or1k_exception_stack_core = _sbrk_r(0, sizeof(uint32_t*) * or1k_numcores());
|
_or1k_exception_stack_core = _sbrk_r(0, sizeof(uint8_t*) * or1k_numcores());
|
||||||
|
|
||||||
_or1k_stack_core[0] = _or1k_stack_top;
|
_or1k_stack_core[0] = _or1k_stack_top;
|
||||||
_or1k_exception_stack_core[0] = _or1k_exception_stack_top;
|
_or1k_exception_stack_core[0] = _or1k_exception_stack_top;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user