Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JitArm64: Fix divwx BindToRegister condition #11114

Merged
merged 2 commits into from Oct 1, 2022

Conversation

JosJuice
Copy link
Member

@JosJuice JosJuice commented Oct 1, 2022

a is being used both as an immediate and as a register here. Since it's being used as a register, it must be loaded. Fixes an F-Zero GX regression from PR #11094.

a is being used both as an immediate and as a register here.
Since it's being used as a register, it must be loaded.
@Sintendo
Copy link
Member

Sintendo commented Oct 1, 2022

Nice catch!

@dvessel
Copy link
Contributor

dvessel commented Oct 1, 2022

@JosJuice do you have Rogue Squadron? It still has a black screen. F-Zero was fixed though.

edit: from the console

49:47:112 Core/PowerPC/JitArm64/Jit.cpp:674 W[PowerPC]: ISI exception at 0x7fc13434
49:47:112 Core/PowerPC/JitArm64/Jit.cpp:674 W[PowerPC]: ISI exception at 0x7fd3c794
49:47:113 Core/PowerPC/JitArm64/Jit.cpp:674 W[PowerPC]: ISI exception at 0x7fc12dc8
49:47:114 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: Unhandled Exception 2
49:47:116 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ------------------------- Context 0x8008f388 -------------------------
49:47:118 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r0   = 0x7fc3010c (    2143486220)  r16  = 0x00000000 (             0)
49:47:119 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r1   = 0x800abf80 (   -2146779264)  r17  = 0x00000000 (             0)
49:47:121 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r2   = 0x8009ea20 (   -2146833888)  r18  = 0x00000000 (             0)
49:47:123 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r3   = 0x7fdc0000 (    2145124352)  r19  = 0x00000000 (             0)
49:47:124 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r4   = 0x00000000 (             0)  r20  = 0x00000000 (             0)
49:47:126 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r5   = 0x00000190 (           400)  r21  = 0x00000000 (             0)
49:47:128 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r6   = 0x00000000 (             0)  r22  = 0x00000000 (             0)
49:47:129 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r7   = 0x00000090 (           144)  r23  = 0x00000000 (             0)
49:47:131 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r8   = 0x00000000 (             0)  r24  = 0x00000000 (             0)
49:47:133 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r9   = 0x00000090 (           144)  r25  = 0x00000000 (             0)
49:47:135 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r10  = 0x00000000 (             0)  r26  = 0x00000000 (             0)
49:47:136 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r11  = 0x80000001 (   -2147483647)  r27  = 0x00000007 (             7)
49:47:138 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r12  = 0x00000000 (             0)  r28  = 0x7fde801c (    2145288220)
49:47:140 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r13  = 0x8009ada0 (   -2146849376)  r29  = 0x00000000 (             0)
49:47:141 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r14  = 0x00000000 (             0)  r30  = 0x8107aa80 (   -2130204032)
49:47:143 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r15  = 0x00000000 (             0)  r31  = 0x00001001 (          4097)
49:47:144 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: LR   = 0x7fc12de0                   CR   = 0x84000288
49:47:146 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: SRR0 = 0x7fc08258                   SRR1 = 0x0000b032
49:47:146 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]:
49:47:146 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: GQRs----------
49:47:147 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: gqr0 = 0x00000000 	 gqr4 = 0x00000000
49:47:148 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: gqr1 = 0x00000000 	 gqr5 = 0x00000000
49:47:149 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: gqr2 = 0x00000000 	 gqr6 = 0x00000000
49:47:150 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: gqr3 = 0x00000000 	 gqr7 = 0x00000000
49:47:150 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]:
49:47:150 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]:
49:47:151 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: FPRs----------
49:47:151 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr0 	= -1 	 fr1 	= -1
49:47:152 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr2 	= 0 	 fr3 	= 16
49:47:152 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr4 	= 0 	 fr5 	= 0
49:47:153 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr6 	= 0 	 fr7 	= 0
49:47:153 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr8 	= 1 	 fr9 	= 0
49:47:154 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr10 	= 0 	 fr11 	= 0
49:47:154 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr12 	= 0 	 fr13 	= 1
49:47:155 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr14 	= 0 	 fr15 	= 0
49:47:155 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr16 	= 0 	 fr17 	= 0
49:47:156 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr18 	= 0 	 fr19 	= 0
49:47:156 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr20 	= 0 	 fr21 	= 0
49:47:157 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr22 	= 0 	 fr23 	= 0
49:47:158 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr24 	= 0 	 fr25 	= 0
49:47:158 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr26 	= 0 	 fr27 	= 0
49:47:159 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr28 	= 0 	 fr29 	= 0
49:47:159 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr30 	= 0 	 fr31 	= 0
49:47:159 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]:
49:47:159 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]:
49:47:160 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: PSFs----------
49:47:161 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps0 	= 0xffffffff 	 ps1 = 0xffffffff
49:47:161 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps2 	= 0x0 	 ps3 	= 0x2000008
49:47:162 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps4 	= 0x0 	 ps5 	= 0x0
49:47:162 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps6 	= 0x0 	 ps7 	= 0x0
49:47:163 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps8 	= 0x0 	 ps9 	= 0x0
49:47:164 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps10 	= 0x0 	 ps11 	= 0x0
49:47:164 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps12 	= 0x0 	 ps13 	= 0x0
49:47:165 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps14 	= 0x0 	 ps15 	= 0x0
49:47:166 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps16 	= 0x0 	 ps17 	= 0x0
49:47:166 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps18 	= 0x0 	 ps19 	= 0x0
49:47:167 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps20 	= 0x0 	 ps21 	= 0x0
49:47:167 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps22 	= 0x0 	 ps23 	= 0x0
49:47:168 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps24 	= 0x0 	 ps25 	= 0x0
49:47:169 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps26 	= 0x0 	 ps27 	= 0x0
49:47:169 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps28 	= 0x0 	 ps29 	= 0x0
49:47:170 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps30 	= 0x0 	 ps31 	= 0x0
49:47:170 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]:
49:47:171 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: Address:      Back Chain    LR Save
49:47:172 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: 0x800abf80:   0x800abf98    0x7fc12de0
49:47:173 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: 0x800abf98:   0x800abfe0    0x7fc3010c
49:47:174 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: 0x800abfe0:   0x800ac058    0x7fc2fe50
49:47:175 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: 0x800ac058:   0x800ac070    0x7fc64764
49:47:176 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: 0x800ac070:   0x800ac118    0x7fc443f4
49:47:176 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: 0x800ac118:   0x800ac168    0x7fc461bc
49:47:177 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: 0x800ac168:   0x800ac178    0x7fc00740
49:47:178 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: 0x800ac178:   0x800ac1b0    0x7fc00260
49:47:179 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: 0x800ac1b0:   0x800ac1d0    0x80006ac8
49:47:180 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: 0x800ac1d0:   0xffffffff    0x800031ec
49:47:180 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]:
49:47:182 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: DSISR= 0x42000000                   DAR  = 0x0000022c
49:47:182 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]:
49:47:184 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: Instruction at 0x7fc08258 (read from SRR0) attempted to access invalid address 0x22c (read from DAR)

@JosJuice
Copy link
Member Author

JosJuice commented Oct 1, 2022

Is this Rogue Squadron 2 or Rogue Squadron 3? I don't have Rogue Squadron 2, but Rogue Squadron 3 works for me.

@dvessel
Copy link
Contributor

dvessel commented Oct 1, 2022

It’s RS2.

@JosJuice
Copy link
Member Author

JosJuice commented Oct 1, 2022

I've pushed an untested second commit that may or may not help with the RS2 problem.

@dvessel
Copy link
Contributor

dvessel commented Oct 1, 2022

No dice. 🙁 Maybe someone else can look at it who owns rs2.

40:05:578 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: Unhandled Exception 2
40:05:580 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ------------------------- Context 0x8008f388 -------------------------
40:05:582 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r0   = 0x7fc3010c (    2143486220)  r16  = 0x00000000 (             0)
40:05:584 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r1   = 0x800abf80 (   -2146779264)  r17  = 0x00000000 (             0)
40:05:586 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r2   = 0x8009ea20 (   -2146833888)  r18  = 0x00000000 (             0)
40:05:591 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r3   = 0x7fdc0000 (    2145124352)  r19  = 0x00000000 (             0)
40:05:593 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r4   = 0x00000000 (             0)  r20  = 0x00000000 (             0)
40:05:594 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r5   = 0x00000190 (           400)  r21  = 0x00000000 (             0)
40:05:596 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r6   = 0x00000000 (             0)  r22  = 0x00000000 (             0)
40:05:598 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r7   = 0x00000090 (           144)  r23  = 0x00000000 (             0)
40:05:599 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r8   = 0x00000000 (             0)  r24  = 0x00000000 (             0)
40:05:601 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r9   = 0x00000090 (           144)  r25  = 0x00000000 (             0)
40:05:603 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r10  = 0x00000000 (             0)  r26  = 0x00000000 (             0)
40:05:604 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r11  = 0x80000001 (   -2147483647)  r27  = 0x00000007 (             7)
40:05:606 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r12  = 0x00000000 (             0)  r28  = 0x7fde801c (    2145288220)
40:05:608 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r13  = 0x8009ada0 (   -2146849376)  r29  = 0x00000000 (             0)
40:05:610 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r14  = 0x00000000 (             0)  r30  = 0x8107aa80 (   -2130204032)
40:05:611 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: r15  = 0x00000000 (             0)  r31  = 0x00001001 (          4097)
40:05:612 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: LR   = 0x7fc12de0                   CR   = 0x84000288
40:05:614 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: SRR0 = 0x7fc08258                   SRR1 = 0x0000b032
40:05:614 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]:
40:05:614 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: GQRs----------
40:05:615 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: gqr0 = 0x00000000 	 gqr4 = 0x00000000
40:05:616 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: gqr1 = 0x00000000 	 gqr5 = 0x00000000
40:05:617 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: gqr2 = 0x00000000 	 gqr6 = 0x00000000
40:05:618 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: gqr3 = 0x00000000 	 gqr7 = 0x00000000
40:05:618 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]:
40:05:618 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]:
40:05:619 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: FPRs----------
40:05:619 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr0 	= -1 	 fr1 	= -1
40:05:620 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr2 	= 0 	 fr3 	= 16
40:05:620 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr4 	= 0 	 fr5 	= 0
40:05:621 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr6 	= 0 	 fr7 	= 0
40:05:621 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr8 	= 1 	 fr9 	= 0
40:05:622 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr10 	= 0 	 fr11 	= 0
40:05:622 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr12 	= 0 	 fr13 	= 1
40:05:623 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr14 	= 0 	 fr15 	= 0
40:05:623 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr16 	= 0 	 fr17 	= 0
40:05:624 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr18 	= 0 	 fr19 	= 0
40:05:624 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr20 	= 0 	 fr21 	= 0
40:05:625 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr22 	= 0 	 fr23 	= 0
40:05:625 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr24 	= 0 	 fr25 	= 0
40:05:626 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr26 	= 0 	 fr27 	= 0
40:05:627 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr28 	= 0 	 fr29 	= 0
40:05:627 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: fr30 	= 0 	 fr31 	= 0
40:05:627 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]:
40:05:627 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]:
40:05:628 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: PSFs----------
40:05:629 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps0 	= 0xffffffff 	 ps1 = 0xffffffff
40:05:630 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps2 	= 0x0 	 ps3 	= 0x2000008
40:05:630 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps4 	= 0x0 	 ps5 	= 0x0
40:05:631 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps6 	= 0x0 	 ps7 	= 0x0
40:05:631 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps8 	= 0x0 	 ps9 	= 0x0
40:05:632 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps10 	= 0x0 	 ps11 	= 0x0
40:05:633 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps12 	= 0x0 	 ps13 	= 0x0
40:05:633 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps14 	= 0x0 	 ps15 	= 0x0
40:05:634 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps16 	= 0x0 	 ps17 	= 0x0
40:05:634 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps18 	= 0x0 	 ps19 	= 0x0
40:05:635 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps20 	= 0x0 	 ps21 	= 0x0
40:05:636 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps22 	= 0x0 	 ps23 	= 0x0
40:05:636 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps24 	= 0x0 	 ps25 	= 0x0
40:05:637 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps26 	= 0x0 	 ps27 	= 0x0
40:05:638 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps28 	= 0x0 	 ps29 	= 0x0
40:05:638 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: ps30 	= 0x0 	 ps31 	= 0x0
40:05:638 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]:
40:05:639 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: Address:      Back Chain    LR Save
40:05:640 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: 0x800abf80:   0x800abf98    0x7fc12de0
40:05:641 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: 0x800abf98:   0x800abfe0    0x7fc3010c
40:05:642 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: 0x800abfe0:   0x800ac058    0x7fc2fe50
40:05:643 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: 0x800ac058:   0x800ac070    0x7fc64764
40:05:644 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: 0x800ac070:   0x800ac118    0x7fc443f4
40:05:645 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: 0x800ac118:   0x800ac168    0x7fc461bc
40:05:646 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: 0x800ac168:   0x800ac178    0x7fc00740
40:05:647 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: 0x800ac178:   0x800ac1b0    0x7fc00260
40:05:648 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: 0x800ac1b0:   0x800ac1d0    0x80006ac8
40:05:649 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: 0x800ac1d0:   0xffffffff    0x800031ec
40:05:649 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]:
40:05:650 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: DSISR= 0x42000000                   DAR  = 0x0000022c
40:05:650 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]:
40:05:652 Core/HW/EXI/EXI_DeviceIPL.cpp:305 N[OSREPORT]: Instruction at 0x7fc08258 (read from SRR0) attempted to access invalid address 0x22c (read from DAR)

@JosJuice
Copy link
Member Author

JosJuice commented Oct 1, 2022

Yeah, now that I look more closely, the second commit doesn't actually fix anything. But it makes the code less fragile in case the behavior of the register cache were to change in the future, so I think I'll keep it.

In case the register we're binding is the same as the immediate register,
we should fetch the immediate before calling BindToRegister. The way
the register cache currently works, calling GetImm after BindToRegister
actually does work, but it's better to not rely on it.
@AdmiralCurtiss
Copy link
Contributor

Probably not a good idea to leave this broken for long, and this looks reasonable to me, so...

@AdmiralCurtiss AdmiralCurtiss merged commit c84835c into dolphin-emu:master Oct 1, 2022
11 checks passed
@JosJuice JosJuice deleted the jitarm64-divwx-imm branch October 2, 2022 08:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
4 participants