sparc: fix relative branch target for Sparc64
This commit is contained in:
parent
1790ccdb1e
commit
cbdea7ce19
|
@ -164,7 +164,7 @@ static bool printSparcAliasInstr(MCInst *MI, SStream *O)
|
|||
|
||||
static void printOperand(MCInst *MI, int opNum, SStream *O)
|
||||
{
|
||||
int Imm;
|
||||
int64_t Imm;
|
||||
unsigned reg;
|
||||
MCOperand *MO = MCInst_getOperand(MI, opNum);
|
||||
|
||||
|
@ -200,7 +200,7 @@ static void printOperand(MCInst *MI, int opNum, SStream *O)
|
|||
switch (MI->Opcode) {
|
||||
case SP_CALL:
|
||||
// Imm = SignExtend32(Imm, 30);
|
||||
Imm += (uint32_t)MI->address;
|
||||
Imm += MI->address;
|
||||
break;
|
||||
|
||||
// Branch on integer condition with prediction (BPcc)
|
||||
|
@ -218,7 +218,7 @@ static void printOperand(MCInst *MI, int opNum, SStream *O)
|
|||
case SP_BPFCCANT:
|
||||
case SP_BPFCCNT:
|
||||
Imm = SignExtend32(Imm, 19);
|
||||
Imm = (uint32_t)MI->address + Imm * 4;
|
||||
Imm = MI->address + Imm * 4;
|
||||
break;
|
||||
|
||||
// Branch on integer condition (Bicc)
|
||||
|
@ -229,7 +229,7 @@ static void printOperand(MCInst *MI, int opNum, SStream *O)
|
|||
case SP_FBCOND:
|
||||
case SP_FBCONDA:
|
||||
Imm = SignExtend32(Imm, 22);
|
||||
Imm = (uint32_t)MI->address + Imm * 4;
|
||||
Imm = MI->address + Imm * 4;
|
||||
break;
|
||||
|
||||
// Branch on integer register with prediction (BPr)
|
||||
|
@ -258,21 +258,11 @@ static void printOperand(MCInst *MI, int opNum, SStream *O)
|
|||
case SP_BPZnapn:
|
||||
case SP_BPZnapt:
|
||||
Imm = SignExtend32(Imm, 16);
|
||||
Imm = (uint32_t)MI->address + Imm * 4;
|
||||
Imm = MI->address + Imm * 4;
|
||||
break;
|
||||
}
|
||||
|
||||
if (Imm >= 0) {
|
||||
if (Imm > HEX_THRESHOLD)
|
||||
SStream_concat(O, "0x%x", Imm);
|
||||
else
|
||||
SStream_concat(O, "%u", Imm);
|
||||
} else {
|
||||
if (Imm < -HEX_THRESHOLD)
|
||||
SStream_concat(O, "-0x%x", -Imm);
|
||||
else
|
||||
SStream_concat(O, "-%u", -Imm);
|
||||
}
|
||||
printInt64(O, Imm);
|
||||
|
||||
if (MI->csh->detail) {
|
||||
if (MI->csh->doing_mem) {
|
||||
|
|
Loading…
Reference in New Issue