📄 optvfault.s
字号:
{; \ mov r##n##=r2; \ nop.b 0x0; \ bsw.0; \ ;; \}; \{; \ mov r2=r26; \ mov b0=r30; \ br.sptk.many b0; \ ;; \}; \END(asm_mov_to_bank0_reg##n##)#define MOV_FROM_BANK0_REG(n) \ENTRY_MIN_ALIGN(asm_mov_from_bank0_reg##n##); \{; \ mov r26=r2; \ nop.b 0x0; \ bsw.1; \ ;; \}; \{; \ mov r2=r##n##; \ nop.b 0x0; \ bsw.0; \ ;; \}; \{; \ mov r19=r2; \ mov r2=r26; \ mov b0=r30; \}; \{; \ nop.b 0x0; \ nop.b 0x0; \ br.sptk.many b0; \ ;; \}; \END(asm_mov_from_bank0_reg##n##)#define JMP_TO_MOV_TO_BANK0_REG(n) \{; \ nop.b 0x0; \ nop.b 0x0; \ br.sptk.many asm_mov_to_bank0_reg##n##; \ ;; \}#define JMP_TO_MOV_FROM_BANK0_REG(n) \{; \ nop.b 0x0; \ nop.b 0x0; \ br.sptk.many asm_mov_from_bank0_reg##n##; \ ;; \}MOV_FROM_BANK0_REG(16)MOV_FROM_BANK0_REG(17)MOV_FROM_BANK0_REG(18)MOV_FROM_BANK0_REG(19)MOV_FROM_BANK0_REG(20)MOV_FROM_BANK0_REG(21)MOV_FROM_BANK0_REG(22)MOV_FROM_BANK0_REG(23)MOV_FROM_BANK0_REG(24)MOV_FROM_BANK0_REG(25)MOV_FROM_BANK0_REG(26)MOV_FROM_BANK0_REG(27)MOV_FROM_BANK0_REG(28)MOV_FROM_BANK0_REG(29)MOV_FROM_BANK0_REG(30)MOV_FROM_BANK0_REG(31)// mov from reg table// r19:value, r30: return address// r26 may be destroyedENTRY(asm_mov_from_reg) MOV_FROM_REG(0) MOV_FROM_REG(1) MOV_FROM_REG(2) MOV_FROM_REG(3) MOV_FROM_REG(4) MOV_FROM_REG(5) MOV_FROM_REG(6) MOV_FROM_REG(7) MOV_FROM_REG(8) MOV_FROM_REG(9) MOV_FROM_REG(10) MOV_FROM_REG(11) MOV_FROM_REG(12) MOV_FROM_REG(13) MOV_FROM_REG(14) MOV_FROM_REG(15) JMP_TO_MOV_FROM_BANK0_REG(16) JMP_TO_MOV_FROM_BANK0_REG(17) JMP_TO_MOV_FROM_BANK0_REG(18) JMP_TO_MOV_FROM_BANK0_REG(19) JMP_TO_MOV_FROM_BANK0_REG(20) JMP_TO_MOV_FROM_BANK0_REG(21) JMP_TO_MOV_FROM_BANK0_REG(22) JMP_TO_MOV_FROM_BANK0_REG(23) JMP_TO_MOV_FROM_BANK0_REG(24) JMP_TO_MOV_FROM_BANK0_REG(25) JMP_TO_MOV_FROM_BANK0_REG(26) JMP_TO_MOV_FROM_BANK0_REG(27) JMP_TO_MOV_FROM_BANK0_REG(28) JMP_TO_MOV_FROM_BANK0_REG(29) JMP_TO_MOV_FROM_BANK0_REG(30) JMP_TO_MOV_FROM_BANK0_REG(31) MOV_FROM_REG(32) MOV_FROM_REG(33) MOV_FROM_REG(34) MOV_FROM_REG(35) MOV_FROM_REG(36) MOV_FROM_REG(37) MOV_FROM_REG(38) MOV_FROM_REG(39) MOV_FROM_REG(40) MOV_FROM_REG(41) MOV_FROM_REG(42) MOV_FROM_REG(43) MOV_FROM_REG(44) MOV_FROM_REG(45) MOV_FROM_REG(46) MOV_FROM_REG(47) MOV_FROM_REG(48) MOV_FROM_REG(49) MOV_FROM_REG(50) MOV_FROM_REG(51) MOV_FROM_REG(52) MOV_FROM_REG(53) MOV_FROM_REG(54) MOV_FROM_REG(55) MOV_FROM_REG(56) MOV_FROM_REG(57) MOV_FROM_REG(58) MOV_FROM_REG(59) MOV_FROM_REG(60) MOV_FROM_REG(61) MOV_FROM_REG(62) MOV_FROM_REG(63) MOV_FROM_REG(64) MOV_FROM_REG(65) MOV_FROM_REG(66) MOV_FROM_REG(67) MOV_FROM_REG(68) MOV_FROM_REG(69) MOV_FROM_REG(70) MOV_FROM_REG(71) MOV_FROM_REG(72) MOV_FROM_REG(73) MOV_FROM_REG(74) MOV_FROM_REG(75) MOV_FROM_REG(76) MOV_FROM_REG(77) MOV_FROM_REG(78) MOV_FROM_REG(79) MOV_FROM_REG(80) MOV_FROM_REG(81) MOV_FROM_REG(82) MOV_FROM_REG(83) MOV_FROM_REG(84) MOV_FROM_REG(85) MOV_FROM_REG(86) MOV_FROM_REG(87) MOV_FROM_REG(88) MOV_FROM_REG(89) MOV_FROM_REG(90) MOV_FROM_REG(91) MOV_FROM_REG(92) MOV_FROM_REG(93) MOV_FROM_REG(94) MOV_FROM_REG(95) MOV_FROM_REG(96) MOV_FROM_REG(97) MOV_FROM_REG(98) MOV_FROM_REG(99) MOV_FROM_REG(100) MOV_FROM_REG(101) MOV_FROM_REG(102) MOV_FROM_REG(103) MOV_FROM_REG(104) MOV_FROM_REG(105) MOV_FROM_REG(106) MOV_FROM_REG(107) MOV_FROM_REG(108) MOV_FROM_REG(109) MOV_FROM_REG(110) MOV_FROM_REG(111) MOV_FROM_REG(112) MOV_FROM_REG(113) MOV_FROM_REG(114) MOV_FROM_REG(115) MOV_FROM_REG(116) MOV_FROM_REG(117) MOV_FROM_REG(118) MOV_FROM_REG(119) MOV_FROM_REG(120) MOV_FROM_REG(121) MOV_FROM_REG(122) MOV_FROM_REG(123) MOV_FROM_REG(124) MOV_FROM_REG(125) MOV_FROM_REG(126) MOV_FROM_REG(127)END(asm_mov_from_reg)/* must be in bank 0 * parameter: * r31: pr * r24: b0 * p2: whether increase IP * p3: whether check vpsr.ic */ENTRY(vmx_resume_to_guest) // ip ++ (p2) mov r16=cr.ipsr (p2)dep.z r30=1,IA64_PSR_RI_BIT,1 adds r19=IA64_VPD_BASE_OFFSET,r21 ;; ld8 r25=[r19] (p2) add r16=r30,r16 ;; (p2) mov cr.ipsr=r16 adds r19= VPD_VPSR_START_OFFSET,r25 ;; ld8 r19=[r19] ;; mov r23=r31 mov r17=r0 //vps_resume_normal/handler tbit.z p6,p7 = r19,IA64_PSR_IC_BIT // p7=vpsr.ic (p6) br.cond.sptk.many vmx_vps_resume_handler (p7) br.cond.sptk.few vmx_vps_resume_normalEND(vmx_resume_to_guest)MOV_TO_BANK0_REG(16)MOV_TO_BANK0_REG(17)MOV_TO_BANK0_REG(18)MOV_TO_BANK0_REG(19)MOV_TO_BANK0_REG(20)MOV_TO_BANK0_REG(21)MOV_TO_BANK0_REG(22)MOV_TO_BANK0_REG(23)MOV_TO_BANK0_REG(24)MOV_TO_BANK0_REG(25)MOV_TO_BANK0_REG(26)MOV_TO_BANK0_REG(27)MOV_TO_BANK0_REG(28)MOV_TO_BANK0_REG(29)MOV_TO_BANK0_REG(30)MOV_TO_BANK0_REG(31)// mov to reg table// r19:value, r30: return addressENTRY(asm_mov_to_reg) MOV_TO_REG0 MOV_TO_REG(1) MOV_TO_REG(2) MOV_TO_REG(3) MOV_TO_REG(4) MOV_TO_REG(5) MOV_TO_REG(6) MOV_TO_REG(7) MOV_TO_REG(8) MOV_TO_REG(9) MOV_TO_REG(10) MOV_TO_REG(11) MOV_TO_REG(12) MOV_TO_REG(13) MOV_TO_REG(14) MOV_TO_REG(15) JMP_TO_MOV_TO_BANK0_REG(16) JMP_TO_MOV_TO_BANK0_REG(17) JMP_TO_MOV_TO_BANK0_REG(18) JMP_TO_MOV_TO_BANK0_REG(19) JMP_TO_MOV_TO_BANK0_REG(20) JMP_TO_MOV_TO_BANK0_REG(21) JMP_TO_MOV_TO_BANK0_REG(22) JMP_TO_MOV_TO_BANK0_REG(23) JMP_TO_MOV_TO_BANK0_REG(24) JMP_TO_MOV_TO_BANK0_REG(25) JMP_TO_MOV_TO_BANK0_REG(26) JMP_TO_MOV_TO_BANK0_REG(27) JMP_TO_MOV_TO_BANK0_REG(28) JMP_TO_MOV_TO_BANK0_REG(29) JMP_TO_MOV_TO_BANK0_REG(30) JMP_TO_MOV_TO_BANK0_REG(31) MOV_TO_REG(32) MOV_TO_REG(33) MOV_TO_REG(34) MOV_TO_REG(35) MOV_TO_REG(36) MOV_TO_REG(37) MOV_TO_REG(38) MOV_TO_REG(39) MOV_TO_REG(40) MOV_TO_REG(41) MOV_TO_REG(42) MOV_TO_REG(43) MOV_TO_REG(44) MOV_TO_REG(45) MOV_TO_REG(46) MOV_TO_REG(47) MOV_TO_REG(48) MOV_TO_REG(49) MOV_TO_REG(50) MOV_TO_REG(51) MOV_TO_REG(52) MOV_TO_REG(53) MOV_TO_REG(54) MOV_TO_REG(55) MOV_TO_REG(56) MOV_TO_REG(57) MOV_TO_REG(58) MOV_TO_REG(59) MOV_TO_REG(60) MOV_TO_REG(61) MOV_TO_REG(62) MOV_TO_REG(63) MOV_TO_REG(64) MOV_TO_REG(65) MOV_TO_REG(66) MOV_TO_REG(67) MOV_TO_REG(68) MOV_TO_REG(69) MOV_TO_REG(70) MOV_TO_REG(71) MOV_TO_REG(72) MOV_TO_REG(73) MOV_TO_REG(74) MOV_TO_REG(75) MOV_TO_REG(76) MOV_TO_REG(77) MOV_TO_REG(78) MOV_TO_REG(79) MOV_TO_REG(80) MOV_TO_REG(81) MOV_TO_REG(82) MOV_TO_REG(83) MOV_TO_REG(84) MOV_TO_REG(85) MOV_TO_REG(86) MOV_TO_REG(87) MOV_TO_REG(88) MOV_TO_REG(89) MOV_TO_REG(90) MOV_TO_REG(91) MOV_TO_REG(92) MOV_TO_REG(93) MOV_TO_REG(94) MOV_TO_REG(95) MOV_TO_REG(96) MOV_TO_REG(97) MOV_TO_REG(98) MOV_TO_REG(99) MOV_TO_REG(100) MOV_TO_REG(101) MOV_TO_REG(102) MOV_TO_REG(103) MOV_TO_REG(104) MOV_TO_REG(105) MOV_TO_REG(106) MOV_TO_REG(107) MOV_TO_REG(108) MOV_TO_REG(109) MOV_TO_REG(110) MOV_TO_REG(111) MOV_TO_REG(112) MOV_TO_REG(113) MOV_TO_REG(114) MOV_TO_REG(115) MOV_TO_REG(116) MOV_TO_REG(117) MOV_TO_REG(118) MOV_TO_REG(119) MOV_TO_REG(120) MOV_TO_REG(121) MOV_TO_REG(122) MOV_TO_REG(123) MOV_TO_REG(124) MOV_TO_REG(125) MOV_TO_REG(126) MOV_TO_REG(127)END(asm_mov_to_reg)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -