rp2040

RP2040 Programming without SDK
Log | Files | Refs

commit f9584892ede82f88c87a567f79f8e11fed42cdfa
parent e7760c1a36c1865d4df268b65cd8d53a126a7d3d
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Wed, 27 Mar 2024 07:43:12 +0900

change sp from msp to psp. something weird

Diffstat:
Mex3/main.c | 3+++
Mex3/proc.s | 12++++++++++++
2 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/ex3/main.c b/ex3/main.c @@ -9,6 +9,7 @@ void wfi(void); void print_sp(void); void *memcpy(void *s1, void *s2, long n); void restore_context(unsigned int [17]); +void set_psp(void); // A proc represents a process in execution. typedef struct proc { @@ -64,6 +65,8 @@ main(void) { p1.r[16] = 0; p1.next = NULL; + set_psp(); + proc0(); return 0; diff --git a/ex3/proc.s b/ex3/proc.s @@ -163,3 +163,14 @@ restore_context: msr xpsr, r1 ldm r0, {r0-r7} bx r8 + + // void set_psp(void); + // Set_psp changes the stack to use to psp and set it to 0x20000100 + // TODO: ISB barrier? + .global set_psp +set_psp: + mov r0, #2 + msr control, r0 + ldr r0, =0x20000100 + mov sp, r0 + bx lr +\ No newline at end of file