diff options
author | Christian Cunningham <cc@localhost> | 2022-02-19 13:20:36 -0700 |
---|---|---|
committer | Christian Cunningham <cc@localhost> | 2022-02-19 13:20:36 -0700 |
commit | 5419a7174ef491427797196903c35ce921129f27 (patch) | |
tree | 472be2141f330d07a445c05653c95572db48e22e /src/sys | |
parent | fc8b9b0b932a09d7484c1cd7173236f79de14ee1 (diff) |
Moved scheduler macros
Diffstat (limited to 'src/sys')
-rw-r--r-- | src/sys/schedule.S | 28 |
1 files changed, 1 insertions, 27 deletions
diff --git a/src/sys/schedule.S b/src/sys/schedule.S index 3c49494..d10b844 100644 --- a/src/sys/schedule.S +++ b/src/sys/schedule.S @@ -1,33 +1,7 @@ .section ".text" .globl schedule -.macro preserve_ctx - cps #0x1f // Sys mode - // Store Usr regs - push {r0-r12} - push {lr} - ldr r3, =scheduler // struct Scheduler - ldr r2, [r3, #0] // struct Thread* rthread - str sp, [r2, #4] // svc_lr -> void* sp - cps #0x13 // Svc mode - mrs r1, spsr - str r1, [r2, #0xc] // preserve cpsr - str lr, [r2, #0] // svc_lr -> void* pc -.endm -.macro restore_ctx - ldr r3, =scheduler // struct Scheduler - ldr r2, [r3, #0] // struct Thread* rthread - ldr lr, [r2, #0] // void* pc -> lr_svc - ldr r0, [r2, #4] // void* sp -> r0 - ldr r1, [r2, #0xc] // restore cpsr - msr spsr_f, r1 - cps #0x1f // Sys mode - mov sp, r0 // Set stack pointer - // Restore Usr regs - pop {lr} - pop {r0-r12} - cps #0x13 // Svc mode -.endm +.include "macros.inc" // Assumption: Enter in SVC mode schedule: |