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
209 # Assert value of register (any general register but r0)
210 # Preserves r0 on stack, restores it on success.
211 .macro assertreg val reg
223 # Assert value of register zero
224 # Preserves r1 on stack, restores it on success.
225 .macro assertreg0 val
237 # Assert value of system register
238 # [mach, macl, pr, dsr, a0, x0, x1, y0, y1, ...]
239 .macro assert_sreg val reg
246 # Assert value of system register that isn't directly stc-able
248 .macro assert_sreg2 val reg
260 # Assert value of control register
261 # [gbr, vbr, ssr, spc, sgr, dbr, r[0-7]_bank, sr, mod, re, rs, ...]
262 .macro assert_creg val reg
269 # Assert integer value of fp register
270 # Preserves r0 on stack, restores it on success
271 # Assumes single-precision fp mode
272 .macro assert_fpreg_i val freg
280 # Assert integer value of dp register
281 # Preserves r0 on stack, restores it on success
282 # Assumes double-precision fp mode
283 .macro assert_dpreg_i val dreg
291 # Assert hex value of fp register
292 # Preserves r0 on stack, restores it on success
293 # Assumes single-precision fp mode
294 .macro assert_fpreg_x val freg
303 # Saves and restores r0 and r1
357 # Set FP single precision
371 # Set FP double precision
408 .macro set_greg val greg
409 mov.l gregval\@, \greg
413 gregval\@: .long \val
427 .macro test_fprs_a5a5
432 .macro test_gr_a5a5 reg
433 assertreg 0xa5a5a5a5 \reg
436 .macro test_fpr_a5a5 reg
437 assert_fpreg_x 0xa5a5a5a5 \reg
441 assertreg0 0xa5a5a5a5
444 # Perform a single to double precision floating point conversion.
445 # Assumes correct settings of fpscr.
451 # Manipulate the status register
476 .macro set_sr_bit val
480 mov.l .Lsrbitval\@, r1
493 .macro test_sr_bit_set val
497 mov.l .Ltsbsval\@, r1
509 .macro test_sr_bit_clear val
513 mov.l .Ltsbcval\@, r1
526 # Set system registers
527 .macro set_sreg val reg
528 # [mach, macl, pr, dsr, a0, x0, x1, y0, y1, ...]
541 .macro set_sreg2 val reg
546 mov.l .Lssr2val\@, r0
561 .macro set_creg val reg
562 # [gbr, vbr, ssr, spc, sgr, dbr... ]