mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-02-18 23:12:15 +08:00
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"
|
||||
|
||||
extern uint32_t* _or1k_stack_top;
|
||||
extern uint8_t* _or1k_stack_top;
|
||||
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 uint32_t* _or1k_exception_stack_bottom;
|
||||
extern uint8_t* _or1k_exception_stack_bottom;
|
||||
|
||||
#ifdef __OR1K_MULTICORE__
|
||||
extern uint32_t* *_or1k_stack_core;
|
||||
extern uint32_t* *_or1k_exception_stack_core;
|
||||
extern uint8_t* *_or1k_stack_core;
|
||||
extern uint8_t* *_or1k_exception_stack_core;
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -24,27 +24,27 @@
|
||||
|
||||
#ifdef __OR1K_MULTICORE__
|
||||
// Define pointers to arrays
|
||||
uint32_t* *_or1k_stack_core;
|
||||
uint32_t* *_or1k_exception_stack_core;
|
||||
uint8_t* *_or1k_stack_core;
|
||||
uint8_t* *_or1k_exception_stack_core;
|
||||
uint32_t* *_or1k_exception_level;
|
||||
#else
|
||||
// Define scalar
|
||||
uint32_t _or1k_exception_level;
|
||||
#endif
|
||||
|
||||
uint32_t* _or1k_stack_top;
|
||||
uint32_t* _or1k_stack_bottom;
|
||||
uint8_t* _or1k_stack_top;
|
||||
uint8_t* _or1k_stack_bottom;
|
||||
|
||||
uint32_t* _or1k_exception_stack_top;
|
||||
uint32_t* _or1k_exception_stack_bottom;
|
||||
uint8_t* _or1k_exception_stack_top;
|
||||
uint8_t* _or1k_exception_stack_bottom;
|
||||
|
||||
void _or1k_init() {
|
||||
#ifdef __OR1K_MULTICORE__
|
||||
uint32_t c;
|
||||
|
||||
// Initialize stacks
|
||||
_or1k_stack_core = _sbrk_r(0, sizeof(uint32_t*) * or1k_numcores());
|
||||
_or1k_exception_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(uint8_t*) * or1k_numcores());
|
||||
|
||||
_or1k_stack_core[0] = _or1k_stack_top;
|
||||
_or1k_exception_stack_core[0] = _or1k_exception_stack_top;
|
||||
|
Loading…
x
Reference in New Issue
Block a user