mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-08-10 01:59:41 +00:00
Add missing LSWX and STSWX instructions.
This commit is contained in:
parent
a5c18b2a09
commit
592e13b6a0
4 changed files with 22 additions and 0 deletions
|
@ -1629,6 +1629,10 @@ private:
|
||||||
{
|
{
|
||||||
DisAsm_R3("ldbrx", rd, ra, rb);
|
DisAsm_R3("ldbrx", rd, ra, rb);
|
||||||
}
|
}
|
||||||
|
void LSWX(u32 rd, u32 ra, u32 rb)
|
||||||
|
{
|
||||||
|
DisAsm_R3("lswx", rd, ra, rb);
|
||||||
|
}
|
||||||
void LWBRX(u32 rd, u32 ra, u32 rb)
|
void LWBRX(u32 rd, u32 ra, u32 rb)
|
||||||
{
|
{
|
||||||
DisAsm_R3("lwbrx", rd, ra, rb);
|
DisAsm_R3("lwbrx", rd, ra, rb);
|
||||||
|
@ -1673,6 +1677,10 @@ private:
|
||||||
{
|
{
|
||||||
DisAsm_V1_R2("stvlx", vs, ra, rb);
|
DisAsm_V1_R2("stvlx", vs, ra, rb);
|
||||||
}
|
}
|
||||||
|
void STSWX(u32 rs, u32 ra, u32 rb)
|
||||||
|
{
|
||||||
|
DisAsm_R3("swswx", rs, ra, rb);
|
||||||
|
}
|
||||||
void STWBRX(u32 rs, u32 ra, u32 rb)
|
void STWBRX(u32 rs, u32 ra, u32 rb)
|
||||||
{
|
{
|
||||||
DisAsm_R3("stwbrx", rs, ra, rb);
|
DisAsm_R3("stwbrx", rs, ra, rb);
|
||||||
|
|
|
@ -534,6 +534,7 @@ namespace PPU_instr
|
||||||
/*0x1eb*/bind_instr(g1f_list, DIVW, RD, RA, RB, OE, RC);
|
/*0x1eb*/bind_instr(g1f_list, DIVW, RD, RA, RB, OE, RC);
|
||||||
/*0x207*/bind_instr(g1f_list, LVLX, VD, RA, RB);
|
/*0x207*/bind_instr(g1f_list, LVLX, VD, RA, RB);
|
||||||
/*0x214*/bind_instr(g1f_list, LDBRX, RD, RA, RB);
|
/*0x214*/bind_instr(g1f_list, LDBRX, RD, RA, RB);
|
||||||
|
/*0x215*/bind_instr(g1f_list, LSWX, RD, RA, RB);
|
||||||
/*0x216*/bind_instr(g1f_list, LWBRX, RD, RA, RB);
|
/*0x216*/bind_instr(g1f_list, LWBRX, RD, RA, RB);
|
||||||
/*0x217*/bind_instr(g1f_list, LFSX, FRD, RA, RB);
|
/*0x217*/bind_instr(g1f_list, LFSX, FRD, RA, RB);
|
||||||
/*0x218*/bind_instr(g1f_list, SRW, RA, RS, RB, RC);
|
/*0x218*/bind_instr(g1f_list, SRW, RA, RS, RB, RC);
|
||||||
|
@ -545,6 +546,7 @@ namespace PPU_instr
|
||||||
/*0x257*/bind_instr(g1f_list, LFDX, FRD, RA, RB);
|
/*0x257*/bind_instr(g1f_list, LFDX, FRD, RA, RB);
|
||||||
/*0x277*/bind_instr(g1f_list, LFDUX, FRD, RA, RB);
|
/*0x277*/bind_instr(g1f_list, LFDUX, FRD, RA, RB);
|
||||||
/*0x287*/bind_instr(g1f_list, STVLX, VS, RA, RB);
|
/*0x287*/bind_instr(g1f_list, STVLX, VS, RA, RB);
|
||||||
|
/*0x296*/bind_instr(g1f_list, STSWX, RS, RA, RB);
|
||||||
/*0x296*/bind_instr(g1f_list, STWBRX, RS, RA, RB);
|
/*0x296*/bind_instr(g1f_list, STWBRX, RS, RA, RB);
|
||||||
/*0x297*/bind_instr(g1f_list, STFSX, FRS, RA, RB);
|
/*0x297*/bind_instr(g1f_list, STFSX, FRS, RA, RB);
|
||||||
/*0x2a7*/bind_instr(g1f_list, STVRX, VS, RA, RB);
|
/*0x2a7*/bind_instr(g1f_list, STVRX, VS, RA, RB);
|
||||||
|
|
|
@ -3016,6 +3016,10 @@ private:
|
||||||
{
|
{
|
||||||
CPU.GPR[rd] = (u64&)Memory[ra ? CPU.GPR[ra] + CPU.GPR[rb] : CPU.GPR[rb]];
|
CPU.GPR[rd] = (u64&)Memory[ra ? CPU.GPR[ra] + CPU.GPR[rb] : CPU.GPR[rb]];
|
||||||
}
|
}
|
||||||
|
void LSWX(u32 rd, u32 ra, u32 rb)
|
||||||
|
{
|
||||||
|
UNK("lswx");
|
||||||
|
}
|
||||||
void LWBRX(u32 rd, u32 ra, u32 rb)
|
void LWBRX(u32 rd, u32 ra, u32 rb)
|
||||||
{
|
{
|
||||||
CPU.GPR[rd] = (u32&)Memory[ra ? CPU.GPR[ra] + CPU.GPR[rb] : CPU.GPR[rb]];
|
CPU.GPR[rd] = (u32&)Memory[ra ? CPU.GPR[ra] + CPU.GPR[rb] : CPU.GPR[rb]];
|
||||||
|
@ -3106,6 +3110,10 @@ private:
|
||||||
|
|
||||||
Memory.WriteLeft(addr, 16 - eb, CPU.VPR[vs]._u8 + eb);
|
Memory.WriteLeft(addr, 16 - eb, CPU.VPR[vs]._u8 + eb);
|
||||||
}
|
}
|
||||||
|
void STSWX(u32 rs, u32 ra, u32 rb)
|
||||||
|
{
|
||||||
|
UNK("stwsx");
|
||||||
|
}
|
||||||
void STWBRX(u32 rs, u32 ra, u32 rb)
|
void STWBRX(u32 rs, u32 ra, u32 rb)
|
||||||
{
|
{
|
||||||
(u32&)Memory[ra ? CPU.GPR[ra] + CPU.GPR[rb] : CPU.GPR[rb]] = CPU.GPR[rs];
|
(u32&)Memory[ra ? CPU.GPR[ra] + CPU.GPR[rb] : CPU.GPR[rb]] = CPU.GPR[rs];
|
||||||
|
|
|
@ -345,6 +345,7 @@ namespace PPU_opcodes
|
||||||
DIVW = 0x1eb,
|
DIVW = 0x1eb,
|
||||||
LVLX = 0x207, //Load Vector Left Indexed
|
LVLX = 0x207, //Load Vector Left Indexed
|
||||||
LDBRX = 0x214,
|
LDBRX = 0x214,
|
||||||
|
LSWX = 0x215,
|
||||||
LWBRX = 0x216,
|
LWBRX = 0x216,
|
||||||
LFSX = 0x217,
|
LFSX = 0x217,
|
||||||
SRW = 0x218,
|
SRW = 0x218,
|
||||||
|
@ -356,6 +357,7 @@ namespace PPU_opcodes
|
||||||
LFDX = 0x257,
|
LFDX = 0x257,
|
||||||
LFDUX = 0x277,
|
LFDUX = 0x277,
|
||||||
STVLX = 0x287, //Store Vector Left Indexed
|
STVLX = 0x287, //Store Vector Left Indexed
|
||||||
|
STSWX = 0x295,
|
||||||
STWBRX = 0x296,
|
STWBRX = 0x296,
|
||||||
STFSX = 0x297,
|
STFSX = 0x297,
|
||||||
STVRX = 0x2a7, //Store Vector Right Indexed
|
STVRX = 0x2a7, //Store Vector Right Indexed
|
||||||
|
@ -741,6 +743,7 @@ public:
|
||||||
virtual void DIVW(u32 rd, u32 ra, u32 rb, u32 oe, bool rc) = 0;
|
virtual void DIVW(u32 rd, u32 ra, u32 rb, u32 oe, bool rc) = 0;
|
||||||
virtual void LVLX(u32 vd, u32 ra, u32 rb) = 0;
|
virtual void LVLX(u32 vd, u32 ra, u32 rb) = 0;
|
||||||
virtual void LDBRX(u32 rd, u32 ra, u32 rb) = 0;
|
virtual void LDBRX(u32 rd, u32 ra, u32 rb) = 0;
|
||||||
|
virtual void LSWX(u32 rd, u32 ra, u32 rb) = 0;
|
||||||
virtual void LWBRX(u32 rd, u32 ra, u32 rb) = 0;
|
virtual void LWBRX(u32 rd, u32 ra, u32 rb) = 0;
|
||||||
virtual void LFSX(u32 frd, u32 ra, u32 rb) = 0;
|
virtual void LFSX(u32 frd, u32 ra, u32 rb) = 0;
|
||||||
virtual void SRW(u32 ra, u32 rs, u32 rb, bool rc) = 0;
|
virtual void SRW(u32 ra, u32 rs, u32 rb, bool rc) = 0;
|
||||||
|
@ -752,6 +755,7 @@ public:
|
||||||
virtual void LFDX(u32 frd, u32 ra, u32 rb) = 0;
|
virtual void LFDX(u32 frd, u32 ra, u32 rb) = 0;
|
||||||
virtual void LFDUX(u32 frd, u32 ra, u32 rb) = 0;
|
virtual void LFDUX(u32 frd, u32 ra, u32 rb) = 0;
|
||||||
virtual void STVLX(u32 vs, u32 ra, u32 rb) = 0;
|
virtual void STVLX(u32 vs, u32 ra, u32 rb) = 0;
|
||||||
|
virtual void STSWX(u32 rs, u32 ra, u32 rb) = 0;
|
||||||
virtual void STWBRX(u32 rs, u32 ra, u32 rb) = 0;
|
virtual void STWBRX(u32 rs, u32 ra, u32 rb) = 0;
|
||||||
virtual void STFSX(u32 frs, u32 ra, u32 rb) = 0;
|
virtual void STFSX(u32 frs, u32 ra, u32 rb) = 0;
|
||||||
virtual void STVRX(u32 vs, u32 ra, u32 rb) = 0;
|
virtual void STVRX(u32 vs, u32 ra, u32 rb) = 0;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue