se_popkill.S 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566
  1. //Original:/proj/frio/dv/testcases/seq/se_popkill/se_popkill.dsp
  2. // Description: Kill pops to sysregs in WB
  3. # mach: bfin
  4. # sim: --environment operating
  5. #include "test.h"
  6. .include "testutils.inc"
  7. start
  8. /////////////////////////////////////////////////////////////////////////////
  9. ///////////////////////// Include Files /////////////////////////////
  10. /////////////////////////////////////////////////////////////////////////////
  11. include(std.inc)
  12. include(selfcheck.inc)
  13. include(symtable.inc)
  14. /////////////////////////////////////////////////////////////////////////////
  15. ///////////////////////// Defines /////////////////////////////
  16. /////////////////////////////////////////////////////////////////////////////
  17. #ifndef USER_CODE_SPACE
  18. #define USER_CODE_SPACE CODE_ADDR_RST_1 //
  19. #endif
  20. #ifndef STACKSIZE
  21. #define STACKSIZE 0x00000010
  22. #endif
  23. #ifndef ITABLE
  24. #define ITABLE CODE_ADDR_RST_2 //
  25. #endif
  26. #ifndef EVT
  27. #define EVT 0xFFE02000
  28. #endif
  29. #ifndef EVT_OVERRIDE
  30. #define EVT_OVERRIDE 0xFFE02100
  31. #endif
  32. #ifndef IMASK
  33. #define IMASK 0xFFE02104
  34. #endif
  35. #ifndef DMEM_CONTROL
  36. #define DMEM_CONTROL 0xFFE00004
  37. #endif
  38. #ifndef DCPLB_ADDR0
  39. #define DCPLB_ADDR0 0xFFE00100
  40. #endif
  41. #ifndef DCPLB_DATA0
  42. #define DCPLB_DATA0 0xFFE00200
  43. #endif
  44. /////////////////////////////////////////////////////////////////////////////
  45. ///////////////////////// RESET ISR /////////////////////////////
  46. /////////////////////////////////////////////////////////////////////////////
  47. RST_ISR :
  48. // Initialize Dregs
  49. INIT_R_REGS(0);
  50. // Initialize Pregs
  51. INIT_P_REGS(0);
  52. // Initialize ILBM Registers
  53. INIT_I_REGS(0);
  54. INIT_M_REGS(0);
  55. INIT_L_REGS(0);
  56. INIT_B_REGS(0);
  57. // Initialize the Address of the Checkreg data segment
  58. // **** THIS IS NEEDED WHENEVER CHECKREG IS USED ****
  59. CHECK_INIT_DEF(p5); //CHECK_INIT(p5, 0x00BFFFFC);
  60. // Setup User Stack
  61. LD32_LABEL(sp, USTACK);
  62. USP = SP;
  63. // Setup Kernel Stack
  64. LD32_LABEL(sp, KSTACK);
  65. // Setup Frame Pointer
  66. FP = SP;
  67. // Setup Event Vector Table
  68. LD32(p0, EVT);
  69. LD32_LABEL(r0, EMU_ISR); // Emulation Handler (Int0)
  70. [ P0 ++ ] = R0;
  71. LD32_LABEL(r0, RST_ISR); // Reset Handler (Int1)
  72. [ P0 ++ ] = R0;
  73. LD32_LABEL(r0, NMI_ISR); // NMI Handler (Int2)
  74. [ P0 ++ ] = R0;
  75. LD32_LABEL(r0, EXC_ISR); // Exception Handler (Int3)
  76. [ P0 ++ ] = R0;
  77. [ P0 ++ ] = R0; // IVT4 not used
  78. LD32_LABEL(r0, HWE_ISR); // HW Error Handler (Int5)
  79. [ P0 ++ ] = R0;
  80. LD32_LABEL(r0, TMR_ISR); // Timer Handler (Int6)
  81. [ P0 ++ ] = R0;
  82. LD32_LABEL(r0, IGV7_ISR); // IVG7 Handler
  83. [ P0 ++ ] = R0;
  84. LD32_LABEL(r0, IGV8_ISR); // IVG8 Handler
  85. [ P0 ++ ] = R0;
  86. LD32_LABEL(r0, IGV9_ISR); // IVG9 Handler
  87. [ P0 ++ ] = R0;
  88. LD32_LABEL(r0, IGV10_ISR); // IVG10 Handler
  89. [ P0 ++ ] = R0;
  90. LD32_LABEL(r0, IGV11_ISR); // IVG11 Handler
  91. [ P0 ++ ] = R0;
  92. LD32_LABEL(r0, IGV12_ISR); // IVG12 Handler
  93. [ P0 ++ ] = R0;
  94. LD32_LABEL(r0, IGV13_ISR); // IVG13 Handler
  95. [ P0 ++ ] = R0;
  96. LD32_LABEL(r0, IGV14_ISR); // IVG14 Handler
  97. [ P0 ++ ] = R0;
  98. LD32_LABEL(r0, IGV15_ISR); // IVG15 Handler
  99. [ P0 ++ ] = R0;
  100. // Setup the EVT_OVERRIDE MMR
  101. R0 = 0;
  102. LD32(p0, EVT_OVERRIDE);
  103. [ P0 ] = R0;
  104. // Setup Interrupt Mask
  105. R0 = -1;
  106. LD32(p0, IMASK);
  107. [ P0 ] = R0;
  108. /////////////////////////////////////////////////////////////////////////////
  109. //////////////////////// CPLB Setup /////////////////////////////////////
  110. /////////////////////////////////////////////////////////////////////////////
  111. // Setup CPLB for Data Memory starting at 0x00F0_0000;
  112. WR_MMR(DCPLB_DATA0, DATA_ADDR_1, p0, r0);
  113. //WR_MMR(DCPLB_DATA0, 0x00031005, p0, r0); // Page Size = 4MB
  114. // CPLB_L1_CHLB = 1
  115. // CPLB_USER_RD = 1
  116. // CPLB_VALID = 1
  117. //
  118. // Setup CPLB Address to point to 0x00F0_0000
  119. WR_MMR(DCPLB_ADDR0, DATA_ADDR_2, p0, r0);
  120. //WR_MMR(DCPLB_ADDR0, 0x00F00000, p0, r0);
  121. // Enable CPLB's
  122. WR_MMR(DMEM_CONTROL, DATA_ADDR_3, p0, r0);
  123. //WR_MMR(DMEM_CONTROL, 0x0000000f, p0, r0); // ENDM = 1
  124. // ENDCPLB = 1
  125. // DMC = 11
  126. // Sync it!
  127. CSYNC;
  128. // Return to Supervisor Code
  129. RAISE 15;
  130. LD32_LABEL(r0, USER_CODE);
  131. RETI = R0;
  132. RTI;
  133. .dw 0xFFFF
  134. .dw 0xFFFF
  135. .dw 0xFFFF
  136. .dw 0xFFFF
  137. .dw 0xFFFF
  138. .dw 0xFFFF
  139. .dw 0xFFFF
  140. /////////////////////////////////////////////////////////////////////////////
  141. /////////////////////////////////////////////////////////////////////////////
  142. ///////////////////////// EMU ISR /////////////////////////////
  143. /////////////////////////////////////////////////////////////////////////////
  144. EMU_ISR :
  145. RTE;
  146. .dw 0xFFFF
  147. .dw 0xFFFF
  148. .dw 0xFFFF
  149. .dw 0xFFFF
  150. .dw 0xFFFF
  151. .dw 0xFFFF
  152. .dw 0xFFFF
  153. /////////////////////////////////////////////////////////////////////////////
  154. ///////////////////////// NMI ISR /////////////////////////////
  155. /////////////////////////////////////////////////////////////////////////////
  156. NMI_ISR :
  157. RTN;
  158. .dw 0xFFFF
  159. .dw 0xFFFF
  160. .dw 0xFFFF
  161. .dw 0xFFFF
  162. .dw 0xFFFF
  163. .dw 0xFFFF
  164. .dw 0xFFFF
  165. /////////////////////////////////////////////////////////////////////////////
  166. ///////////////////////// EXC ISR /////////////////////////////
  167. /////////////////////////////////////////////////////////////////////////////
  168. EXC_ISR :
  169. R3 = SEQSTAT;
  170. R4 = RETX;
  171. R4 += 8;
  172. RETX = R4;
  173. RTX;
  174. .dw 0xFFFF
  175. .dw 0xFFFF
  176. .dw 0xFFFF
  177. .dw 0xFFFF
  178. .dw 0xFFFF
  179. .dw 0xFFFF
  180. .dw 0xFFFF
  181. /////////////////////////////////////////////////////////////////////////////
  182. ///////////////////////// HWE ISR /////////////////////////////
  183. /////////////////////////////////////////////////////////////////////////////
  184. HWE_ISR :
  185. RTI;
  186. .dw 0xFFFF
  187. .dw 0xFFFF
  188. .dw 0xFFFF
  189. .dw 0xFFFF
  190. .dw 0xFFFF
  191. .dw 0xFFFF
  192. .dw 0xFFFF
  193. /////////////////////////////////////////////////////////////////////////////
  194. ///////////////////////// TMR ISR /////////////////////////////
  195. /////////////////////////////////////////////////////////////////////////////
  196. TMR_ISR :
  197. RTI;
  198. .dw 0xFFFF
  199. .dw 0xFFFF
  200. .dw 0xFFFF
  201. .dw 0xFFFF
  202. .dw 0xFFFF
  203. .dw 0xFFFF
  204. .dw 0xFFFF
  205. /////////////////////////////////////////////////////////////////////////////
  206. ///////////////////////// IGV7 ISR /////////////////////////////
  207. /////////////////////////////////////////////////////////////////////////////
  208. IGV7_ISR :
  209. RTI;
  210. .dw 0xFFFF
  211. .dw 0xFFFF
  212. .dw 0xFFFF
  213. .dw 0xFFFF
  214. .dw 0xFFFF
  215. .dw 0xFFFF
  216. .dw 0xFFFF
  217. /////////////////////////////////////////////////////////////////////////////
  218. ///////////////////////// IGV8 ISR /////////////////////////////
  219. /////////////////////////////////////////////////////////////////////////////
  220. IGV8_ISR :
  221. RTI;
  222. .dw 0xFFFF
  223. .dw 0xFFFF
  224. .dw 0xFFFF
  225. .dw 0xFFFF
  226. .dw 0xFFFF
  227. .dw 0xFFFF
  228. .dw 0xFFFF
  229. /////////////////////////////////////////////////////////////////////////////
  230. ///////////////////////// IGV9 ISR /////////////////////////////
  231. /////////////////////////////////////////////////////////////////////////////
  232. IGV9_ISR :
  233. RTI;
  234. .dw 0xFFFF
  235. .dw 0xFFFF
  236. .dw 0xFFFF
  237. .dw 0xFFFF
  238. .dw 0xFFFF
  239. .dw 0xFFFF
  240. .dw 0xFFFF
  241. /////////////////////////////////////////////////////////////////////////////
  242. ///////////////////////// IGV10 ISR /////////////////////////////
  243. /////////////////////////////////////////////////////////////////////////////
  244. IGV10_ISR :
  245. RTI;
  246. .dw 0xFFFF
  247. .dw 0xFFFF
  248. .dw 0xFFFF
  249. .dw 0xFFFF
  250. .dw 0xFFFF
  251. .dw 0xFFFF
  252. .dw 0xFFFF
  253. /////////////////////////////////////////////////////////////////////////////
  254. ///////////////////////// IGV11 ISR /////////////////////////////
  255. /////////////////////////////////////////////////////////////////////////////
  256. IGV11_ISR :
  257. RTI;
  258. .dw 0xFFFF
  259. .dw 0xFFFF
  260. .dw 0xFFFF
  261. .dw 0xFFFF
  262. .dw 0xFFFF
  263. .dw 0xFFFF
  264. .dw 0xFFFF
  265. /////////////////////////////////////////////////////////////////////////////
  266. ///////////////////////// IGV12 ISR /////////////////////////////
  267. /////////////////////////////////////////////////////////////////////////////
  268. IGV12_ISR :
  269. RTI;
  270. .dw 0xFFFF
  271. .dw 0xFFFF
  272. .dw 0xFFFF
  273. .dw 0xFFFF
  274. .dw 0xFFFF
  275. .dw 0xFFFF
  276. .dw 0xFFFF
  277. /////////////////////////////////////////////////////////////////////////////
  278. ///////////////////////// IGV13 ISR /////////////////////////////
  279. /////////////////////////////////////////////////////////////////////////////
  280. IGV13_ISR :
  281. RTI;
  282. .dw 0xFFFF
  283. .dw 0xFFFF
  284. .dw 0xFFFF
  285. .dw 0xFFFF
  286. .dw 0xFFFF
  287. .dw 0xFFFF
  288. .dw 0xFFFF
  289. /////////////////////////////////////////////////////////////////////////////
  290. ///////////////////////// IGV14 ISR /////////////////////////////
  291. /////////////////////////////////////////////////////////////////////////////
  292. IGV14_ISR :
  293. RTI;
  294. .dw 0xFFFF
  295. .dw 0xFFFF
  296. .dw 0xFFFF
  297. .dw 0xFFFF
  298. .dw 0xFFFF
  299. .dw 0xFFFF
  300. .dw 0xFFFF
  301. /////////////////////////////////////////////////////////////////////////////
  302. ///////////////////////// IGV15 ISR /////////////////////////////
  303. /////////////////////////////////////////////////////////////////////////////
  304. IGV15_ISR :
  305. NOP;
  306. ASTAT = R7;
  307. RETS = R7;
  308. LC0 = R7;
  309. LB0 = R7;
  310. LT0 = R7;
  311. LC1 = R7;
  312. LB1 = R7;
  313. LT1 = R7;
  314. CYCLES = R7;
  315. CYCLES2 = R7;
  316. SYSCFG = R7;
  317. RETN = R7;
  318. RETX = R7;
  319. RETE = R7;
  320. NOP;
  321. NOP;
  322. NOP;
  323. NOP;
  324. NOP;
  325. NOP;
  326. NOP;
  327. NOP;
  328. EXCPT 1;
  329. ASTAT = [ SP ++ ];
  330. NOP;
  331. NOP;
  332. NOP;
  333. NOP;
  334. EXCPT 2;
  335. RETS = [ SP ++ ];
  336. NOP;
  337. NOP;
  338. NOP;
  339. NOP;
  340. EXCPT 3;
  341. LC0 = [ SP ++ ];
  342. NOP;
  343. NOP;
  344. NOP;
  345. NOP;
  346. EXCPT 4;
  347. LT0 = [ SP ++ ];
  348. NOP;
  349. NOP;
  350. NOP;
  351. NOP;
  352. EXCPT 5;
  353. LB0 = [ SP ++ ];
  354. NOP;
  355. NOP;
  356. NOP;
  357. NOP;
  358. EXCPT 6;
  359. LC1 = [ SP ++ ];
  360. NOP;
  361. NOP;
  362. NOP;
  363. NOP;
  364. EXCPT 7;
  365. LB1 = [ SP ++ ];
  366. NOP;
  367. NOP;
  368. NOP;
  369. NOP;
  370. EXCPT 8;
  371. LT1 = [ SP ++ ];
  372. NOP;
  373. NOP;
  374. NOP;
  375. NOP;
  376. EXCPT 9;
  377. CYCLES = [ SP ++ ];
  378. NOP;
  379. NOP;
  380. NOP;
  381. NOP;
  382. EXCPT 10;
  383. CYCLES2 = [ SP ++ ];
  384. NOP;
  385. NOP;
  386. NOP;
  387. NOP;
  388. EXCPT 11;
  389. SYSCFG = [ SP ++ ];
  390. NOP;
  391. NOP;
  392. NOP;
  393. NOP;
  394. EXCPT 12;
  395. RETI = [ SP ++ ];
  396. NOP;
  397. NOP;
  398. NOP;
  399. NOP;
  400. EXCPT 13;
  401. RETX = [ SP ++ ];
  402. NOP;
  403. NOP;
  404. NOP;
  405. NOP;
  406. EXCPT 14;
  407. RETN = [ SP ++ ];
  408. NOP;
  409. NOP;
  410. NOP;
  411. NOP;
  412. EXCPT 15;
  413. RETE = [ SP ++ ];
  414. NOP;
  415. NOP;
  416. NOP;
  417. NOP;
  418. NOP;
  419. NOP;
  420. NOP;
  421. NOP;
  422. RTI;
  423. .dw 0xFFFF
  424. .dw 0xFFFF
  425. .dw 0xFFFF
  426. .dw 0xFFFF
  427. .dw 0xFFFF
  428. .dw 0xFFFF
  429. .dw 0xFFFF
  430. /////////////////////////////////////////////////////////////////////////////
  431. ///////////////////////// USER CODE /////////////////////////////
  432. /////////////////////////////////////////////////////////////////////////////
  433. USER_CODE :
  434. NOP;
  435. NOP;
  436. NOP;
  437. NOP;
  438. dbg_pass; // Call Endtest Macro
  439. /////////////////////////////////////////////////////////////////////////////
  440. ///////////////////////// DATA MEMRORY /////////////////////////////
  441. /////////////////////////////////////////////////////////////////////////////
  442. // Define Kernal Stack
  443. .section MEM_DATA_ADDR_1 //.data 0x00F00100,"aw"
  444. .space (STACKSIZE);
  445. KSTACK :
  446. .space (STACKSIZE);
  447. USTACK :
  448. .section MEM_DATA_ADDR_2 //.data 0x00F00100,"aw"
  449. .dd 0xdeadbeef;
  450. .dd 0xdeadbeef;
  451. .dd 0xdeadbeef;
  452. .dd 0xdeadbeef;
  453. .dd 0xdeadbeef;
  454. .dd 0xdeadbeef;
  455. .dd 0xdeadbeef;
  456. .dd 0xdeadbeef;
  457. .dd 0xdeadbeef;
  458. .dd 0xdeadbeef;
  459. .dd 0xdeadbeef;
  460. .dd 0xdeadbeef;
  461. .dd 0xdeadbeef;
  462. .dd 0xdeadbeef;
  463. .dd 0xdeadbeef;
  464. .dd 0xdeadbeef;
  465. .dd 0xdeadbeef;
  466. .dd 0xdeadbeef;
  467. .dd 0xdeadbeef;
  468. /////////////////////////////////////////////////////////////////////////////
  469. ///////////////////////// END OF TEST /////////////////////////////
  470. /////////////////////////////////////////////////////////////////////////////