aboutsummaryrefslogtreecommitdiff
path: root/i386-gen.c
diff options
context:
space:
mode:
Diffstat (limited to 'i386-gen.c')
-rw-r--r--i386-gen.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/i386-gen.c b/i386-gen.c
index 018307a..cfa9cc6 100644
--- a/i386-gen.c
+++ b/i386-gen.c
@@ -21,7 +21,7 @@
#ifdef TARGET_DEFS_ONLY
/* number of available registers */
-#define NB_REGS 4
+#define NB_REGS 8
#define NB_ASM_REGS 8
/* a register can belong to several classes. The classes must be
@@ -41,7 +41,6 @@
#define RC_LRET RC_EDX /* function return: second integer register */
#define RC_FRET RC_ST0 /* function return: float register */
#define RC_MASK (RC_INT|RC_INT2|RC_FLOAT)
-
/* pretty names for the registers */
enum {
TREG_EAX = 0,
@@ -104,8 +103,8 @@ ST_DATA const int reg_classes[NB_REGS] = {
RC_INT|RC_INT2|RC_EBX,
0,
/* st0 */ RC_FLOAT | RC_ST0,
- RC_RSI|RC_INT2,
- RC_RDI|RC_INT2,
+ RC_ESI|RC_INT2,
+ RC_EDI|RC_INT2,
};
static unsigned long func_sub_sp_offset;
@@ -241,7 +240,7 @@ ST_FUNC void load(int r, SValue *sv)
if(fr & VT_TMP){
int size, align;
if((ft & VT_BTYPE) == VT_FUNC)
- size = 4;
+ size = PTR_SIZE;
else
size = type_size(&sv->type, &align);
loc_stack(size, 0);
@@ -254,6 +253,7 @@ ST_FUNC void load(int r, SValue *sv)
if (!(reg_classes[fr] & RC_INT))
fr = get_reg(RC_INT);
load(fr, &v1);
+ fc = 0;
}
if ((ft & VT_BTYPE) == VT_FLOAT) {
o(0xd9); /* flds */