summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Schleef <ds@bigkitten.com>2008-05-23 15:22:41 -0700
committerDavid Schleef <ds@bigkitten.com>2008-05-23 15:22:41 -0700
commit5daeffaf9ad18cc9e5c4d22fe928c284bdb4102a (patch)
treefcc3fabb5bebf309e3cdde3920526a71cf831902
parent4f76bda40977c581691e47b2ae78334b3651c01f (diff)
downloadliboil-5daeffaf9ad18cc9e5c4d22fe928c284bdb4102a.tar.gz
[orc] fixes on x86-64
-rw-r--r--orc/orcprogram-x86.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/orc/orcprogram-x86.c b/orc/orcprogram-x86.c
index bad1b51..67ddd49 100644
--- a/orc/orcprogram-x86.c
+++ b/orc/orcprogram-x86.c
@@ -71,9 +71,10 @@ enum {
X86_MM6,
X86_MM7,
X86_XMM0 = ORC_VEC2_REG_BASE,
+ X86_XMM1
};
-#ifdef HAVE_X86_64
+#ifdef HAVE_AMD64
static int x86_64 = 1;
static int x86_ptr_size = 8;
static int x86_exec_ptr = X86_EDI;
@@ -295,6 +296,12 @@ orc_program_x86_init (OrcProgram *program)
for(i=X86_XMM0;i<X86_XMM0+16;i++){
program->valid_regs[i] = 1;
}
+ program->save_regs[X86_EBX] = 1;
+ program->save_regs[X86_EBP] = 1;
+ program->save_regs[X86_R12] = 1;
+ program->save_regs[X86_R13] = 1;
+ program->save_regs[X86_R14] = 1;
+ program->save_regs[X86_R15] = 1;
} else {
for(i=ORC_GP_REG_BASE;i<ORC_GP_REG_BASE+8;i++){
program->valid_regs[i] = 1;
@@ -305,6 +312,9 @@ orc_program_x86_init (OrcProgram *program)
for(i=X86_XMM0;i<X86_XMM0+8;i++){
program->valid_regs[i] = 1;
}
+ program->save_regs[X86_EBX] = 1;
+ program->save_regs[X86_EDI] = 1;
+ program->save_regs[X86_EBP] = 1;
}
for(i=X86_MM0;i<X86_MM0+8;i++){
program->valid_regs[i] = 1;