| # Blackfin testcase for USP handling |
| # mach: bfin |
| # sim: --environment operating |
| |
| #include "test.h" |
| .include "testutils.inc" |
| |
| start |
| |
| imm32 R5, 0x44455566 |
| imm32 R6, 0x12345678 |
| imm32 R7, 0x9abcdef0 |
| |
| imm32 p0, EVT3; |
| loadsym r0, exception; |
| [p0] = r0; |
| |
| loadsym r0, usermode; |
| reti = r0; |
| |
| SP = R6; |
| USP = R7; |
| RTI; |
| |
| usermode: |
| # SP should now be USP |
| R1 = SP; |
| CC = R1 == R7; |
| IF !CC JUMP fail; |
| |
| # Now set SP to another value |
| SP = R5; |
| |
| # Move up to exception space |
| EXCPT 0; |
| |
| exception: |
| # SP should be the same as original, but USP should change |
| R1 = SP; |
| CC = R1 == R6; |
| IF !CC JUMP fail; |
| |
| R1 = USP; |
| CC = R1 == R5; |
| IF !CC JUMP fail; |
| |
| dbg_pass |
| |
| fail: |
| dbg_fail |