diff --git a/include/arch/arm/arch/machine/registerset.h b/include/arch/arm/arch/machine/registerset.h index 21bc114..138dad4 100644 --- a/include/arch/arm/arch/machine/registerset.h +++ b/include/arch/arm/arch/machine/registerset.h @@ -33,6 +36,10 @@ | PMODE_SUPERVISOR \ | CPSR_EXTRA_FLAGS ) +#define CPSR_IDLETHREAD ( PMASK_FIRQ \ + | PMODE_SUPERVISOR \ + | CPSR_EXTRA_FLAGS ) + #ifdef __ASSEMBLER__ /* Offsets within the user context, these need to match the order in diff --git a/src/arch/arm/kernel/thread.c b/src/arch/arm/kernel/thread.c index ee88fce..a9af577 100644 --- a/src/arch/arm/kernel/thread.c +++ b/src/arch/arm/kernel/thread.c @@ -26,7 +26,7 @@ Arch_switchToThread(tcb_t *tcb) BOOT_CODE void Arch_configureIdleThread(tcb_t *tcb) { - setRegister(tcb, CPSR, 0x1f); + setRegister(tcb, CPSR, CPSR_IDLETHREAD); setRegister(tcb, LR_svc, (word_t)idleThreadStart); }