;Entry_JITTRACE
;-------------------
;Displays the last instructions before a crash
;
;Entry:
; R0 - Command tail
; R12 - pointer to module private word

.Entry_JITTRACE
 STMFD   R13!, {R0-R12, R14}

 LDR     R12, [R12, #0]
 LDR     R4, [R12, #IT_DA_address - VARS]
 TEQ     R4, #0
 LDMEQFD R13!, {R0-R12, PC}
 LDR     R4, [R12, #instruction_trace_ptr - VARS]
 LDR     R3, [R4, #-4]
 SUB     R3, R3, #&20
 CMP     R3, R4
 MOVLO   R3, R4

 SWI     XOS_WriteS
 DCB     "Trace buffer @ ", 0
 ALIGN
 MOV     R0, R4
 ADR     R1, _memoryi + 8
 MOV     R2, #8
 SWI     XOS_ConvertHex8
 ADR     R0, _memoryi + 8
 MOV     R1, #8
 SWI     XOS_WriteN
 SWI     XOS_WriteI+ASC("-")
 ADD     R0, R4, #jit_trace_buffer_size
 ADR     R1, _memoryi + 8
 MOV     R2, #8
 SWI     XOS_ConvertHex8
 ADR     R0, _memoryi + 8
 MOV     R1, #8
 SWI     XOS_WriteN
 SWI     XOS_NewLine
 
 MOV     R0, R3
 ADR     R1, _memoryi + 8
 MOV     R2, #8
 SWI     XOS_ConvertHex8

 ADR     R0, _memoryi
 SWI     XOS_CLI
LDMFD   R13!, {R0-R12, PC}

 ._memoryi	DCB "MEMORYI 00000000+20",0
		ALIGN