BrianSidebotham/arm-tutorial-rpi

Problem with interrupts on the Pi2

Closed this issue · 2 comments

I am having a problem with interrupts on the Pi2. It appears that the first interrupt causes execution to jump to somewhere and not return. I have checked the disassembly listing and the vector table looks ok.Has anyone had this problem and fixed it?

I had the same issue because I updated the firmware (bootcode.bin & start.elf) and from that moment my RPi 2 model B (v1.1) goes to hypervisor mode (0x1A). I put this code just before IVT copy:

.arch_extension sec
.arch_extension virt
	mrs		r0, cpsr
	and		r0, r0, #0x1F
	cmp		r0, #CPSR_MODE_SVR
	beq		svc_mode
	mov		r0, #CPSR_MODE_SVR
	msr		spsr_cxsf, r0
	add		r0, pc, #4
	msr		ELR_hyp, r0
	eret
svc_mode:

And now it is working properly.

@sergio-uma Thanks for reporting this. I have only recently been able to fix the entire tutorial set. Just part-5 to go now. All the rest work across the complete set of RPI hardware, including RPI4.