From 93bf62580a68533dc8252b9a2a055c02f34ecb67 Mon Sep 17 00:00:00 2001 From: Christian Cunningham Date: Thu, 24 Mar 2022 09:38:08 -0700 Subject: Modularized --- src/sys/schedule.S | 53 ----------------------------------------------------- 1 file changed, 53 deletions(-) delete mode 100644 src/sys/schedule.S (limited to 'src/sys/schedule.S') diff --git a/src/sys/schedule.S b/src/sys/schedule.S deleted file mode 100644 index a47252c..0000000 --- a/src/sys/schedule.S +++ /dev/null @@ -1,53 +0,0 @@ -.section ".text" -.globl schedule - -.include "macros.inc" - -// Assumption: Enter in SVC mode -schedule: - preserve_ctx - ldr r1, =irqlr - ldr r0, [r1] - cmp r0, #0 - beq 1f - // Replace LR with IRQ's LR - ldr r3, =scheduler - ldr r2, [r3, #0] // struct Thread* rthread - str r0, [r2, #0] // svc_lr -> void* pc - // Clear IRQ's LR - mov r0, #0 - str r0, [r1] -1: - bl next_thread // Thread* next -> r0 - ldr r3, =scheduler - str r0, [r3, #0] // next -> rthread - restore_ctx - subs pc, lr, #0 - -.globl cleanup -cleanup: - bl c_cleanup - // usrloop -> rthread - ldr r3, =scheduler - ldr r2, =usrloopthread - str r2, [r3, #0] - ldr sp, [r2, #4] - ldmfd sp!,{lr} - ldmfd sp!,{r0-r12} - ldr lr, =kernel_usr_task_loop - // svc sched - svc #2 -.globl kernel_usr_task_loop -kernel_usr_task_loop: - wfe - b kernel_usr_task_loop - -.globl add_thread -add_thread: - mrs r3, cpsr - and r3, #0x1F - cmp r3, #0x10 - beq 1f - b svc_add_thread -1: svc #3 - bx lr -- cgit v1.2.1