diff options
Diffstat (limited to 'sim/testsuite/d30v-elf/os-dbt.S')
-rw-r--r-- | sim/testsuite/d30v-elf/os-dbt.S | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/sim/testsuite/d30v-elf/os-dbt.S b/sim/testsuite/d30v-elf/os-dbt.S new file mode 100644 index 0000000..3468867 --- /dev/null +++ b/sim/testsuite/d30v-elf/os-dbt.S @@ -0,0 +1,38 @@ + .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 |