Projet_SETI_RISC-V/riscv-gnu-toolchain/binutils/sim/testsuite/bfin/se_kills2.S
2023-03-06 14:48:14 +01:00

148 lines
2.2 KiB
ArmAsm

//Original:/proj/frio/dv/testcases/seq/se_kills2/se_kills2.dsp
// Description: Test se_kill for all supported types of RTL1 instructions
# mach: bfin
# sim: --environment operating
#include "test.h"
.include "testutils.inc"
start
//
// Constants and Defines
//
include(selfcheck.inc)
include(std.inc)
include(symtable.inc)
#ifndef STACKSIZE
#define STACKSIZE 0x10
#endif
//
// Reset/Bootstrap Code
// (Here we should set the processor operating modes, initialize registers,
// etc.)
//
BOOT:
SP = 0 (Z);
SP.L = KSTACK; // setup the stack pointer
SP.H = KSTACK;
FP = SP; // and frame pointer
INIT_R_REGS(0); // initialize general purpose regs
INIT_P_REGS(0); // initialize the pointers
INIT_I_REGS(0); // initialize the dsp address regs
INIT_M_REGS(0);
INIT_L_REGS(0);
INIT_B_REGS(0);
ASTAT = r0; // reset sequencer registers
//
// The Main Program
//
START:
// **** YOUR CODE GOES HERE ****
// CHECK_INIT(p0, 0xFF7FFFFC); // original
CHECK_INIT_DEF(p0);
R0 = 0;
R1 = 1;
R2 = 2;
R3 = 3;
R4 = 4;
R5 = 5;
R6 = 6;
R7 = 7;
P1 = 11;
// Assume CC is reset to 0.
IF !CC JUMP NEXT1; // following instruction should be killed
RAISE 13;
NEXT1:
IF !CC JUMP NEXT2;
EXCPT 15;
NEXT2:
IF !CC JUMP NEXT3;
( R7:0, P5:0 ) = [ SP ++ ];
NEXT3:
IF !CC JUMP NEXT4;
[ -- SP ] = ( R7:0, P5:0 );
NEXT4:
IF !CC JUMP NEXT5;
EMUEXCPT;
NEXT5:
IF !CC JUMP NEXT6;
.dd 0xFACEBABE
NEXT6:
IF !CC JUMP NEXT7;
LINK 12;
NEXT7:
IF !CC JUMP NEXT8;
UNLINK;
NEXT8:
IF !CC JUMP NEXT9;
LSETUP (NEXT10, NEXT11) lc0 = p0;
NEXT9:
IF !CC JUMP NEXT10;
NEXT10:
IF !CC JUMP NEXT11;
NEXT11:
IF !CC JUMP NEXT12;
NEXT12:
IF !CC JUMP NEXT13;
NEXT13:
IF !CC JUMP NEXT14;
NEXT14:
IF !CC JUMP NEXT15;
NEXT15:
IF !CC JUMP NEXT16;
NEXT16:
END:
CHECKREG(r0, 0);
CHECKREG(r1, 1);
CHECKREG(r2, 2);
CHECKREG(r3, 3);
CHECKREG(r4, 4);
CHECKREG(r5, 5);
CHECKREG(r6, 6);
CHECKREG(r7, 7);
dbg_pass; // Call Endtest Macro
//*********************************************************************
//
// Data Segment
//
//.data 0xF0000000
.data
DATA:
.space (0x010); // Some data space
// Stack Segments
.space (STACKSIZE);
KSTACK: