commitfa.cgs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. # frv testcase for commitfa
  2. # mach: frv
  3. .include "testutils.inc"
  4. start
  5. .global commitfa
  6. commitfa:
  7. and_spr_immed -4081,tbr ; clear tbr.tt
  8. set_gr_spr tbr,gr17
  9. inc_gr_immed 0x190,gr17 ; address of exception handler
  10. set_bctrlr_0_0 gr17
  11. set_spr_immed 128,lcr
  12. set_psr_et 1
  13. set_gr_immed 0,gr15
  14. nldfi @(sp,0),fr20 ; Activate fr20 with nesr.fr==1
  15. nldi @(sp,0),gr20 ; Activate gr20 with nesr.fr==0
  16. nldfi @(sp,0),fr52 ; Activate fr52 with nesr.fr==1
  17. set_spr_immed 0x00000000,fner1
  18. set_spr_immed 0x00000000,fner0
  19. set_spr_addr bad,lr
  20. commitfa ; should be nop
  21. test_spr_immed 0x00000000,fner1
  22. test_spr_immed 0x00000000,fner0
  23. test_spr_immed 0xd4800001,nesr0
  24. test_spr_gr neear0,sp
  25. test_spr_immed 0x94800401,nesr1
  26. test_spr_gr neear1,sp
  27. test_spr_immed 0xf4800801,nesr2
  28. test_spr_gr neear2,sp
  29. or_spr_immed 0x00100000,fner1
  30. or_spr_immed 0x00200000,fner1
  31. or_spr_immed 0x00100000,fner0
  32. set_spr_addr ok,lr
  33. set_gr_addr com1,gr16
  34. com1: commitfa
  35. test_gr_immed 1,gr15
  36. pass
  37. ok: test_spr_immed 0x1,esfr1 ; esr0 is active
  38. test_spr_gr epcr0,gr16
  39. test_spr_bits 0x0001,0,0x1,esr0 ; esr0 is valid
  40. test_spr_bits 0x003e,1,0x14,esr0 ; esr0.ec is set
  41. test_spr_bits 0x0800,11,0x0,esr0 ; esr0.eav is clear
  42. test_spr_bits 0x01000,12,0x0,esr0 ; esr0.edv is clear
  43. test_spr_immed 0x00000000,fner1
  44. test_spr_immed 0x00000000,fner0
  45. test_spr_immed 0,nesr0
  46. test_spr_immed 0,neear0
  47. test_spr_immed 0x94800401,nesr1
  48. test_spr_gr neear1,sp
  49. test_spr_immed 0,nesr2
  50. test_spr_immed 0,neear2
  51. inc_gr_immed 1,gr15
  52. rett 0
  53. bad: fail