t-dbt.s 577 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. # mach: all
  2. # output:
  3. # sim: --environment operating
  4. # as: -W
  5. .include "t-macros.i"
  6. start
  7. PSW_BITS = PSW_DM
  8. ;;; Blat our DMAP registers so that they point at on-chip imem
  9. ldi r2, MAP_INSN | 0xf
  10. st r2, @(DMAP_REG,r0)
  11. ldi r2, MAP_INSN
  12. st r2, @(IMAP1_REG,r0)
  13. ;;; Patch the interrupt vector's dbt entry with a jmp to success
  14. ldi r4, #trap
  15. ldi r5, (VEC_DBT & DMAP_MASK) + DMAP_BASE
  16. ld2w r2, @(0,r4)
  17. st2w r2, @(0,r5)
  18. ld2w r2, @(4,r4)
  19. st2w r2, @(4,r5)
  20. test_dbt:
  21. dbt -> nop
  22. exit47
  23. success:
  24. checkpsw2 1 PSW_BITS
  25. exit0
  26. .data
  27. trap: ldi r1, success@word
  28. jmp r1