trp.s 420 B

123456789101112131415161718192021222324252627282930313233343536
  1. .global trp, write
  2. trp:
  3. set trpim, %o1
  4. ld [%o1], %o2
  5. srl %o2, %o0, %o1
  6. andcc %o2, 1, %g0
  7. bz 2f
  8. nop
  9. retl
  10. nop
  11. 2:
  12. set trppc, %o2
  13. ld [%o2], %o1
  14. tst %o1
  15. bz 1f
  16. nop
  17. st %g0,[%o2]
  18. dec 4, %l0
  19. st %o0, [%l0]
  20. jmp %o1
  21. nop
  22. 1:
  23. save %sp, -64, %sp
  24. set 2, %o0
  25. set message, %o1
  26. set message_high-message, %o2
  27. call write
  28. nop
  29. restore
  30. ta 2
  31. st %g0, [%g0]
  32. message:
  33. .ascii "the error code is in %o0\n"
  34. message_high: