OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [tags/] [gdb/] [gdb-6.8/] [gdb-6.8.openrisc-2.1/] [sim/] [testsuite/] [sim/] [sh/] [testutils.inc] - Diff between revs 24 and 33

Only display areas with differences | Details | Blame | View Log

Rev 24 Rev 33
# Support macros for the sh assembly test cases.
# Support macros for the sh assembly test cases.
        .equ    no_dsp,  0
        .equ    no_dsp,  0
        .equ    yes_dsp, 1
        .equ    yes_dsp, 1
        .section        .rodata
        .section        .rodata
        .align 2
        .align 2
_pass:  .string "pass\n"
_pass:  .string "pass\n"
_fail:  .string "fail\n"
_fail:  .string "fail\n"
_stack: .fill   128, 4, 0
_stack: .fill   128, 4, 0
stackt:
stackt:
        .macro  push reg
        .macro  push reg
        mov.l   \reg, @-r15
        mov.l   \reg, @-r15
        .endm
        .endm
        .macro  pop reg
        .macro  pop reg
        mov.l   @r15+, \reg
        mov.l   @r15+, \reg
        .endm
        .endm
        .macro start
        .macro start
        .text
        .text
        .align 1
        .align 1
        .global start
        .global start
start:  mov.l   stackp, r15
start:  mov.l   stackp, r15
        bra     main
        bra     main
        nop
        nop
        .align 2
        .align 2
stackp: .long   stackt
stackp: .long   stackt
mpass:
mpass:
        mov     #4, r4
        mov     #4, r4
        mov     #1, r5
        mov     #1, r5
        mov.l   ppass, r6
        mov.l   ppass, r6
        mov     #5, r7
        mov     #5, r7
        trapa   #34
        trapa   #34
        rts
        rts
        nop
        nop
mfail:
mfail:
        mov     #4, r4
        mov     #4, r4
        mov     #1, r5
        mov     #1, r5
        mov.l   pfail, r6
        mov.l   pfail, r6
        mov     #5, r7
        mov     #5, r7
        trapa   #34
        trapa   #34
        mov     #1, r5
        mov     #1, r5
mexit:
mexit:
        mov     #1, r4
        mov     #1, r4
        mov     #0, r6
        mov     #0, r6
        mov     #0, r7
        mov     #0, r7
        trapa   #34
        trapa   #34
        .align 2
        .align 2
ppass:  .long   _pass
ppass:  .long   _pass
pfail:  .long   _fail
pfail:  .long   _fail
mtesta5:
mtesta5:
        push    r0
        push    r0
        mov.l   a5a5, r0
        mov.l   a5a5, r0
        cmp/eq  r1, r0
        cmp/eq  r1, r0
        bf      mfail
        bf      mfail
        cmp/eq  r2, r0
        cmp/eq  r2, r0
        bf      mfail
        bf      mfail
        cmp/eq  r3, r0
        cmp/eq  r3, r0
        bf      mfail
        bf      mfail
        cmp/eq  r4, r0
        cmp/eq  r4, r0
        bf      mfail
        bf      mfail
        cmp/eq  r5, r0
        cmp/eq  r5, r0
        bf      mfail
        bf      mfail
        cmp/eq  r6, r0
        cmp/eq  r6, r0
        bf      mfail
        bf      mfail
        cmp/eq  r7, r0
        cmp/eq  r7, r0
        bf      mfail
        bf      mfail
        cmp/eq  r8, r0
        cmp/eq  r8, r0
        bf      mfail
        bf      mfail
        cmp/eq  r9, r0
        cmp/eq  r9, r0
        bf      mfail
        bf      mfail
        cmp/eq  r10, r0
        cmp/eq  r10, r0
        bf      mfail
        bf      mfail
        cmp/eq  r11, r0
        cmp/eq  r11, r0
        bf      mfail
        bf      mfail
        cmp/eq  r12, r0
        cmp/eq  r12, r0
        bf      mfail
        bf      mfail
        cmp/eq  r13, r0
        cmp/eq  r13, r0
        bf      mfail
        bf      mfail
        cmp/eq  r14, r0
        cmp/eq  r14, r0
        bf      mfail
        bf      mfail
        # restore and check r0
        # restore and check r0
        pop     r0
        pop     r0
        cmp/eq  r0, r1
        cmp/eq  r0, r1
        bf      mfail
        bf      mfail
        # pass
        # pass
        rts
        rts
        nop
        nop
.if (sim_cpu == no_dsp)
.if (sim_cpu == no_dsp)
mtesta5_fp:
mtesta5_fp:
        push    r0
        push    r0
        flds    fr0, fpul
        flds    fr0, fpul
        sts     fpul, r0
        sts     fpul, r0
        push    r0
        push    r0
        mov.l   a5a5, r0
        mov.l   a5a5, r0
        lds     r0, fpul
        lds     r0, fpul
        fsts    fpul, fr0
        fsts    fpul, fr0
        fcmp/eq fr1, fr0
        fcmp/eq fr1, fr0
        bf      mfail
        bf      mfail
        fcmp/eq fr2, fr0
        fcmp/eq fr2, fr0
        bf      mfail
        bf      mfail
        fcmp/eq fr3, fr0
        fcmp/eq fr3, fr0
        bf      mfail
        bf      mfail
        fcmp/eq fr4, fr0
        fcmp/eq fr4, fr0
        bf      mfail
        bf      mfail
        fcmp/eq fr5, fr0
        fcmp/eq fr5, fr0
        bf      mfail
        bf      mfail
        fcmp/eq fr6, fr0
        fcmp/eq fr6, fr0
        bf      mfail
        bf      mfail
        fcmp/eq fr7, fr0
        fcmp/eq fr7, fr0
        bf      mfail
        bf      mfail
        fcmp/eq fr8, fr0
        fcmp/eq fr8, fr0
        bf      mfail
        bf      mfail
        fcmp/eq fr9, fr0
        fcmp/eq fr9, fr0
        bf      mfail
        bf      mfail
        fcmp/eq fr10, fr0
        fcmp/eq fr10, fr0
        bf      mfail
        bf      mfail
        fcmp/eq fr11, fr0
        fcmp/eq fr11, fr0
        bf      mfail
        bf      mfail
        fcmp/eq fr12, fr0
        fcmp/eq fr12, fr0
        bf      mfail
        bf      mfail
        fcmp/eq fr13, fr0
        fcmp/eq fr13, fr0
        bf      mfail
        bf      mfail
        fcmp/eq fr14, fr0
        fcmp/eq fr14, fr0
        bf      mfail
        bf      mfail
        fcmp/eq fr15, fr0
        fcmp/eq fr15, fr0
        bf      mfail
        bf      mfail
        # restore and check fr0
        # restore and check fr0
        pop     r0
        pop     r0
        lds     r0, fpul
        lds     r0, fpul
        fsts    fpul, fr0
        fsts    fpul, fr0
        fcmp/eq fr0, fr1
        fcmp/eq fr0, fr1
        bf      mfail
        bf      mfail
        # restore r0 and pass
        # restore r0 and pass
        pop     r0
        pop     r0
        rts
        rts
        nop
        nop
.endif
.endif
mseta5:
mseta5:
        mov.l   a5a5, r0
        mov.l   a5a5, r0
        mov.l   a5a5, r1
        mov.l   a5a5, r1
        mov.l   a5a5, r2
        mov.l   a5a5, r2
        mov.l   a5a5, r3
        mov.l   a5a5, r3
        mov.l   a5a5, r4
        mov.l   a5a5, r4
        mov.l   a5a5, r5
        mov.l   a5a5, r5
        mov.l   a5a5, r6
        mov.l   a5a5, r6
        mov.l   a5a5, r7
        mov.l   a5a5, r7
        mov.l   a5a5, r8
        mov.l   a5a5, r8
        mov.l   a5a5, r9
        mov.l   a5a5, r9
        mov.l   a5a5, r10
        mov.l   a5a5, r10
        mov.l   a5a5, r11
        mov.l   a5a5, r11
        mov.l   a5a5, r12
        mov.l   a5a5, r12
        mov.l   a5a5, r13
        mov.l   a5a5, r13
        mov.l   a5a5, r14
        mov.l   a5a5, r14
        rts
        rts
        nop
        nop
.if (sim_cpu == no_dsp)
.if (sim_cpu == no_dsp)
mseta5_fp:
mseta5_fp:
        push    r0
        push    r0
        mov.l   a5a5, r0
        mov.l   a5a5, r0
        lds     r0, fpul
        lds     r0, fpul
        fsts    fpul, fr0
        fsts    fpul, fr0
        fsts    fpul, fr1
        fsts    fpul, fr1
        fsts    fpul, fr2
        fsts    fpul, fr2
        fsts    fpul, fr3
        fsts    fpul, fr3
        fsts    fpul, fr4
        fsts    fpul, fr4
        fsts    fpul, fr5
        fsts    fpul, fr5
        fsts    fpul, fr6
        fsts    fpul, fr6
        fsts    fpul, fr7
        fsts    fpul, fr7
        fsts    fpul, fr8
        fsts    fpul, fr8
        fsts    fpul, fr9
        fsts    fpul, fr9
        fsts    fpul, fr10
        fsts    fpul, fr10
        fsts    fpul, fr11
        fsts    fpul, fr11
        fsts    fpul, fr12
        fsts    fpul, fr12
        fsts    fpul, fr13
        fsts    fpul, fr13
        fsts    fpul, fr14
        fsts    fpul, fr14
        fsts    fpul, fr15
        fsts    fpul, fr15
        pop     r0
        pop     r0
        rts
        rts
        nop
        nop
.endif
.endif
        .align 2
        .align 2
a5a5:   .long   0xa5a5a5a5
a5a5:   .long   0xa5a5a5a5
main:
main:
        .endm
        .endm
        .macro exit val
        .macro exit val
        mov     #\val, r5
        mov     #\val, r5
        bra     mexit
        bra     mexit
        nop
        nop
        .endm
        .endm
        .macro pass
        .macro pass
        bsr     mpass
        bsr     mpass
        nop
        nop
        .endm
        .endm
        .macro fail
        .macro fail
        bra     mfail
        bra     mfail
        nop
        nop
        .endm
        .endm
        # Branch if false -- 8k range
        # Branch if false -- 8k range
        .macro bf8k label
        .macro bf8k label
        bt      .Lbf8k\@
        bt      .Lbf8k\@
        bra     \label
        bra     \label
.Lbf8k\@:
.Lbf8k\@:
        .endm
        .endm
        # Branch if true -- 8k range
        # Branch if true -- 8k range
        .macro bt8k label
        .macro bt8k label
        bf      .Lbt8k\@
        bf      .Lbt8k\@
        bra     \label
        bra     \label
.Lbt8k\@:
.Lbt8k\@:
        .endm
        .endm
        # Assert value of register (any general register but r0)
        # Assert value of register (any general register but r0)
        # Preserves r0 on stack, restores it on success.
        # Preserves r0 on stack, restores it on success.
        .macro assertreg val reg
        .macro assertreg val reg
        push    r0
        push    r0
        mov.l   .Larval\@, r0
        mov.l   .Larval\@, r0
        cmp/eq  r0, \reg
        cmp/eq  r0, \reg
        bt      .Lar\@
        bt      .Lar\@
        fail
        fail
        .align 2
        .align 2
.Larval\@:
.Larval\@:
        .long   \val
        .long   \val
.Lar\@: pop     r0
.Lar\@: pop     r0
        .endm
        .endm
        # Assert value of register zero
        # Assert value of register zero
        # Preserves r1 on stack, restores it on success.
        # Preserves r1 on stack, restores it on success.
        .macro assertreg0 val
        .macro assertreg0 val
        push    r1
        push    r1
        mov.l   .Lazval\@, r1
        mov.l   .Lazval\@, r1
        cmp/eq  r1, r0
        cmp/eq  r1, r0
        bt      .Laz\@
        bt      .Laz\@
        fail
        fail
        .align 2
        .align 2
.Lazval\@:
.Lazval\@:
        .long   \val
        .long   \val
.Laz\@: pop     r1
.Laz\@: pop     r1
        .endm
        .endm
        # Assert value of system register
        # Assert value of system register
        # [mach, macl, pr, dsr, a0, x0, x1, y0, y1, ...]
        # [mach, macl, pr, dsr, a0, x0, x1, y0, y1, ...]
        .macro assert_sreg val reg
        .macro assert_sreg val reg
        push    r0
        push    r0
        sts     \reg, r0
        sts     \reg, r0
        assertreg0 \val
        assertreg0 \val
        pop     r0
        pop     r0
        .endm
        .endm
        # Assert value of system register that isn't directly stc-able
        # Assert value of system register that isn't directly stc-able
        # [a1, m0, m1, ...]
        # [a1, m0, m1, ...]
        .macro assert_sreg2 val reg
        .macro assert_sreg2 val reg
        push    r0
        push    r0
        sts     a0, r0
        sts     a0, r0
        push    r0
        push    r0
        pcopy   \reg, a0
        pcopy   \reg, a0
        sts     a0, r0
        sts     a0, r0
        assertreg0 \val
        assertreg0 \val
        pop     r0
        pop     r0
        lds     r0, a0
        lds     r0, a0
        pop     r0
        pop     r0
        .endm
        .endm
        # Assert value of control register
        # Assert value of control register
        # [gbr, vbr, ssr, spc, sgr, dbr, r[0-7]_bank, sr, mod, re, rs, ...]
        # [gbr, vbr, ssr, spc, sgr, dbr, r[0-7]_bank, sr, mod, re, rs, ...]
        .macro assert_creg val reg
        .macro assert_creg val reg
        push    r0
        push    r0
        stc     \reg, r0
        stc     \reg, r0
        assertreg0 \val
        assertreg0 \val
        pop     r0
        pop     r0
        .endm
        .endm
        # Assert integer value of fp register
        # Assert integer value of fp register
        # Preserves r0 on stack, restores it on success
        # Preserves r0 on stack, restores it on success
        # Assumes single-precision fp mode
        # Assumes single-precision fp mode
        .macro assert_fpreg_i val freg
        .macro assert_fpreg_i val freg
        push    r0
        push    r0
        ftrc    \freg, fpul
        ftrc    \freg, fpul
        sts     fpul, r0
        sts     fpul, r0
        assertreg0      \val
        assertreg0      \val
        pop     r0
        pop     r0
        .endm
        .endm
        # Assert integer value of dp register
        # Assert integer value of dp register
        # Preserves r0 on stack, restores it on success
        # Preserves r0 on stack, restores it on success
        # Assumes double-precision fp mode
        # Assumes double-precision fp mode
        .macro assert_dpreg_i val dreg
        .macro assert_dpreg_i val dreg
        push    r0
        push    r0
        ftrc    \dreg, fpul
        ftrc    \dreg, fpul
        sts     fpul, r0
        sts     fpul, r0
        assertreg0      \val
        assertreg0      \val
        pop     r0
        pop     r0
        .endm
        .endm
        # Assert hex value of fp register
        # Assert hex value of fp register
        # Preserves r0 on stack, restores it on success
        # Preserves r0 on stack, restores it on success
        # Assumes single-precision fp mode
        # Assumes single-precision fp mode
        .macro assert_fpreg_x val freg
        .macro assert_fpreg_x val freg
        push    r0
        push    r0
        flds    \freg, fpul
        flds    \freg, fpul
        sts     fpul, r0
        sts     fpul, r0
        assertreg0      \val
        assertreg0      \val
        pop     r0
        pop     r0
        .endm
        .endm
        # Set FP bank 0
        # Set FP bank 0
        # Saves and restores r0 and r1
        # Saves and restores r0 and r1
        .macro  bank0
        .macro  bank0
        push    r0
        push    r0
        push    r1
        push    r1
        mov     #32, r1
        mov     #32, r1
        shll16  r1
        shll16  r1
        not     r1, r1
        not     r1, r1
        sts     fpscr, r0
        sts     fpscr, r0
        and     r1, r0
        and     r1, r0
        lds     r0, fpscr
        lds     r0, fpscr
        pop     r1
        pop     r1
        pop     r0
        pop     r0
        .endm
        .endm
        # Set FP bank 1
        # Set FP bank 1
        .macro  bank1
        .macro  bank1
        push    r0
        push    r0
        push    r1
        push    r1
        mov     #32,  r1
        mov     #32,  r1
        shll16  r1
        shll16  r1
        sts     fpscr, r0
        sts     fpscr, r0
        or      r1, r0
        or      r1, r0
        lds     r0, fpscr
        lds     r0, fpscr
        pop     r1
        pop     r1
        pop     r0
        pop     r0
        .endm
        .endm
        # Set FP 32-bit xfer
        # Set FP 32-bit xfer
        .macro  sz_32
        .macro  sz_32
        push    r0
        push    r0
        push    r1
        push    r1
        mov     #16,  r1
        mov     #16,  r1
        shll16  r1
        shll16  r1
        not     r1, r1
        not     r1, r1
        sts     fpscr, r0
        sts     fpscr, r0
        and     r1, r0
        and     r1, r0
        lds     r0, fpscr
        lds     r0, fpscr
        pop     r1
        pop     r1
        pop     r0
        pop     r0
        .endm
        .endm
        # Set FP 64-bit xfer
        # Set FP 64-bit xfer
        .macro  sz_64
        .macro  sz_64
        push    r0
        push    r0
        push    r1
        push    r1
        mov     #16,  r1
        mov     #16,  r1
        shll16  r1
        shll16  r1
        sts     fpscr, r0
        sts     fpscr, r0
        or      r1, r0
        or      r1, r0
        lds     r0, fpscr
        lds     r0, fpscr
        pop     r1
        pop     r1
        pop     r0
        pop     r0
        .endm
        .endm
        # Set FP single precision
        # Set FP single precision
        .macro  single_prec
        .macro  single_prec
        push    r0
        push    r0
        push    r1
        push    r1
        mov     #8, r1
        mov     #8, r1
        shll16  r1
        shll16  r1
        not     r1, r1
        not     r1, r1
        sts     fpscr, r0
        sts     fpscr, r0
        and     r1, r0
        and     r1, r0
        lds     r0, fpscr
        lds     r0, fpscr
        pop     r1
        pop     r1
        pop     r0
        pop     r0
        .endm
        .endm
        # Set FP double precision
        # Set FP double precision
        .macro  double_prec
        .macro  double_prec
        push    r0
        push    r0
        push    r1
        push    r1
        mov     #8, r1
        mov     #8, r1
        shll16  r1
        shll16  r1
        sts     fpscr, r0
        sts     fpscr, r0
        or      r1, r0
        or      r1, r0
        lds     r0, fpscr
        lds     r0, fpscr
        pop     r1
        pop     r1
        pop     r0
        pop     r0
        .endm
        .endm
        .macro  set_carry
        .macro  set_carry
        sett
        sett
        .endm
        .endm
        .macro  set_ovf
        .macro  set_ovf
        sett
        sett
        .endm
        .endm
        .macro  clear_carry
        .macro  clear_carry
        clrt
        clrt
        .endm
        .endm
        .macro  clear_ovf
        .macro  clear_ovf
        clrt
        clrt
        .endm
        .endm
        # sets, clrs
        # sets, clrs
        .macro set_grs_a5a5
        .macro set_grs_a5a5
        bsr     mseta5
        bsr     mseta5
        nop
        nop
        .endm
        .endm
        .macro set_greg val greg
        .macro set_greg val greg
        mov.l   gregval\@, \greg
        mov.l   gregval\@, \greg
        bra     set_greg\@
        bra     set_greg\@
        nop
        nop
        .align  2
        .align  2
gregval\@:      .long   \val
gregval\@:      .long   \val
set_greg\@:
set_greg\@:
        .endm
        .endm
        .macro set_fprs_a5a5
        .macro set_fprs_a5a5
        bsr     mseta5_fp
        bsr     mseta5_fp
        nop
        nop
        .endm
        .endm
        .macro test_grs_a5a5
        .macro test_grs_a5a5
        bsr     mtesta5
        bsr     mtesta5
        nop
        nop
        .endm
        .endm
        .macro test_fprs_a5a5
        .macro test_fprs_a5a5
        bsr     mtesta5_fp
        bsr     mtesta5_fp
        nop
        nop
        .endm
        .endm
        .macro test_gr_a5a5 reg
        .macro test_gr_a5a5 reg
        assertreg 0xa5a5a5a5 \reg
        assertreg 0xa5a5a5a5 \reg
        .endm
        .endm
        .macro test_fpr_a5a5 reg
        .macro test_fpr_a5a5 reg
        assert_fpreg_x 0xa5a5a5a5 \reg
        assert_fpreg_x 0xa5a5a5a5 \reg
        .endm
        .endm
        .macro test_gr0_a5a5
        .macro test_gr0_a5a5
        assertreg0 0xa5a5a5a5
        assertreg0 0xa5a5a5a5
        .endm
        .endm
        # Perform a single to double precision floating point conversion.
        # Perform a single to double precision floating point conversion.
        # Assumes correct settings of fpscr.
        # Assumes correct settings of fpscr.
        .macro _s2d fpr dpr
        .macro _s2d fpr dpr
        flds \fpr, fpul
        flds \fpr, fpul
        fcnvsd fpul, \dpr
        fcnvsd fpul, \dpr
        .endm
        .endm
        # Manipulate the status register
        # Manipulate the status register
        .macro set_sr   val
        .macro set_sr   val
        push    r0
        push    r0
        mov.l   .Lsrval\@, r0
        mov.l   .Lsrval\@, r0
        ldc     r0, sr
        ldc     r0, sr
        pop     r0
        pop     r0
        bra     .Lsetsr\@
        bra     .Lsetsr\@
        nop
        nop
        .align 2
        .align 2
.Lsrval\@:
.Lsrval\@:
        .long   \val
        .long   \val
.Lsetsr\@:
.Lsetsr\@:
        .endm
        .endm
        .macro  get_sr  reg
        .macro  get_sr  reg
        stc     sr, \reg
        stc     sr, \reg
        .endm
        .endm
        .macro  test_sr val
        .macro  test_sr val
        push    r0
        push    r0
        get_sr  r0
        get_sr  r0
        assertreg0 \val
        assertreg0 \val
        pop     r0
        pop     r0
        .endm
        .endm
        .macro  set_sr_bit val
        .macro  set_sr_bit val
        push    r0
        push    r0
        push    r1
        push    r1
        get_sr  r0
        get_sr  r0
        mov.l   .Lsrbitval\@, r1
        mov.l   .Lsrbitval\@, r1
        or      r1, r0
        or      r1, r0
        ldc     r0, sr
        ldc     r0, sr
        pop     r1
        pop     r1
        pop     r0
        pop     r0
        bra     .Lsrbit\@
        bra     .Lsrbit\@
        nop
        nop
        .align 2
        .align 2
.Lsrbitval\@:
.Lsrbitval\@:
        .long   \val
        .long   \val
.Lsrbit\@:
.Lsrbit\@:
        .endm
        .endm
        .macro  test_sr_bit_set val
        .macro  test_sr_bit_set val
        push    r0
        push    r0
        push    r1
        push    r1
        get_sr  r0
        get_sr  r0
        mov.l   .Ltsbsval\@, r1
        mov.l   .Ltsbsval\@, r1
        tst     r1, r0
        tst     r1, r0
        bf      .Ltsbs\@
        bf      .Ltsbs\@
        fail
        fail
        .align  2
        .align  2
.Ltsbsval\@:
.Ltsbsval\@:
        .long   \val
        .long   \val
.Ltsbs\@:
.Ltsbs\@:
        pop     r1
        pop     r1
        pop     r0
        pop     r0
        .endm
        .endm
        .macro  test_sr_bit_clear val
        .macro  test_sr_bit_clear val
        push    r0
        push    r0
        push    r1
        push    r1
        get_sr  r0
        get_sr  r0
        mov.l   .Ltsbcval\@, r1
        mov.l   .Ltsbcval\@, r1
        not     r0, r0
        not     r0, r0
        tst     r1, r0
        tst     r1, r0
        bf      .Ltsbc\@
        bf      .Ltsbc\@
        fail
        fail
        .align  2
        .align  2
.Ltsbcval\@:
.Ltsbcval\@:
        .long   \val
        .long   \val
.Ltsbc\@:
.Ltsbc\@:
        pop     r1
        pop     r1
        pop     r0
        pop     r0
        .endm
        .endm
        # Set system registers
        # Set system registers
        .macro set_sreg val reg
        .macro set_sreg val reg
        # [mach, macl, pr, dsr, a0, x0, x1, y0, y1, ...]
        # [mach, macl, pr, dsr, a0, x0, x1, y0, y1, ...]
        push    r0
        push    r0
        mov.l   .Lssrval\@, r0
        mov.l   .Lssrval\@, r0
        lds     r0, \reg
        lds     r0, \reg
        pop     r0
        pop     r0
        bra     .Lssr\@
        bra     .Lssr\@
        nop
        nop
        .align 2
        .align 2
.Lssrval\@:
.Lssrval\@:
        .long   \val
        .long   \val
.Lssr\@:
.Lssr\@:
        .endm
        .endm
        .macro set_sreg2 val reg
        .macro set_sreg2 val reg
        # [a1, m0, m1, ...]
        # [a1, m0, m1, ...]
        push    r0
        push    r0
        sts     a0, r0
        sts     a0, r0
        push    r0
        push    r0
        mov.l   .Lssr2val\@, r0
        mov.l   .Lssr2val\@, r0
        lds     r0, a0
        lds     r0, a0
        pcopy   a0, \reg
        pcopy   a0, \reg
        pop     r0
        pop     r0
        lds     r0, a0
        lds     r0, a0
        pop     r0
        pop     r0
        bra     .Lssr2_\@
        bra     .Lssr2_\@
        nop
        nop
        .align 2
        .align 2
.Lssr2val\@:
.Lssr2val\@:
        .long   \val
        .long   \val
.Lssr2_\@:
.Lssr2_\@:
        .endm
        .endm
        .macro set_creg val reg
        .macro set_creg val reg
        # [gbr, vbr, ssr, spc, sgr, dbr... ]
        # [gbr, vbr, ssr, spc, sgr, dbr... ]
        push    r0
        push    r0
        mov.l   .Lscrval\@, r0
        mov.l   .Lscrval\@, r0
        ldc     r0, \reg
        ldc     r0, \reg
        pop     r0
        pop     r0
        bra     .Lscr\@
        bra     .Lscr\@
        nop
        nop
        .align 2
        .align 2
.Lscrval\@:
.Lscrval\@:
        .long   \val
        .long   \val
.Lscr\@:
.Lscr\@:
        .endm
        .endm
        .macro  set_dctrue
        .macro  set_dctrue
        push    r0
        push    r0
        sts     dsr, r0
        sts     dsr, r0
        or      #1, r0
        or      #1, r0
        lds     r0, dsr
        lds     r0, dsr
        pop     r0
        pop     r0
        .endm
        .endm
        .macro  set_dcfalse
        .macro  set_dcfalse
        push    r0
        push    r0
        sts     dsr, r0
        sts     dsr, r0
        not     r0, r0
        not     r0, r0
        or      #1, r0
        or      #1, r0
        not     r0, r0
        not     r0, r0
        lds     r0, dsr
        lds     r0, dsr
        pop     r0
        pop     r0
        .endm
        .endm
        .macro  assertmem addr val
        .macro  assertmem addr val
        push    r0
        push    r0
        mov.l   .Laddr\@, r0
        mov.l   .Laddr\@, r0
        mov.l   @r0, r0
        mov.l   @r0, r0
        assertreg0 \val
        assertreg0 \val
        bra     .Lam\@
        bra     .Lam\@
        nop
        nop
        .align  2
        .align  2
.Laddr\@:
.Laddr\@:
        .long   \addr
        .long   \addr
.Lam\@: pop     r0
.Lam\@: pop     r0
        .endm
        .endm
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.