.align 2
_kernel_int_hdr:
/* ---- レジスタ保存 */
- addik r1, r1, -44
- swi r15, r1, 0
- swi r3, r1, 4
- swi r4, r1, 8
- swi r5, r1, 12
- swi r6, r1, 16
- swi r7, r1, 20
- swi r8, r1, 24
- swi r9, r1, 28
- swi r10, r1, 32
- swi r11, r1, 36
- swi r12, r1, 40
+ addik r1, r1, -76
+ swi r14, r1, 0
+ swi r3, r1, 28
+ swi r4, r1, 32
+ swi r5, r1, 36
+ swi r6, r1, 40
+ swi r7, r1, 44
+ swi r8, r1, 48
+ swi r9, r1, 52
+ swi r10, r1, 56
+ swi r11, r1, 60
+ swi r12, r1, 64
+ swi r15, r1, 68
+ mfs r3, rmsr
+ swi r3, r1, 72
/* ---- スタック入れ替え */
addik r3, r1, 0
lwi r1, r4, ICTXCB_ISP
/* ---- 割り込み開始処理呼び出し */
- addik r1, r1, -4
+ addik r1, r1, -32
brlid r15, _kernel_sta_inh
- swi r3, r1, 0 /* 旧スタックポインタ保存 */
+ swi r3, r1, 28 /* 旧スタックポインタ保存 */
/* ---- 割り込み実行処理呼び出し */
brlid r15, _kernel_exe_inh
/* ---- 割込み終了処理呼び出し */
brlid r15, _kernel_end_inh
- lwi r1, r1, 0 /* スタックの復帰 */
+ lwi r1, r1, 28 /* スタックの復帰 */
/* ---- レジスタ復帰 */
- lwi r15, r1, 0
- lwi r3, r1, 4
- lwi r4, r1, 8
- lwi r5, r1, 12
- lwi r6, r1, 16
- lwi r7, r1, 20
- lwi r8, r1, 24
- lwi r9, r1, 28
- lwi r10, r1, 32
- lwi r11, r1, 36
- lwi r12, r1, 40
- rtid r14, 0
- addik r1, r1, 44
+ lwi r3, r1, 72
+ mts rmsr, r3
+ lwi r14, r1, 0
+ lwi r3, r1, 28
+ lwi r4, r1, 32
+ lwi r5, r1, 36
+ lwi r6, r1, 40
+ lwi r7, r1, 44
+ lwi r8, r1, 48
+ lwi r9, r1, 52
+ lwi r10, r1, 56
+ lwi r11, r1, 60
+ lwi r12, r1, 64
+ lwi r15, r1, 68
+ rtid r14, 0
+ addik r1, r1, 76
/* end of file */