restore SP when exit

This commit is contained in:
2025-12-17 15:17:51 +08:00
parent 90b7839112
commit 6a3b949530
2 changed files with 9 additions and 4 deletions

View File

@@ -1,15 +1,17 @@
/* Exec after reset */ #include <bootloader.h>
#ifdef ENABLE_OPTION_BOOTLOADER
void bootloader_enter(void) __trap __naked { void bootloader_enter(void) __trap __naked {
/* Exec after reset */
__asm __asm
// ldw X, #0x03FF ldw Y, SP ; [90 96]
// ldw SP, X
ldw X, #0x483F ; [AE 48 3F] ldw X, #0x483F ; [AE 48 3F]
_cycle: _cycle:
decw X ; [5A] decw X ; [5A]
push A ; [88] push A ; [88]
ld A, (X) ; [F6] ld A, (X) ; [F6]
jrne _cycle ; [26 FB] jrne _cycle ; [26 FB]
// check // check address
ldw X, SP ; [96] ldw X, SP ; [96]
addw X, #3 ; [1C 00 03] addw X, #3 ; [1C 00 03]
cpw X, (1,SP) ; [13 01] cpw X, (1,SP) ; [13 01]
@@ -17,6 +19,8 @@ __asm
// jump to ram // jump to ram
ret ; [81] ret ; [81]
_exit: _exit:
ldw SP,Y ; [90 94]
jp 0x8004 ; [cc 80 04] jp 0x8004 ; [cc 80 04]
__endasm; __endasm;
} }
#endif /* ENABLE_OPTION_BOOTLOADER */

View File

@@ -1,6 +1,7 @@
#include <stdint.h> #include <stdint.h>
#include <stm8s.h> #include <stm8s.h>
#include <delay.h> #include <delay.h>
#include <bootloader.h>
#define LED_PIN 5 #define LED_PIN 5