-
Notifications
You must be signed in to change notification settings - Fork 485
Open
Description
| push {r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} |
Since we are dealing with the raspberry pi 2 in hypervisor mode I think it is a bit misleading to just save those registers in the irq handler since the actual lr used by eret is ELR_hyp. Additionally, the cpsr register has some important information for conditional instructions that should be saved across the irq handler.
I think adding the following code would be beneficial for users:
mrs r0, ELR_hyp
mrs r1, cpsr
push {r0, r1}
bl c_irq_handler
pop {r0, r1}
msr ELR_hyp, r0
msr cpsr, r1(for context, I was trying to implement context switching for a bare metal os and the lack of state saving caused a few bugs for me 😄)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels