return i;
}
-void ppAMD64Instr ( AMD64Instr* i, Bool mode64 )
+void ppAMD64Instr ( const AMD64Instr* i, Bool mode64 )
{
vassert(mode64 == True);
switch (i->tag) {
/* --------- Helpers for register allocation. --------- */
-void getRegUsage_AMD64Instr ( HRegUsage* u, AMD64Instr* i, Bool mode64 )
+void getRegUsage_AMD64Instr ( HRegUsage* u, const AMD64Instr* i, Bool mode64 )
{
Bool unary;
vassert(mode64 == True);
source and destination to *src and *dst. If in doubt say No. Used
by the register allocator to do move coalescing.
*/
-Bool isMove_AMD64Instr ( AMD64Instr* i, HReg* src, HReg* dst )
+Bool isMove_AMD64Instr ( const AMD64Instr* i, HReg* src, HReg* dst )
{
switch (i->tag) {
case Ain_Alu64R:
leave it unchanged. */
Int emit_AMD64Instr ( /*MB_MOD*/Bool* is_profInc,
- UChar* buf, Int nbuf, AMD64Instr* i,
+ UChar* buf, Int nbuf, const AMD64Instr* i,
Bool mode64, VexEndness endness_host,
const void* disp_cp_chain_me_to_slowEP,
const void* disp_cp_chain_me_to_fastEP,
extern AMD64Instr* AMD64Instr_ProfInc ( void );
-extern void ppAMD64Instr ( AMD64Instr*, Bool );
+extern void ppAMD64Instr ( const AMD64Instr*, Bool );
/* Some functions that insulate the register allocator from details
of the underlying instruction set. */
-extern void getRegUsage_AMD64Instr ( HRegUsage*, AMD64Instr*, Bool );
-extern void mapRegs_AMD64Instr ( HRegRemap*, AMD64Instr*, Bool );
-extern Bool isMove_AMD64Instr ( AMD64Instr*, HReg*, HReg* );
+extern void getRegUsage_AMD64Instr ( HRegUsage*, const AMD64Instr*, Bool );
+extern void mapRegs_AMD64Instr ( HRegRemap*, AMD64Instr*, Bool );
+extern Bool isMove_AMD64Instr ( const AMD64Instr*, HReg*, HReg* );
extern Int emit_AMD64Instr ( /*MB_MOD*/Bool* is_profInc,
UChar* buf, Int nbuf,
- AMD64Instr* i,
+ const AMD64Instr* i,
Bool mode64,
VexEndness endness_host,
const void* disp_cp_chain_me_to_slowEP,
extern void getAllocableRegs_AMD64 ( Int*, HReg** );
extern HInstrArray* iselSB_AMD64 ( IRSB*,
VexArch,
- VexArchInfo*,
- VexAbiInfo*,
+ const VexArchInfo*,
+ const VexAbiInfo*,
Int offs_Host_EvC_Counter,
Int offs_Host_EvC_FailAddr,
Bool chainingAllowed,
HInstrArray* iselSB_AMD64 ( IRSB* bb,
VexArch arch_host,
- VexArchInfo* archinfo_host,
- VexAbiInfo* vbi/*UNUSED*/,
+ const VexArchInfo* archinfo_host,
+ const VexAbiInfo* vbi/*UNUSED*/,
Int offs_Host_EvC_Counter,
Int offs_Host_EvC_FailAddr,
Bool chainingAllowed,
/* ... */
-void ppARM64Instr ( ARM64Instr* i ) {
+void ppARM64Instr ( const ARM64Instr* i ) {
switch (i->tag) {
case ARM64in_Arith:
vex_printf("%s ", i->ARM64in.Arith.isAdd ? "add" : "sub");
/* --------- Helpers for register allocation. --------- */
-void getRegUsage_ARM64Instr ( HRegUsage* u, ARM64Instr* i, Bool mode64 )
+void getRegUsage_ARM64Instr ( HRegUsage* u, const ARM64Instr* i, Bool mode64 )
{
vassert(mode64 == True);
initHRegUsage(u);
source and destination to *src and *dst. If in doubt say No. Used
by the register allocator to do move coalescing.
*/
-Bool isMove_ARM64Instr ( ARM64Instr* i, HReg* src, HReg* dst )
+Bool isMove_ARM64Instr ( const ARM64Instr* i, HReg* src, HReg* dst )
{
switch (i->tag) {
case ARM64in_MovI:
leave it unchanged. */
Int emit_ARM64Instr ( /*MB_MOD*/Bool* is_profInc,
- UChar* buf, Int nbuf, ARM64Instr* i,
+ UChar* buf, Int nbuf, const ARM64Instr* i,
Bool mode64, VexEndness endness_host,
const void* disp_cp_chain_me_to_slowEP,
const void* disp_cp_chain_me_to_fastEP,
ARM64AMode* amFailAddr );
extern ARM64Instr* ARM64Instr_ProfInc ( void );
-extern void ppARM64Instr ( ARM64Instr* );
+extern void ppARM64Instr ( const ARM64Instr* );
/* Some functions that insulate the register allocator from details
of the underlying instruction set. */
-extern void getRegUsage_ARM64Instr ( HRegUsage*, ARM64Instr*, Bool );
+extern void getRegUsage_ARM64Instr ( HRegUsage*, const ARM64Instr*, Bool );
extern void mapRegs_ARM64Instr ( HRegRemap*, ARM64Instr*, Bool );
-extern Bool isMove_ARM64Instr ( ARM64Instr*, HReg*, HReg* );
+extern Bool isMove_ARM64Instr ( const ARM64Instr*, HReg*, HReg* );
extern Int emit_ARM64Instr ( /*MB_MOD*/Bool* is_profInc,
- UChar* buf, Int nbuf, ARM64Instr* i,
+ UChar* buf, Int nbuf, const ARM64Instr* i,
Bool mode64,
VexEndness endness_host,
const void* disp_cp_chain_me_to_slowEP,
extern void getAllocableRegs_ARM64 ( Int*, HReg** );
extern HInstrArray* iselSB_ARM64 ( IRSB*,
VexArch,
- VexArchInfo*,
- VexAbiInfo*,
+ const VexArchInfo*,
+ const VexAbiInfo*,
Int offs_Host_EvC_Counter,
Int offs_Host_EvC_FailAddr,
Bool chainingAllowed,
HInstrArray* iselSB_ARM64 ( IRSB* bb,
VexArch arch_host,
- VexArchInfo* archinfo_host,
- VexAbiInfo* vbi/*UNUSED*/,
+ const VexArchInfo* archinfo_host,
+ const VexAbiInfo* vbi/*UNUSED*/,
Int offs_Host_EvC_Counter,
Int offs_Host_EvC_FailAddr,
Bool chainingAllowed,
}
}
-static const HChar* showARMNeonDataSize ( ARMInstr* i )
+static const HChar* showARMNeonDataSize ( const ARMInstr* i )
{
switch (i->tag) {
case ARMin_NBinary:
/* ... */
-void ppARMInstr ( ARMInstr* i ) {
+void ppARMInstr ( const ARMInstr* i ) {
switch (i->tag) {
case ARMin_Alu:
vex_printf("%-4s ", showARMAluOp(i->ARMin.Alu.op));
/* --------- Helpers for register allocation. --------- */
-void getRegUsage_ARMInstr ( HRegUsage* u, ARMInstr* i, Bool mode64 )
+void getRegUsage_ARMInstr ( HRegUsage* u, const ARMInstr* i, Bool mode64 )
{
vassert(mode64 == False);
initHRegUsage(u);
source and destination to *src and *dst. If in doubt say No. Used
by the register allocator to do move coalescing.
*/
-Bool isMove_ARMInstr ( ARMInstr* i, HReg* src, HReg* dst )
+Bool isMove_ARMInstr ( const ARMInstr* i, HReg* src, HReg* dst )
{
/* Moves between integer regs */
switch (i->tag) {
leave it unchanged. */
Int emit_ARMInstr ( /*MB_MOD*/Bool* is_profInc,
- UChar* buf, Int nbuf, ARMInstr* i,
+ UChar* buf, Int nbuf, const ARMInstr* i,
Bool mode64, VexEndness endness_host,
const void* disp_cp_chain_me_to_slowEP,
const void* disp_cp_chain_me_to_fastEP,
ARMAMode1* amFailAddr );
extern ARMInstr* ARMInstr_ProfInc ( void );
-extern void ppARMInstr ( ARMInstr* );
+extern void ppARMInstr ( const ARMInstr* );
/* Some functions that insulate the register allocator from details
of the underlying instruction set. */
-extern void getRegUsage_ARMInstr ( HRegUsage*, ARMInstr*, Bool );
+extern void getRegUsage_ARMInstr ( HRegUsage*, const ARMInstr*, Bool );
extern void mapRegs_ARMInstr ( HRegRemap*, ARMInstr*, Bool );
-extern Bool isMove_ARMInstr ( ARMInstr*, HReg*, HReg* );
+extern Bool isMove_ARMInstr ( const ARMInstr*, HReg*, HReg* );
extern Int emit_ARMInstr ( /*MB_MOD*/Bool* is_profInc,
- UChar* buf, Int nbuf, ARMInstr* i,
+ UChar* buf, Int nbuf, const ARMInstr* i,
Bool mode64,
VexEndness endness_host,
const void* disp_cp_chain_me_to_slowEP,
extern void getAllocableRegs_ARM ( Int*, HReg** );
extern HInstrArray* iselSB_ARM ( IRSB*,
VexArch,
- VexArchInfo*,
- VexAbiInfo*,
+ const VexArchInfo*,
+ const VexAbiInfo*,
Int offs_Host_EvC_Counter,
Int offs_Host_EvC_FailAddr,
Bool chainingAllowed,
HInstrArray* iselSB_ARM ( IRSB* bb,
VexArch arch_host,
- VexArchInfo* archinfo_host,
- VexAbiInfo* vbi/*UNUSED*/,
+ const VexArchInfo* archinfo_host,
+ const VexAbiInfo* vbi/*UNUSED*/,
Int offs_Host_EvC_Counter,
Int offs_Host_EvC_FailAddr,
Bool chainingAllowed,
/* Does this instruction mention a particular reg? */
static Bool instrMentionsReg (
- void (*getRegUsage) (HRegUsage*, HInstr*, Bool),
+ void (*getRegUsage) (HRegUsage*, const HInstr*, Bool),
HInstr* instr,
HReg r,
Bool mode64
spill, or -1 if none was found. */
static
Int findMostDistantlyMentionedVReg (
- void (*getRegUsage) (HRegUsage*, HInstr*, Bool),
+ void (*getRegUsage) (HRegUsage*, const HInstr*, Bool),
HInstrArray* instrs_in,
Int search_from_instr,
RRegState* state,
/* Return True iff the given insn is a reg-reg move, in which
case also return the src and dst regs. */
- Bool (*isMove) ( HInstr*, HReg*, HReg* ),
+ Bool (*isMove) ( const HInstr*, HReg*, HReg* ),
/* Get info about register usage in this insn. */
- void (*getRegUsage) ( HRegUsage*, HInstr*, Bool ),
+ void (*getRegUsage) ( HRegUsage*, const HInstr*, Bool ),
/* Apply a reg-reg mapping to an insn. */
void (*mapRegs) ( HRegRemap*, HInstr*, Bool ),
Int guest_sizeB,
/* For debug printing only. */
- void (*ppInstr) ( HInstr*, Bool ),
+ void (*ppInstr) ( const HInstr*, Bool ),
void (*ppReg) ( HReg ),
/* 32/64bit mode */
/* Return True iff the given insn is a reg-reg move, in which
case also return the src and dst regs. */
- Bool (*isMove) (HInstr*, HReg*, HReg*),
+ Bool (*isMove) (const HInstr*, HReg*, HReg*),
/* Get info about register usage in this insn. */
- void (*getRegUsage) (HRegUsage*, HInstr*, Bool),
+ void (*getRegUsage) (HRegUsage*, const HInstr*, Bool),
/* Apply a reg-reg mapping to an insn. */
void (*mapRegs) (HRegRemap*, HInstr*, Bool),
Int guest_sizeB,
/* For debug printing only. */
- void (*ppInstr) ( HInstr*, Bool ),
+ void (*ppInstr) ( const HInstr*, Bool ),
void (*ppReg) ( HReg ),
/* 32/64bit mode */
vex_printf(",0x%016llx", imm);
}
-void ppMIPSInstr(MIPSInstr * i, Bool mode64)
+void ppMIPSInstr(const MIPSInstr * i, Bool mode64)
{
switch (i->tag) {
case Min_LI:
/* --------- Helpers for register allocation. --------- */
-void getRegUsage_MIPSInstr(HRegUsage * u, MIPSInstr * i, Bool mode64)
+void getRegUsage_MIPSInstr(HRegUsage * u, const MIPSInstr * i, Bool mode64)
{
initHRegUsage(u);
switch (i->tag) {
source and destination to *src and *dst. If in doubt say No. Used
by the register allocator to do move coalescing.
*/
-Bool isMove_MIPSInstr(MIPSInstr * i, HReg * src, HReg * dst)
+Bool isMove_MIPSInstr(const MIPSInstr * i, HReg * src, HReg * dst)
{
/* Moves between integer regs */
if (i->tag == Min_Alu) {
instruction was a profiler inc, set *is_profInc to True, else
leave it unchanged. */
Int emit_MIPSInstr ( /*MB_MOD*/Bool* is_profInc,
- UChar* buf, Int nbuf, MIPSInstr* i,
+ UChar* buf, Int nbuf, const MIPSInstr* i,
Bool mode64,
VexEndness endness_host,
const void* disp_cp_chain_me_to_slowEP,
MIPSAMode* amFailAddr );
extern MIPSInstr *MIPSInstr_ProfInc( void );
-extern void ppMIPSInstr(MIPSInstr *, Bool mode64);
+extern void ppMIPSInstr(const MIPSInstr *, Bool mode64);
/* Some functions that insulate the register allocator from details
of the underlying instruction set. */
-extern void getRegUsage_MIPSInstr (HRegUsage *, MIPSInstr *, Bool);
-extern void mapRegs_MIPSInstr (HRegRemap *, MIPSInstr *, Bool mode64);
-extern Bool isMove_MIPSInstr (MIPSInstr *, HReg *, HReg *);
+extern void getRegUsage_MIPSInstr (HRegUsage *, const MIPSInstr *, Bool);
+extern void mapRegs_MIPSInstr (HRegRemap *, MIPSInstr *, Bool mode64);
+extern Bool isMove_MIPSInstr (const MIPSInstr *, HReg *, HReg *);
extern Int emit_MIPSInstr (/*MB_MOD*/Bool* is_profInc,
- UChar* buf, Int nbuf, MIPSInstr* i,
+ UChar* buf, Int nbuf, const MIPSInstr* i,
Bool mode64,
VexEndness endness_host,
const void* disp_cp_chain_me_to_slowEP,
extern void getAllocableRegs_MIPS (Int *, HReg **, Bool mode64);
extern HInstrArray *iselSB_MIPS ( IRSB*,
VexArch,
- VexArchInfo*,
- VexAbiInfo*,
+ const VexArchInfo*,
+ const VexAbiInfo*,
Int offs_Host_EvC_Counter,
Int offs_Host_EvC_FailAddr,
Bool chainingAllowed,
/* Translate an entire BB to mips code. */
HInstrArray *iselSB_MIPS ( IRSB* bb,
VexArch arch_host,
- VexArchInfo* archinfo_host,
- VexAbiInfo* vbi,
+ const VexArchInfo* archinfo_host,
+ const VexAbiInfo* vbi,
Int offs_Host_EvC_Counter,
Int offs_Host_EvC_FailAddr,
Bool chainingAllowed,
}
}
-void ppPPCInstr ( PPCInstr* i, Bool mode64 )
+void ppPPCInstr ( const PPCInstr* i, Bool mode64 )
{
switch (i->tag) {
case Pin_LI:
/* --------- Helpers for register allocation. --------- */
-void getRegUsage_PPCInstr ( HRegUsage* u, PPCInstr* i, Bool mode64 )
+void getRegUsage_PPCInstr ( HRegUsage* u, const PPCInstr* i, Bool mode64 )
{
initHRegUsage(u);
switch (i->tag) {
source and destination to *src and *dst. If in doubt say No. Used
by the register allocator to do move coalescing.
*/
-Bool isMove_PPCInstr ( PPCInstr* i, HReg* src, HReg* dst )
+Bool isMove_PPCInstr ( const PPCInstr* i, HReg* src, HReg* dst )
{
/* Moves between integer regs */
if (i->tag == Pin_Alu) {
it unchanged.
*/
Int emit_PPCInstr ( /*MB_MOD*/Bool* is_profInc,
- UChar* buf, Int nbuf, PPCInstr* i,
+ UChar* buf, Int nbuf, const PPCInstr* i,
Bool mode64, VexEndness endness_host,
const void* disp_cp_chain_me_to_slowEP,
const void* disp_cp_chain_me_to_fastEP,
PPCAMode* amFailAddr );
extern PPCInstr* PPCInstr_ProfInc ( void );
-extern void ppPPCInstr(PPCInstr*, Bool mode64);
+extern void ppPPCInstr(const PPCInstr*, Bool mode64);
/* Some functions that insulate the register allocator from details
of the underlying instruction set. */
-extern void getRegUsage_PPCInstr ( HRegUsage*, PPCInstr*, Bool mode64 );
-extern void mapRegs_PPCInstr ( HRegRemap*, PPCInstr* , Bool mode64);
-extern Bool isMove_PPCInstr ( PPCInstr*, HReg*, HReg* );
+extern void getRegUsage_PPCInstr ( HRegUsage*, const PPCInstr*, Bool mode64 );
+extern void mapRegs_PPCInstr ( HRegRemap*, PPCInstr* , Bool mode64);
+extern Bool isMove_PPCInstr ( const PPCInstr*, HReg*, HReg* );
extern Int emit_PPCInstr ( /*MB_MOD*/Bool* is_profInc,
- UChar* buf, Int nbuf, PPCInstr* i,
+ UChar* buf, Int nbuf, const PPCInstr* i,
Bool mode64,
VexEndness endness_host,
const void* disp_cp_chain_me_to_slowEP,
extern void getAllocableRegs_PPC ( Int*, HReg**, Bool mode64 );
extern HInstrArray* iselSB_PPC ( IRSB*,
VexArch,
- VexArchInfo*,
- VexAbiInfo*,
+ const VexArchInfo*,
+ const VexAbiInfo*,
Int offs_Host_EvC_Counter,
Int offs_Host_EvC_FailAddr,
Bool chainingAllowed,
Bool mode64;
- VexAbiInfo* vbi;
+ const VexAbiInfo* vbi; // unused
Bool chainingAllowed;
Addr64 max_ga;
/* Translate an entire SB to ppc code. */
HInstrArray* iselSB_PPC ( IRSB* bb,
VexArch arch_host,
- VexArchInfo* archinfo_host,
- VexAbiInfo* vbi,
+ const VexArchInfo* archinfo_host,
+ const VexAbiInfo* vbi,
Int offs_Host_EvC_Counter,
Int offs_Host_EvC_FailAddr,
Bool chainingAllowed,
}
void
-ppS390Instr(s390_insn *insn, Bool mode64)
+ppS390Instr(const s390_insn *insn, Bool mode64)
{
vex_printf("%s", s390_insn_as_string(insn));
}
/* Tell the register allocator how the given instruction uses the registers
it refers to. */
void
-getRegUsage_S390Instr(HRegUsage *u, s390_insn *insn, Bool mode64)
+getRegUsage_S390Instr(HRegUsage *u, const s390_insn *insn, Bool mode64)
{
s390_insn_get_reg_usage(u, insn);
}
assign the source and destination to *src and *dst. If in doubt say No.
Used by the register allocator to do move coalescing. */
Bool
-isMove_S390Instr(s390_insn *insn, HReg *src, HReg *dst)
+isMove_S390Instr(const s390_insn *insn, HReg *src, HReg *dst)
{
return s390_insn_is_reg_reg_move(insn, src, dst);
}
Int
-emit_S390Instr(Bool *is_profinc, UChar *buf, Int nbuf, s390_insn *insn,
+emit_S390Instr(Bool *is_profinc, UChar *buf, Int nbuf, const s390_insn *insn,
Bool mode64, VexEndness endness_host,
const void *disp_cp_chain_me_to_slowEP,
const void *disp_cp_chain_me_to_fastEP,
/*--------------------------------------------------------*/
void ppS390AMode(s390_amode *);
-void ppS390Instr(s390_insn *, Bool mode64);
+void ppS390Instr(const s390_insn *, Bool mode64);
void ppHRegS390(HReg);
/* Some functions that insulate the register allocator from details
of the underlying instruction set. */
-void getRegUsage_S390Instr( HRegUsage *, s390_insn *, Bool );
+void getRegUsage_S390Instr( HRegUsage *, const s390_insn *, Bool );
void mapRegs_S390Instr ( HRegRemap *, s390_insn *, Bool );
-Bool isMove_S390Instr ( s390_insn *, HReg *, HReg * );
-Int emit_S390Instr ( Bool *, UChar *, Int, s390_insn *, Bool,
+Bool isMove_S390Instr ( const s390_insn *, HReg *, HReg * );
+Int emit_S390Instr ( Bool *, UChar *, Int, const s390_insn *, Bool,
VexEndness, const void *, const void *,
const void *, const void *);
void getAllocableRegs_S390( Int *, HReg **, Bool );
void genSpill_S390 ( HInstr **, HInstr **, HReg , Int , Bool );
void genReload_S390 ( HInstr **, HInstr **, HReg , Int , Bool );
-HInstrArray *iselSB_S390 ( IRSB *, VexArch, VexArchInfo *, VexAbiInfo *,
- Int, Int, Bool, Bool, Addr64);
+HInstrArray *iselSB_S390 ( IRSB *, VexArch, const VexArchInfo *,
+ const VexAbiInfo *, Int, Int, Bool, Bool, Addr64);
/* Return the number of bytes of code needed for an event check */
Int evCheckSzB_S390(VexEndness endness_host);
Do not assign it to a global variable! */
HInstrArray *
-iselSB_S390(IRSB *bb, VexArch arch_host, VexArchInfo *archinfo_host,
- VexAbiInfo *vbi, Int offset_host_evcheck_counter,
+iselSB_S390(IRSB *bb, VexArch arch_host, const VexArchInfo *archinfo_host,
+ const VexAbiInfo *vbi, Int offset_host_evcheck_counter,
Int offset_host_evcheck_fail_addr, Bool chaining_allowed,
Bool add_profinc, Addr64 max_ga)
{
return i;
}
-void ppX86Instr ( X86Instr* i, Bool mode64 ) {
+void ppX86Instr ( const X86Instr* i, Bool mode64 ) {
vassert(mode64 == False);
switch (i->tag) {
case Xin_Alu32R:
/* --------- Helpers for register allocation. --------- */
-void getRegUsage_X86Instr (HRegUsage* u, X86Instr* i, Bool mode64)
+void getRegUsage_X86Instr (HRegUsage* u, const X86Instr* i, Bool mode64)
{
Bool unary;
vassert(mode64 == False);
source and destination to *src and *dst. If in doubt say No. Used
by the register allocator to do move coalescing.
*/
-Bool isMove_X86Instr ( X86Instr* i, HReg* src, HReg* dst )
+Bool isMove_X86Instr ( const X86Instr* i, HReg* src, HReg* dst )
{
/* Moves between integer regs */
if (i->tag == Xin_Alu32R) {
leave it unchanged. */
Int emit_X86Instr ( /*MB_MOD*/Bool* is_profInc,
- UChar* buf, Int nbuf, X86Instr* i,
+ UChar* buf, Int nbuf, const X86Instr* i,
Bool mode64, VexEndness endness_host,
const void* disp_cp_chain_me_to_slowEP,
const void* disp_cp_chain_me_to_fastEP,
extern X86Instr* X86Instr_ProfInc ( void );
-extern void ppX86Instr ( X86Instr*, Bool );
+extern void ppX86Instr ( const X86Instr*, Bool );
/* Some functions that insulate the register allocator from details
of the underlying instruction set. */
-extern void getRegUsage_X86Instr ( HRegUsage*, X86Instr*, Bool );
+extern void getRegUsage_X86Instr ( HRegUsage*, const X86Instr*, Bool );
extern void mapRegs_X86Instr ( HRegRemap*, X86Instr*, Bool );
-extern Bool isMove_X86Instr ( X86Instr*, HReg*, HReg* );
+extern Bool isMove_X86Instr ( const X86Instr*, HReg*, HReg* );
extern Int emit_X86Instr ( /*MB_MOD*/Bool* is_profInc,
- UChar* buf, Int nbuf, X86Instr* i,
+ UChar* buf, Int nbuf, const X86Instr* i,
Bool mode64,
VexEndness endness_host,
const void* disp_cp_chain_me_to_slowEP,
extern void getAllocableRegs_X86 ( Int*, HReg** );
extern HInstrArray* iselSB_X86 ( IRSB*,
VexArch,
- VexArchInfo*,
- VexAbiInfo*,
+ const VexArchInfo*,
+ const VexAbiInfo*,
Int offs_Host_EvC_Counter,
Int offs_Host_EvC_FailAddr,
Bool chainingAllowed,
HInstrArray* iselSB_X86 ( IRSB* bb,
VexArch arch_host,
- VexArchInfo* archinfo_host,
- VexAbiInfo* vbi/*UNUSED*/,
+ const VexArchInfo* archinfo_host,
+ const VexAbiInfo* vbi/*UNUSED*/,
Int offs_Host_EvC_Counter,
Int offs_Host_EvC_FailAddr,
Bool chainingAllowed,
from the target instruction set. */
HReg* available_real_regs;
Int n_available_real_regs;
- Bool (*isMove) ( HInstr*, HReg*, HReg* );
- void (*getRegUsage) ( HRegUsage*, HInstr*, Bool );
+ Bool (*isMove) ( const HInstr*, HReg*, HReg* );
+ void (*getRegUsage) ( HRegUsage*, const HInstr*, Bool );
void (*mapRegs) ( HRegRemap*, HInstr*, Bool );
void (*genSpill) ( HInstr**, HInstr**, HReg, Int, Bool );
void (*genReload) ( HInstr**, HInstr**, HReg, Int, Bool );
HInstr* (*directReload) ( HInstr*, HReg, Short );
- void (*ppInstr) ( HInstr*, Bool );
+ void (*ppInstr) ( const HInstr*, Bool );
void (*ppReg) ( HReg );
- HInstrArray* (*iselSB) ( IRSB*, VexArch, VexArchInfo*, VexAbiInfo*,
- Int, Int, Bool, Bool, Addr64 );
+ HInstrArray* (*iselSB) ( IRSB*, VexArch, const VexArchInfo*,
+ const VexAbiInfo*, Int, Int, Bool, Bool,
+ Addr64 );
Int (*emit) ( /*MB_MOD*/Bool*,
- UChar*, Int, HInstr*, Bool, VexEndness,
+ UChar*, Int, const HInstr*, Bool, VexEndness,
const void*, const void*, const void*,
const void* );
IRExpr* (*specHelper) ( const HChar*, IRExpr**, IRStmt**, Int );