round trips

This commit is contained in:
Elliot Nunn 2018-08-13 20:57:43 +08:00
parent fd02e62892
commit f7aed5e009
3 changed files with 15 additions and 8 deletions

View File

@ -80,10 +80,10 @@ maskMsrFlags equ 0x00000F00
########################################################################
; MemRetry flags in CR3
_bitequate cr3_lt, mrSkipInstLoad ; misalignment handler need not read the instruction
_bitequate cr3_gt, mrXformIgnoreIdxReg ; instruction is X-form but without an rB field
_bitequate cr3_eq, mrSuppressUpdate ; instruction may not update base reg in-place
_bitequate cr3_so, mrChangedRegInEWA ; have "loaded" a new reg value (i.e. saved into EWA)
mrSkipInstLoad equ cr3_lt ; misalignment handler need not read the instruction
mrXformIgnoreIdxReg equ cr3_gt ; instruction is X-form but without an rB field
mrSuppressUpdate equ cr3_eq ; instruction may not update base reg in-place
mrChangedRegInEWA equ cr3_so ; have "loaded" a new reg value (i.e. saved into EWA)
########################################################################

View File

@ -132,7 +132,7 @@ VMInit ; logicalpages a0/r4, pagearray (logical ptr) a1/r5
rlwinm r3, r16, 23, 9, 28
lwzux r8, r14, r3
lwz r9, 4(r14)
andis. r3, r8, UpteValid >> 16 ; that pte must be valid, and one of P0/P1 must be set!
andis. r3, r8, 0x8000;UpteValid ; that pte must be valid, and one of P0/P1 must be set!
beql SystemCrash
andi. r3, r9, LpteP0 | LpteP1
cmpwi r3, 0
@ -240,7 +240,7 @@ VMInit ; logicalpages a0/r4, pagearray (logical ptr) a1/r5
li r8, PMDT_InvalidAddress ; (second word: PMDT_InvalidAddress)
@pmdtresetloop
lwz r3, 0(r6)
addi r6, r6, 0
addi r6, r6, 8
stw r7, 0(r3)
stw r8, 4(r3)
stw r7, 8(r3)
@ -343,7 +343,7 @@ VMIsInited ; page a0/r4 // bool d0/r3
; An uninited page is not resident and does not have its Inited bit set
bl PageInfo
bc BO_IF, bM68pdResident, vmRet1
_mvbit r3, 31, r16, bM68pdInited
_mvbit0 r3, 31, r16, bM68pdInited
b vmRet
########################################################################
@ -357,7 +357,7 @@ VMIsResident ; page a0/r4 // bool d0/r3
VMIsUnmodified ; page a0/r4 // bool d0/r3
bl PageInfo
rlwinm r3, r16, bM68pdModified + 1, 1
_mvbit0 r3, 31, r16, bM68pdModified
xori r3, r3, 1
b vmRet

View File

@ -51,6 +51,13 @@ my_pad set (my_align - (my_offset & my_mask)) & my_mask
rlwimi &rd, &rs, (32 + &bs - &bd) % 32, &bd, &bd
ENDM
########################################################################
MACRO
_mvbit0 &rd, &bd, &rs, &bs
rlwinm &rd, &rs, (32 + &bs - &bd) % 32, &bd, &bd
ENDM
########################################################################
MACRO