| .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 |