Add functions to get top and limit stack
This commit is contained in:
parent
30c9ad2b2a
commit
96756b3945
@ -271,6 +271,14 @@ void reset_cpu(void) {
|
|||||||
reset();
|
reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t *port_stack_get_limit(void) {
|
||||||
|
return &_ebss;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t *port_stack_get_top(void) {
|
||||||
|
return &_estack;
|
||||||
|
}
|
||||||
|
|
||||||
// Place the word to save 8k from the end of RAM so we and the bootloader don't clobber it.
|
// Place the word to save 8k from the end of RAM so we and the bootloader don't clobber it.
|
||||||
#ifdef SAMD21
|
#ifdef SAMD21
|
||||||
uint32_t* safe_word = (uint32_t*) (HMCRAMC0_ADDR + HMCRAMC0_SIZE - 0x2000);
|
uint32_t* safe_word = (uint32_t*) (HMCRAMC0_ADDR + HMCRAMC0_SIZE - 0x2000);
|
||||||
|
@ -67,6 +67,14 @@ void reset_port(void) {
|
|||||||
void reset_to_bootloader(void) {
|
void reset_to_bootloader(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t *port_stack_get_limit(void) {
|
||||||
|
return &_ebss;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t *port_stack_get_top(void) {
|
||||||
|
return &_estack;
|
||||||
|
}
|
||||||
|
|
||||||
extern uint32_t _ebss;
|
extern uint32_t _ebss;
|
||||||
|
|
||||||
// Place the word to save just after our BSS section that gets blanked.
|
// Place the word to save just after our BSS section that gets blanked.
|
||||||
|
@ -146,6 +146,14 @@ void reset_cpu(void) {
|
|||||||
NVIC_SystemReset();
|
NVIC_SystemReset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t *port_stack_get_limit(void) {
|
||||||
|
return &_ebss;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t *port_stack_get_top(void) {
|
||||||
|
return &_estack;
|
||||||
|
}
|
||||||
|
|
||||||
extern uint32_t _ebss;
|
extern uint32_t _ebss;
|
||||||
// Place the word to save just after our BSS section that gets blanked.
|
// Place the word to save just after our BSS section that gets blanked.
|
||||||
void port_set_saved_word(uint32_t value) {
|
void port_set_saved_word(uint32_t value) {
|
||||||
|
@ -67,6 +67,14 @@ void reset_cpu(void) {
|
|||||||
NVIC_SystemReset();
|
NVIC_SystemReset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t *port_stack_get_limit(void) {
|
||||||
|
return &_ebss;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t *port_stack_get_top(void) {
|
||||||
|
return &_estack;
|
||||||
|
}
|
||||||
|
|
||||||
extern uint32_t _ebss;
|
extern uint32_t _ebss;
|
||||||
// Place the word to save just after our BSS section that gets blanked.
|
// Place the word to save just after our BSS section that gets blanked.
|
||||||
void port_set_saved_word(uint32_t value) {
|
void port_set_saved_word(uint32_t value) {
|
||||||
|
@ -54,6 +54,12 @@ void reset_board(void);
|
|||||||
// Reset to the bootloader
|
// Reset to the bootloader
|
||||||
void reset_to_bootloader(void);
|
void reset_to_bootloader(void);
|
||||||
|
|
||||||
|
// Get stack limit address
|
||||||
|
uint32_t *port_stack_get_limit(void);
|
||||||
|
|
||||||
|
// Get stack top address
|
||||||
|
uint32_t *port_stack_get_top(void);
|
||||||
|
|
||||||
// Save and retrieve a word from memory that is preserved over reset. Used for safe mode.
|
// Save and retrieve a word from memory that is preserved over reset. Used for safe mode.
|
||||||
void port_set_saved_word(uint32_t);
|
void port_set_saved_word(uint32_t);
|
||||||
uint32_t port_get_saved_word(void);
|
uint32_t port_get_saved_word(void);
|
||||||
|
Loading…
Reference in New Issue
Block a user