1 # Support macros for the sh assembly test cases.
8 _pass: .string "pass\n"
9 _fail: .string "fail\n"
10 _stack: .fill 128, 4, 0
25 start: mov.l stackp, r15
85 # restore and check r0
92 .if (sim_cpu == no_dsp)
131 # restore and check fr0
137 # restore r0 and pass
162 .if (sim_cpu == no_dsp)
189 a5a5: .long 0xa5a5a5a5
208 # Branch if false -- 8k range
215 # Branch if true -- 8k range
222 # Assert value of register (any general register but r0)
223 # Preserves r0 on stack, restores it on success.
224 .macro assertreg val reg
236 # Assert value of register zero
237 # Preserves r1 on stack, restores it on success.
238 .macro assertreg0 val
250 # Assert value of system register
251 # [mach, macl, pr, dsr, a0, x0, x1, y0, y1, ...]
252 .macro assert_sreg val reg
259 # Assert value of system register that isn't directly stc-able
261 .macro assert_sreg2 val reg
273 # Assert value of control register
274 # [gbr, vbr, ssr, spc, sgr, dbr, r[0-7]_bank, sr, mod, re, rs, ...]
275 .macro assert_creg val reg
282 # Assert integer value of fp register
283 # Preserves r0 on stack, restores it on success
284 # Assumes single-precision fp mode
285 .macro assert_fpreg_i val freg
293 # Assert integer value of dp register
294 # Preserves r0 on stack, restores it on success
295 # Assumes double-precision fp mode
296 .macro assert_dpreg_i val dreg
304 # Assert hex value of fp register
305 # Preserves r0 on stack, restores it on success
306 # Assumes single-precision fp mode
307 .macro assert_fpreg_x val freg
316 # Saves and restores r0 and r1
370 # Set FP single precision
384 # Set FP double precision
421 .macro set_greg val greg
422 mov.l gregval\@, \greg
426 gregval\@: .long \val
440 .macro test_fprs_a5a5
445 .macro test_gr_a5a5 reg
446 assertreg 0xa5a5a5a5 \reg
449 .macro test_fpr_a5a5 reg
450 assert_fpreg_x 0xa5a5a5a5 \reg
454 assertreg0 0xa5a5a5a5
457 # Perform a single to double precision floating point conversion.
458 # Assumes correct settings of fpscr.
464 # Manipulate the status register
489 .macro set_sr_bit val
493 mov.l .Lsrbitval\@, r1
506 .macro test_sr_bit_set val
510 mov.l .Ltsbsval\@, r1
522 .macro test_sr_bit_clear val
526 mov.l .Ltsbcval\@, r1
539 # Set system registers
540 .macro set_sreg val reg
541 # [mach, macl, pr, dsr, a0, x0, x1, y0, y1, ...]
554 .macro set_sreg2 val reg
559 mov.l .Lssr2val\@, r0
574 .macro set_creg val reg
575 # [gbr, vbr, ssr, spc, sgr, dbr... ]
606 .macro assertmem addr val