--- /dev/null
+ .globl _start
+ #
+ # NOTE: Registers r10-r11 are reserved for the interrupt handler
+ # while the others can be used by the main loop/start code.
+
+_start:
+ # patch the DBT handler
+ add r1, r0, handler
+ ldw r2, @(r1, 0)
+ ldw r3, @(r1, 4)
+ # DBT vector address
+ add r1, r0, 0xfffff120
+ stw r2, @(r1, 0)
+ stw r3, @(r1, 4)
+
+ # try out the breakpoint/return
+ add r2, r0, 47
+ #dbt
+ nop
+ .long 0x00b00000
+ nop
+
+ # exit with what ever the breakpoint hander set r2 to.
+ nop
+ .long 0x0e000004
+ nop
+
+handler:
+ jmp real_handler
+
+ # The Breakpoint handler sets r2 to 0 if PSW was set correctly.
+real_handler:
+ mvfsys r2, cr0
+ sub r2, r0, 0x08000000
+ #rtd
+ nop
+ .long 0x00a00000
+ nop