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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gdb-6.8/] [sim/] [testsuite/] [sim/] [frv/] [interrupts/] [compound-fr550.cgs] - Rev 856

Go to most recent revision | Compare with Previous | Blame | View Log

# frv testcase to generate compound exception
# mach: fr550
        .include "testutils.inc"

        start

        .global align
align:
        and_spr_immed   -4081,tbr               ; clear tbr.tt
        set_gr_spr      tbr,gr17
        inc_gr_immed    0x200,gr17              ; address of exception handler
        set_bctrlr_0_0  gr17
        set_spr_immed   128,lcr
        set_spr_addr    ok1,lr
        or_spr_immed    0x04000000,fsr0         ; enabled div/0 fp_exception
        set_psr_et      1

        set_gr_immed    0,gr15
        set_fr_iimmed   0x7f7f,0xffff,fr0
        set_fr_iimmed   0x0000,0x0000,fr1

        and_spr_immed   0xfffffffe,isr          ; enable mem_address_not_aligned
        set_gr_addr     dividef,gr16
        set_gr_addr     dividei,gr17
        set_gr_immed    0xdeadbeef,gr8
        inc_gr_immed    2,sp                    ; misalign
store:  sti.p           gr8,@(sp,0)             ; misaligned - no exception
dividef:fdivs.p         fr0,fr1,fr2             ; fp_exception
dividei:sdiv            gr1,gr0,gr1             ; division exception
        test_gr_immed   1,gr15

        pass

; exception handler
ok1:
        ; check fp_exception
        test_spr_immed  0x5,esfr1               ; esr2 and esr0 are active
        test_spr_gr     epcr2,gr16
        test_spr_bits   0x0001,0,0x1,esr2       ; esr2 is valid
        test_spr_bits   0x003e,1,0xd,esr2       ; esr2.ec is set
        test_spr_bits   0x0800,11,0x0,esr2      ; esr2.eav is clear

        ; check on fp_exception
        test_spr_bits   0x100000,20,0x0,fsr0    ; fsr0.qne is clear
        test_spr_bits   0xe0000,17,0x1,fsr0     ; fsr0.ftt is set
        test_spr_bits   0xfc00,10,0x0,fsr0      ; fsr0.aexc is clear

        ; check interrupt on dividei
        test_spr_bits   0x0001,0,0x1,esr0       ; esr0 is valid
        test_spr_bits   0x003e,1,0x13,esr0      ; esr0.ec is set

        inc_gr_immed    1,gr15
        rett            0
        fail

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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