Home | History | Annotate | Line # | Download | only in bfin
      1 //Original:/proj/frio/dv/testcases/debug/dbg_tr_tbuf0/dbg_tr_tbuf0.dsp
      2 # mach: bfin
      3 # sim: --environment operating
      4 
      5 #include "test.h"
      6 .include "testutils.inc"
      7 start
      8 
      9 include(std.inc)
     10 include(mmrs.inc)
     11 include(selfcheck.inc)
     12 
     13 #ifndef ITABLE
     14 #define ITABLE           0xF0000000
     15 #endif
     16 
     17 // This test embeds .text offsets, so pad our test so it lines up.
     18 .space 0x64
     19 
     20 // Boot code
     21 
     22  BOOT :
     23 INIT_R_REGS(0);                             // Initialize Dregs
     24 INIT_P_REGS(0);                             // Initialize Pregs
     25 
     26 CHECK_INIT(p5,   0x00BFFFFC);
     27 
     28 
     29 LD32(p0, EVT0);              // Setup Event Vectors and Handlers
     30 
     31 LD32_LABEL(r0, EHANDLE);    // Emulation Handler (Int0)
     32         [ P0 ++ ] = R0;
     33 
     34 LD32_LABEL(r0, RHANDLE);    // Reset Handler (Int1)
     35         [ P0 ++ ] = R0;
     36 
     37 LD32_LABEL(r0, NHANDLE);    // NMI Handler (Int2)
     38         [ P0 ++ ] = R0;
     39 
     40 LD32_LABEL(r0, XHANDLE);    // Exception Handler (Int3)
     41         [ P0 ++ ] = R0;
     42 
     43         [ P0 ++ ] = R0;                // IVT4 not used
     44 
     45 LD32_LABEL(r0, HWHANDLE);   // HW Error Handler (Int5)
     46         [ P0 ++ ] = R0;
     47 
     48 LD32_LABEL(r0, THANDLE);    // Timer Handler (Int6)
     49         [ P0 ++ ] = R0;
     50 
     51 LD32_LABEL(r0, I7HANDLE);   // IVG7 Handler
     52         [ P0 ++ ] = R0;
     53 
     54 LD32_LABEL(r0, I8HANDLE);   // IVG8 Handler
     55         [ P0 ++ ] = R0;
     56 
     57 LD32_LABEL(r0, I9HANDLE);   // IVG9 Handler
     58         [ P0 ++ ] = R0;
     59 
     60 LD32_LABEL(r0, I10HANDLE);  // IVG10 Handler
     61         [ P0 ++ ] = R0;
     62 
     63 LD32_LABEL(r0, I11HANDLE);  // IVG11 Handler
     64         [ P0 ++ ] = R0;
     65 
     66 LD32_LABEL(r0, I12HANDLE);  // IVG12 Handler
     67         [ P0 ++ ] = R0;
     68 
     69 LD32_LABEL(r0, I13HANDLE);  // IVG13 Handler
     70         [ P0 ++ ] = R0;
     71 
     72 LD32_LABEL(r0, I14HANDLE);  // IVG14 Handler
     73         [ P0 ++ ] = R0;
     74 
     75 LD32_LABEL(r0, I15HANDLE);  // IVG15 Handler
     76         [ P0 ++ ] = R0;
     77 
     78 LD32(p0, EVT_OVERRIDE);
     79         R0 = 0;
     80         [ P0 ++ ] = R0;
     81         R0 = -1;     // Change this to mask interrupts (*)
     82         [ P0 ] = R0;   // IMASK
     83 
     84 LD32_LABEL(p1, START);
     85 
     86 LD32(p0, EVT15);
     87         [ P0 ] = P1;   // IVG15 (General) handler (Int 15) load with start
     88 
     89 LD32_LABEL(r7, DUMMY);
     90 RETI = r7;
     91 RAISE 15;    // after we RTI, INT 15 should be taken
     92 
     93 NOP;        // Workaround for Bug 217
     94 RTI;
     95 NOP;
     96 NOP;
     97 NOP;
     98 DUMMY:
     99 	  NOP;
    100 NOP;
    101 NOP;
    102 NOP;
    103 
    104 
    105 
    106  START :
    107 
    108 WR_MMR(TBUFCTL, 0x00000001, p0, r0);        // Turn ON trace Buffer
    109 WR_MMR(TBUFCTL, 0x0000000b, p0, r0);        // Turn ON trace Buffer
    110                                                     //   TBUFPWR   = 1
    111                                                     //   TBUFEN    = 1
    112                                                     //   TBUFOVF   = 0
    113                                                     //   CMPLP     = 01
    114 NOP;
    115 NOP;
    116 NOP;
    117 		NOP;
    118 		NOP;
    119 		R6 = 0;
    120 		R7 = 10;
    121 
    122 JMP:
    123 	   	JUMP.S LABEL0;
    124 		NOP;
    125 		NOP;
    126 
    127 LABEL0:
    128 	 P1 = 0x0006;
    129 		JUMP (PC+P1);
    130 
    131 LABEL1:
    132 	 	 LD32(R3, 0xBADD); //<< WARNING: LINE MAY NEED MANUAL TRANSLATION >>
    133 
    134 LABEL2:
    135 	  CC = R7 == R6;
    136 		 IF CC JUMP END;
    137 		 R6 += 1;
    138 		 JUMP LABEL2;
    139 
    140 LABEL3:
    141 	  NOP;
    142 
    143 LABEL4:
    144 	  	  LD32(R4, 0xBADD); //<< WARNING: LINE MAY NEED MANUAL TRANSLATION >>
    145 
    146 
    147 
    148 
    149 END:
    150         R0 = 1;
    151 	    NOP;
    152 	    NOP;
    153 		NOP;
    154 
    155 CHECKREG(r3,    0x00000000);
    156 CHECKREG(r4,    0x00000000);
    157         // Read the contents of the Trace Buffer
    158 
    159 RD_MMR(TBUFSTAT, p0, r0);
    160 CHECKREG(r0,    0x00000004);
    161 
    162         // Read last entry of the Trace Buffer
    163 RD_MMR(TBUF,    p0,     r1);
    164 CHECKREG(r1,    0x00000256);
    165 
    166 RD_MMR(TBUF,    p0,     r2);
    167 CHECKREG(r2,    0x00000246);
    168 
    169 RD_MMR(TBUFSTAT, p0, r0);
    170 CHECKREG(r0,    0x00000003);
    171 
    172         // Read last entry of the Trace Buffer
    173 RD_MMR(TBUF,    p0,     r1);
    174 CHECKREG(r1,    0x00000245);
    175 
    176 RD_MMR(TBUF,    p0,     r2);
    177 CHECKREG(r2,    0x0000024a);
    178 
    179 RD_MMR(TBUFSTAT, p0, r0);
    180 CHECKREG(r0,    0x00000002);
    181 
    182         // Read last entry of the Trace Buffer
    183 RD_MMR(TBUF,    p0,     r1);
    184 CHECKREG(r1,    0x00000240);
    185 
    186 RD_MMR(TBUF,    p0,     r2);
    187 CHECKREG(r2,    0x0000023a);
    188 
    189 RD_MMR(TBUFSTAT, p0, r0);
    190 CHECKREG(r0,    0x00000001);
    191 
    192         // Read last entry of the Trace Buffer
    193 RD_MMR(TBUF,    p0,     r1);
    194 CHECKREG(r1,    0x00000238);
    195 
    196 RD_MMR(TBUF,    p0,     r2);
    197 CHECKREG(r2,    0x00000232);
    198 
    199 
    200 
    201 NOP;
    202 NOP;
    203 NOP;
    204 NOP;
    205 NOP;
    206 NOP;
    207 dbg_pass;        // Call Endtest Macro
    208 
    209 
    210 
    211 //*********************************************************************
    212 //
    213 // Handlers for Events
    214 //
    215 
    216 EHANDLE:            // Emulation Handler 0
    217 RTE;
    218 
    219 RHANDLE:            // Reset Handler 1
    220 RTI;
    221 
    222 NHANDLE:            // NMI Handler 2
    223 RTN;
    224 
    225 XHANDLE:            // Exception Handler 3
    226 
    227 RTX;
    228 	NOP;NOP;NOP;NOP;NOP;
    229 	NOP;NOP;NOP;NOP;NOP;
    230 
    231 HWHANDLE:           // HW Error Handler 5
    232 RTI;
    233 
    234 THANDLE:            // Timer Handler 6
    235 RTI;
    236 
    237 I7HANDLE:           // IVG 7 Handler
    238 RTI;
    239 
    240 I8HANDLE:           // IVG 8 Handler
    241 RTI;
    242 
    243 I9HANDLE:           // IVG 9 Handler
    244 RTI;
    245 
    246 I10HANDLE:          // IVG 10 Handler
    247 RTI;
    248 
    249 I11HANDLE:          // IVG 11 Handler
    250 RTI;
    251 
    252 I12HANDLE:          // IVG 12 Handler
    253 RTI;
    254 
    255 I13HANDLE:          // IVG 13 Handler
    256 RTI;
    257 
    258 I14HANDLE:          // IVG 14 Handler
    259 RTI;
    260 
    261 I15HANDLE:          // IVG 15 Handler
    262 RTI;
    263