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

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gdb/] [gdb-6.8/] [sim/] [testsuite/] [sim/] [frv/] [interrupts/] [reset.cgs] - Rev 26

Compare with Previous | Blame | View Log

# frv testcase to generate reset interrupts
# mach: fr500 fr550 fr400
# sim: --memory-region 0xff000000,64

        .include "testutils.inc"

        start

        .global reset
reset:
        and_spr_immed   0xfffffffb,psr  ; turn off PSR.S
        set_gr_immed    0xfeff0500,gr10 ; address of reset register
        set_spr_immed   0x7fffffff,lcr
        set_bctrlr_0_0  gr0

; Can't recover from hardware interrupt with enough state intact to verify it
;       set_spr_addr    ok1,lr
;       set_mem_immed   0x3,gr10        ; cause hardware reset
;       dcf             @(gr10,gr0)     ; Wait for store to happen
;       fail
;
;ok1:   ; reset should branch to reset address which should then branch here
;       test_mem_immed  0x00000200,gr10
;       set_spr_addr    ok2,lr
;       set_mem_immed   0x2,gr10        ; cause hardware reset
;       dcf             @(gr10,gr0)     ; Wait for store to happen
;       fail
;       
ok2:    ; reset should branch to reset address which should then branch here
;       test_mem_immed  0x00000200,gr10
        set_spr_addr    ok3,lr
        set_mem_immed   0x1,gr10        ; cause software reset
        dcf             @(gr10,gr0)     ; Wait for store to happen
        fail
        
ok3:    ; reset should branch to reset address which should then branch here
        test_mem_immed  0x00000100,gr10
        test_spr_bits   0x4,2,1,psr     ; psr.s is set
        test_spr_bits   0x2,1,0,psr     ; psr.ps not set
        set_spr_addr    bad,lr
        set_mem_immed   0x0,gr10        ; no reset
        test_mem_immed  0x0,gr10

        ; now retest with HSR0.SA set
        set_mem_immed   0,gr0
        set_gr_addr     0xff000000,gr11
        set_bctrlr_0_0  gr11
        or_spr_immed    0x00001000,hsr0 ; set HSR0.SA

; Can't recover from hardware interrupt with enough state intact to verify it
;       set_spr_addr    ok4,lr
;       dcf             @(gr10,gr0)     ; Wait for store to happen
;       set_mem_immed   0x3,gr10        ; cause hardware reset
;       fail
;
;ok4:   ; reset should branch to reset address which should then branch here
;       test_mem_immed  0x00000200,gr10
;       set_spr_addr    ok5,lr
;       set_mem_immed   0x2,gr10        ; cause hardware reset
;       dcf             @(gr10,gr0)     ; Wait for store to happen
;       fail
;       
ok5:    ; reset should branch to reset address which should then branch here
;       test_mem_immed  0x00000200,gr10
        set_spr_addr    ok6,lr
        set_mem_immed   0x1,gr10        ; cause software reset
        dcf             @(gr10,gr0)     ; Wait for store to happen
        fail
        
ok6:    ; reset should branch to reset address which should then branch here
        test_mem_immed  0x00000100,gr10
        test_spr_bits   0x4,2,1,psr     ; psr.s is set
        test_spr_bits   0x2,1,1,psr     ; psr.ps is set
        set_spr_addr    bad,lr
        set_mem_immed   0x0,gr10        ; no reset
        test_mem_immed  0x0,gr10

        pass

bad:    ; Should never get here
        fail

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.