mirror of
https://github.com/reactos/reactos.git
synced 2025-04-22 13:10:39 +00:00
start add mr op code causeome new bug for ppc
svn path=/trunk/; revision=25543
This commit is contained in:
parent
5b7bc2d57e
commit
fb71b542de
4 changed files with 38 additions and 1 deletions
|
@ -12,6 +12,7 @@ CPU_INT PPCBrain( CPU_BYTE *cpu_buffer,
|
||||||
/* here we put the prototype for the opcode api that brain need we show a example for it */
|
/* here we put the prototype for the opcode api that brain need we show a example for it */
|
||||||
CPU_INT PPC_Blr( FILE *out, CPU_BYTE * cpu_buffer, CPU_UNINT cpu_pos, CPU_UNINT cpu_size, CPU_UNINT BaseAddress, CPU_UNINT cpuarch);
|
CPU_INT PPC_Blr( FILE *out, CPU_BYTE * cpu_buffer, CPU_UNINT cpu_pos, CPU_UNINT cpu_size, CPU_UNINT BaseAddress, CPU_UNINT cpuarch);
|
||||||
CPU_INT PPC_Li( FILE *out, CPU_BYTE * cpu_buffer, CPU_UNINT cpu_pos, CPU_UNINT cpu_size, CPU_UNINT BaseAddress, CPU_UNINT cpuarch);
|
CPU_INT PPC_Li( FILE *out, CPU_BYTE * cpu_buffer, CPU_UNINT cpu_pos, CPU_UNINT cpu_size, CPU_UNINT BaseAddress, CPU_UNINT cpuarch);
|
||||||
|
CPU_INT PPC_mr( FILE *out, CPU_BYTE * cpu_buffer, CPU_UNINT cpu_pos, CPU_UNINT cpu_size, CPU_UNINT BaseAddress, CPU_UNINT cpuarch);
|
||||||
CPU_INT PPC_Stw( FILE *out, CPU_BYTE * cpu_buffer, CPU_UNINT cpu_pos, CPU_UNINT cpu_size, CPU_UNINT BaseAddress, CPU_UNINT cpuarch);
|
CPU_INT PPC_Stw( FILE *out, CPU_BYTE * cpu_buffer, CPU_UNINT cpu_pos, CPU_UNINT cpu_size, CPU_UNINT BaseAddress, CPU_UNINT cpuarch);
|
||||||
CPU_INT PPC_Stwu( FILE *out, CPU_BYTE * cpu_buffer, CPU_UNINT cpu_pos, CPU_UNINT cpu_size, CPU_UNINT BaseAddress, CPU_UNINT cpuarch);
|
CPU_INT PPC_Stwu( FILE *out, CPU_BYTE * cpu_buffer, CPU_UNINT cpu_pos, CPU_UNINT cpu_size, CPU_UNINT BaseAddress, CPU_UNINT cpuarch);
|
||||||
|
|
||||||
|
|
|
@ -80,6 +80,17 @@ CPU_INT PPCBrain( CPU_BYTE *cpu_buffer,
|
||||||
cpu_pos += retsize;
|
cpu_pos += retsize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* mr */
|
||||||
|
if ((cpuint - (cpuint & GetMaskByte32(cpuPPCInit_mr))) == ConvertBitToByte32(cpuPPCInit_mr))
|
||||||
|
{
|
||||||
|
retsize = PPC_mr( outfp, cpu_buffer, cpu_pos, cpu_size,
|
||||||
|
BaseAddress, cpuarch);
|
||||||
|
if (retsize<0)
|
||||||
|
retcode = 1;
|
||||||
|
else
|
||||||
|
cpu_pos += retsize;
|
||||||
|
}
|
||||||
|
|
||||||
/* stw */
|
/* stw */
|
||||||
if ((cpuint - (cpuint & GetMaskByte32(cpuPPCInit_stw))) == ConvertBitToByte32(cpuPPCInit_stw))
|
if ((cpuint - (cpuint & GetMaskByte32(cpuPPCInit_stw))) == ConvertBitToByte32(cpuPPCInit_stw))
|
||||||
{
|
{
|
||||||
|
@ -90,7 +101,6 @@ CPU_INT PPCBrain( CPU_BYTE *cpu_buffer,
|
||||||
else
|
else
|
||||||
cpu_pos += retsize;
|
cpu_pos += retsize;
|
||||||
}
|
}
|
||||||
retcode = 0;
|
|
||||||
|
|
||||||
/* stwu */
|
/* stwu */
|
||||||
if ((cpuint - (cpuint & GetMaskByte32(cpuPPCInit_stwu))) == ConvertBitToByte32(cpuPPCInit_stwu))
|
if ((cpuint - (cpuint & GetMaskByte32(cpuPPCInit_stwu))) == ConvertBitToByte32(cpuPPCInit_stwu))
|
||||||
|
|
|
@ -14,6 +14,7 @@ CPU_BYTE cpuPPCInit_Blr[32] = {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0
|
||||||
CPU_BYTE cpuPPCInit_Li[32] = {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,1,1,1,0,2,2};
|
CPU_BYTE cpuPPCInit_Li[32] = {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,1,1,1,0,2,2};
|
||||||
CPU_BYTE cpuPPCInit_stw[32] = {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,1,0,0,2,2};
|
CPU_BYTE cpuPPCInit_stw[32] = {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,1,0,0,2,2};
|
||||||
CPU_BYTE cpuPPCInit_stwu[32] = {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,1,0,1,2,2};
|
CPU_BYTE cpuPPCInit_stwu[32] = {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,1,0,1,2,2};
|
||||||
|
CPU_BYTE cpuPPCInit_mr[32] = {0,1,1,1,1,0,0,0,0,0,0,0,1,0,1,1,2,2,2,2,2,2,2,2,0,1,1,1,1,1,2,2};
|
||||||
/* mask */
|
/* mask */
|
||||||
/*
|
/*
|
||||||
* no mask we implement function getting the reg right
|
* no mask we implement function getting the reg right
|
||||||
|
|
|
@ -95,6 +95,31 @@ CPU_INT PPC_Li( FILE *out, CPU_BYTE * cpu_buffer, CPU_UNINT cpu_pos,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CPU_INT PPC_mr( FILE *out, CPU_BYTE * cpu_buffer, CPU_UNINT cpu_pos,
|
||||||
|
CPU_UNINT cpu_size, CPU_UNINT BaseAddress, CPU_UNINT cpuarch)
|
||||||
|
{
|
||||||
|
CPU_UNINT opcode;
|
||||||
|
|
||||||
|
opcode = GetData32Le(&cpu_buffer[cpu_pos]);
|
||||||
|
|
||||||
|
BaseAddress +=cpu_pos;
|
||||||
|
|
||||||
|
/* own translatons langues */
|
||||||
|
if (AllocAny()!=0) /* alloc memory for pMyBrainAnalys */
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
pMyBrainAnalys->op = OP_ANY_mov;
|
||||||
|
pMyBrainAnalys->type= 2 + 8 + 16; /* 8 dst reg, 2 src reg */
|
||||||
|
pMyBrainAnalys->src_size = 32;
|
||||||
|
pMyBrainAnalys->src = PPC_GetBitArraySrcReg(opcode);
|
||||||
|
pMyBrainAnalys->dst = PPC_GetBitArrayBto31xx(opcode);
|
||||||
|
pMyBrainAnalys->memAdr=BaseAddress;
|
||||||
|
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
CPU_INT PPC_Stw( FILE *out, CPU_BYTE * cpu_buffer, CPU_UNINT cpu_pos,
|
CPU_INT PPC_Stw( FILE *out, CPU_BYTE * cpu_buffer, CPU_UNINT cpu_pos,
|
||||||
CPU_UNINT cpu_size, CPU_UNINT BaseAddress, CPU_UNINT cpuarch)
|
CPU_UNINT cpu_size, CPU_UNINT BaseAddress, CPU_UNINT cpuarch)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue