Added the "nop" instruction for sparc{,64}
This commit is contained in:
parent
95ababcdfa
commit
7edc2f2b6a
@ -42,7 +42,7 @@ static int _sparc_decode(ArchPlugin * plugin, ArchInstructionCall * call)
|
||||
u32 = _htob32(u32);
|
||||
if((u32 & 0xc0000000) == 0xc0000000) /* load store */
|
||||
opcode = u32 & (0xc0000000 | (0xf << 19) | (0x1 << 13));
|
||||
else if((u32 & 0xc1c00000) == 0x01000000) /* sethi */
|
||||
else if((u32 & 0xc1c00000) == 0x01000000) /* nop, sethi */
|
||||
opcode = u32 & (0x7 << 22);
|
||||
else if((u32 & 0xc0000000) == 0x80000000) /* integer arithmetic */
|
||||
opcode = u32 & (0x80000000 | (0x1f << 19) | (0x1 << 13));
|
||||
@ -272,6 +272,9 @@ static int _write_sethi(ArchPlugin * plugin, ArchInstruction * instruction,
|
||||
char const * name;
|
||||
ArchRegister * ar;
|
||||
|
||||
/* nop */
|
||||
if(AO_GET_TYPE(instruction->op1) == AOT_NONE)
|
||||
return 0;
|
||||
/* value */
|
||||
if(AO_GET_TYPE(instruction->op1) != AOT_IMMEDIATE)
|
||||
return -1;
|
||||
|
@ -152,6 +152,7 @@
|
||||
{ "ldub", OPLS1(ldub), OPLS1F, OPLS_RS12,OP_RD, AOT_NONE },
|
||||
{ "lduh", OPLS1(lduh), OPLS1F, OPLS_RS1, OP_RD, AOT_NONE },
|
||||
{ "lduh", OPLS1(lduh), OPLS1F, OPLS_RS12,OP_RD, AOT_NONE },
|
||||
{ "nop", OPSH(sethi), OPSHF, AOT_NONE, AOT_NONE, AOT_NONE },
|
||||
{ "or", OPIA1(or), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD },
|
||||
{ "or", OPIA2(or), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD },
|
||||
{ "orcc", OPIA1(orcc), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD },
|
||||
@ -160,11 +161,11 @@
|
||||
{ "orn", OPIA2(orn), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD },
|
||||
{ "orncc", OPIA1(orncc), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD },
|
||||
{ "orncc", OPIA2(orncc), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD },
|
||||
{ "sethi", OPSH(sethi), OPSHF, OPSH_U21, OP_RD, AOT_NONE },
|
||||
{ "sdiv", OPIA1(sdiv), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD },
|
||||
{ "sdiv", OPIA2(sdiv), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD },
|
||||
{ "sdivcc", OPIA1(sdivcc), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD },
|
||||
{ "sdivcc", OPIA2(sdivcc), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD },
|
||||
{ "sethi", OPSH(sethi), OPSHF, OPSH_U21, OP_RD, AOT_NONE },
|
||||
{ "smul", OPIA1(smul), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD },
|
||||
{ "smul", OPIA2(smul), OPIA2F, OPIA_RS1, OPIA_S12, OP_RD },
|
||||
{ "smulcc", OPIA1(smulcc), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD },
|
||||
|
@ -36,6 +36,7 @@
|
||||
ldub [%r23], %r19
|
||||
lduh [%r4 + %r7], %r11
|
||||
lduh [%r23], %r19
|
||||
nop
|
||||
or %r16, %r26, %r27
|
||||
or %r29, -$23, %r19
|
||||
orcc %r16, %r26, %r27
|
||||
|
Loading…
Reference in New Issue
Block a user