;Branch_thru_zero
;----------------
;Report a branch to &0
;
;NOTE: Could be entered in any CPU mode, stack might not exist

.Branch_thru_zero
 STR     R0, _tmp_R0
 ADR     R0, DAV_r0			;buffer for registers
 STMIB   R0, {R1-R14}			;store registers
 LDR     R2, _tmp_R0
 STR     R2, [R0, #0]
 MOV     R2, #0				;report from 0 as we dont know what
 STR     R2, [R0, #16 * 4]		;..PC was before branching to zero

 MRS     R1, CPSR			;get current CPU state
 TST     R1, #%1111			;is abort in User mode?
 SWIEQ   XOS_EnterOS			;YES, switch to SVC
 TEMP    R2
 STR     R1, DAV_CPSR
 LOCK    R2

 MOV     R12, #&10			;ADFF5010
B       report_unimplemented		;report it

._tmp_R0	DCD 0
