Skip to content

Save ELR_hyp and cpsr in pi 2 blinker 5 #40

@Dan12

Description

@Dan12

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 😄)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions