[kaffe] jit3 style jit-{i386,m68k}.def
Kiyo Inaba
inaba at src.ricoh.co.jp
Tue Jul 13 04:12:32 PDT 2004
I said
>By the way, aren't there anyone who volunteer to modify jit-xxx.def
>to be compatible with jit3-xxx.def? Originally these two files are
>very close, but when we remove some warning these two files (or
>precisely speaking pairs of these files) becomes much different.
>This make me so hard to check the behavior of jit3-m68k.def against
>jit-m68k.def...
>
># Or shall I do that? :-)
I made patch for i386 and m68k.
This patch works fine for i686-linux (--with-engine=jit).
It makes me much easier to tackle the question why jit3 for m68k
does not work properly, in the (near) future.
Currently, there are three more CPUs (alpha, arm, sparc) which
support jit but not converted to this new style, and I plan to make
mod for them later.
Kiyo
diff -Naur kaffe-snap-040708.orig/ChangeLog kaffe-snap-040708/ChangeLog
--- kaffe-snap-040708.orig/ChangeLog Wed Jul 7 21:58:43 2004
+++ kaffe-snap-040708/ChangeLog Tue Jul 13 13:20:55 2004
@@ -1,3 +1,12 @@
+2004-07-13 Kiyo Inaba <inaba at src.ricoh.co.jp>
+
+ * kaffe/kaffevm/jit/funcs.c
+ * config/i386/jit-i386.def:
+ * config/i386/jit3-i386.def:
+ * config/m68k/jit-i386.def:
+ * config/m68k/jit3-i386.def:
+ Fix 'use of compound as lvalue is deprecated' warnings for jit.
+
2004-07-07 Jim Huang <jserv at kaffe.org>
* libraries/javalib/java/awt/Graphics.java:
diff -Naur kaffe-snap-040708.orig/config/i386/jit-i386.def kaffe-snap-040708/config/i386/jit-i386.def
--- kaffe-snap-040708.orig/config/i386/jit-i386.def Tue Mar 11 17:00:16 2003
+++ kaffe-snap-040708/config/i386/jit-i386.def Tue Jul 13 19:16:32 2004
@@ -19,15 +19,15 @@
#define debug(x)
#endif
-#define do_move_int(t, f) { \
- if ((t) != (f)) { \
- OUT = 0x89; \
- OUT = 0xC0|(f<<3)|t; \
- debug(("movl %s,%s\n", regname(f), regname(t)));\
- } \
+#define do_move_int(t, f) \
+ if ((t) != (f)) { \
+ OUT(0x89); \
+ OUT(0xC0|(f<<3)|t); \
+ debug(("movl %s,%s\n", regname(f), regname(t)));\
}
-#define check_reg_01() { \
+#define check_reg_01() \
+ { \
int _r_ = rreg_int(1); \
int _w_ = wreg_int(0); \
assert(_r_ == _w_); \
@@ -79,30 +79,30 @@
int *__counter = (int *)&(COUNTER); \
if (SAVE_EDX_EAX) { \
/* Save EAX and EDX */ \
- OUT = 0x50|REG_edx; \
- OUT = 0x50|REG_eax; \
+ OUT(0x50|REG_edx); \
+ OUT(0x50|REG_eax); \
debug(("pushl edx\n")); \
debug(("pushl eax\n")); \
} \
\
- OUT = 0x0F; \
- OUT = 0x31; \
+ OUT(0x0F); \
+ OUT(0x31); \
debug(("rdtsc\n")); \
\
- OUT = 0x29; \
- OUT = 0x05; \
- LOUT = (int)(__counter); \
+ OUT(0x29); \
+ OUT(0x05); \
+ LOUT((int)(__counter)); \
debug(("sub eax, 0x%x\n", (int)(__counter))); \
\
- OUT = 0x19; \
- OUT = 0x15; \
- LOUT = (int)(__counter + 1); \
+ OUT(0x19); \
+ OUT(0x15); \
+ LOUT((int)(__counter + 1)); \
debug(("sbb edx, 0x%x\n", (int)(__counter + 1))); \
\
if (SAVE_EDX_EAX) { \
/* Restore EAX and EDX */ \
- OUT = 0x58|REG_eax; \
- OUT = 0x58|REG_edx; \
+ OUT(0x58|REG_eax); \
+ OUT(0x58|REG_edx); \
debug(("popl eax\n")); \
debug(("popl edx\n")); \
} \
@@ -115,30 +115,30 @@
int *__counter = (int *)&(COUNTER); \
if (SAVE_EDX_EAX) { \
/* Save EAX and EDX */ \
- OUT = 0x50|REG_edx; \
- OUT = 0x50|REG_eax; \
+ OUT(0x50|REG_edx); \
+ OUT(0x50|REG_eax); \
debug(("pushl edx\n")); \
debug(("pushl eax\n")); \
} \
\
- OUT = 0x0F; \
- OUT = 0x31; \
+ OUT(0x0F); \
+ OUT(0x31); \
debug(("rdtsc\n")); \
\
- OUT = 0x01; \
- OUT = 0x05; \
- LOUT = (int)(__counter); \
+ OUT(0x01); \
+ OUT(0x05); \
+ LOUT((int)(__counter)); \
debug(("add eax, 0x%x\n", (int)(__counter))); \
\
- OUT = 0x11; \
- OUT = 0x15; \
- LOUT = (int)(__counter + 1); \
+ OUT(0x11); \
+ OUT(0x15); \
+ LOUT((int)(__counter + 1)); \
debug(("adc edx, 0x%x\n", (int)(__counter + 1))); \
\
if (SAVE_EDX_EAX) { \
/* Restore EAX and EDX */ \
- OUT = 0x58|REG_eax; \
- OUT = 0x58|REG_edx; \
+ OUT(0x58|REG_eax); \
+ OUT(0x58|REG_edx); \
debug(("popl eax\n")); \
debug(("popl edx\n")); \
} \
@@ -155,7 +155,7 @@
define_insn(nop, nop)
{
- OUT = 0x90;
+ OUT(0x90);
debug(("nop\n"));
}
@@ -165,20 +165,20 @@
{
label* l;
- OUT = 0x50|REG_ebp;
- OUT = 0x89;
- OUT = 0xC0|(REG_esp<<3)|REG_ebp;
- OUT = 0x81;
- OUT = 0xE8|REG_esp;
+ OUT(0x50|REG_ebp);
+ OUT(0x89);
+ OUT(0xC0|(REG_esp<<3)|REG_ebp);
+ OUT(0x81);
+ OUT(0xE8|REG_esp);
l = (label*)const_int(1);
l->type = Lframe|Labsolute|Lgeneral;
l->at = (uintp)CODEPC;
- LOUT = 0;
+ LOUT(0);
- OUT = 0x50|REG_edi;
- OUT = 0x50|REG_esi;
- OUT = 0x50|REG_ebx;
+ OUT(0x50|REG_edi);
+ OUT(0x50|REG_esi);
+ OUT(0x50|REG_ebx);
debug(("pushl ebp\n"));
debug(("movl esp,ebp\n"));
@@ -192,131 +192,137 @@
{
profiler_start(globalMethod->totalClicks, 0);
- OUT = 0xFF;
- OUT = 0x05;
- LOUT = (int)&(globalMethod->callsCount);
+ OUT(0xFF);
+ OUT(0x05);
+ LOUT((int)&(globalMethod->callsCount));
debug(("incl 0x%x\n",(int)&(globalMethod->callsCount)));
}
#endif
+#if 0
/* If this method uses IEEE, set up the mode here */
- if (used_ieee_division == true && 0) {
- OUT = 0x68;
- LOUT = 0;
- OUT = 0x68;
- LOUT = 0;
+ if (used_ieee_division == true) {
+ OUT(0x68);
+ LOUT(0);
+ OUT(0x68);
+ LOUT(0);
debug(("pushl #0\n"));
debug(("pushl #0\n"));
- OUT = 0xD9;
- OUT = 0x3C;
- OUT = 0x24;
+ OUT(0xD9);
+ OUT(0x3C);
+ OUT(0x24);
debug(("fnstcw (esp)\n"));
- OUT = 0x8B;
- OUT = (REG_ebx<<3)|0x04;
- OUT = 0x24;
- debug(("movl (esp),ebx\n"));
-
- OUT = 0xB8|REG_ebx;
- LOUT = IEEE_MODE;
- debug(("movl %d,ebx\n", IEEE_MODE));
-
- OUT = 0x89;
- OUT = (REG_ebx<<3)|0x44;
- OUT = 0x24;
- OUT = 0x04;
- debug(("movl ebx,4(esp)\n"));
-
- OUT = 0xD9;
- OUT = 0x6C;
- OUT = 0x24;
- OUT = 0x04;
+ OUT(0x8B);
+ OUT((REG_eax<<3)|0x04);
+ OUT(0x24);
+ debug(("movl (esp),eax\n"));
+
+ OUT(0xB8|REG_eax);
+ LOUT(IEEE_MODE);
+ debug(("movl %d,eax\n", IEEE_MODE));
+
+ OUT(0x89);
+ OUT((REG_eax<<3)|0x44);
+ OUT(0x24);
+ OUT(0x04);
+ debug(("movl eax,4(esp)\n"));
+
+ OUT(0xD9);
+ OUT(0x6C);
+ OUT(0x24);
+ OUT(0x04);
debug(("fldcw 4(esp)\n"));
}
+#endif
}
define_insn(exception_prologue, eprologue_xLx)
{
label* l;
- OUT = 0x89;
- OUT = 0xC0|(REG_ebp<<3)|REG_ebx;
+ OUT(0x89);
+ OUT(0xC0|(REG_ebp<<3)|REG_ecx);
- OUT = 0x81;
- OUT = 0xE8|REG_ebx;
+ OUT(0x81);
+ OUT(0xE8|REG_ecx);
/* Remember where the framesize is to go */
l = (label*)const_int(1);
l->type = Lframe|Labsolute|Lgeneral;
l->at = (uintp)CODEPC;
- LOUT = 0;
+ LOUT(0);
- OUT = 0x81;
- OUT = 0xE8|REG_ebx;
- LOUT = 3*SLOTSIZE;
-
- OUT = 0x89;
- OUT = 0xC0|(REG_ebx<<3)|REG_esp;
-
- debug(("movl ebp,ebx\n"));
- debug(("subl #?,ebx\n"));
- debug(("subl #3*SLOTSIZE,ebx\n"));
- debug(("movl ebx,esp\n"));
-
- if (used_ieee_division == true && 0) {
- OUT = 0x81;
- OUT = 0xE8|REG_esp;
- LOUT = SLOTSIZE;
+ OUT(0x81);
+ OUT(0xE8|REG_ecx);
+ LOUT(3*SLOTSIZE);
+
+ OUT(0x89);
+ OUT(0xC0|(REG_ecx<<3)|REG_esp);
+
+ debug(("movl ebp,ecx\n"));
+ debug(("subl #?,ecx\n"));
+ debug(("subl #3*SLOTSIZE,ecx\n"));
+ debug(("movl ecx,esp\n"));
+
+#if 0
+ if (used_ieee_division == true) {
+ OUT(0x81);
+ OUT(0xE8|REG_esp);
+ LOUT(SLOTSIZE);
debug(("subl #%d,esp\n", SLOTSIZE));
- OUT = 0x8B;
- OUT = (REG_ebx<<3)|0x04;
- OUT = 0x24;
- debug(("movl (esp),ebx\n"));
-
- OUT = 0xB8|REG_ebx;
- LOUT = IEEE_MODE;
- debug(("movl %d,ebx\n", IEEE_MODE));
-
- OUT = 0x89;
- OUT = (REG_ebx<<3)|0x44;
- OUT = 0x24;
- OUT = 0x04;
- debug(("movl ebx,4(esp)\n"));
-
- OUT = 0xD9;
- OUT = 0x6C;
- OUT = 0x24;
- OUT = 0x04;
+ OUT(0x8B);
+ OUT((REG_eax<<3)|0x04);
+ OUT(0x24);
+ debug(("movl (esp),eax\n"));
+
+ OUT(0xB8|REG_eax);
+ LOUT(IEEE_MODE);
+ debug(("movl %d,eax\n", IEEE_MODE));
+
+ OUT(0x89);
+ OUT((REG_eax<<3)|0x44);
+ OUT(0x24);
+ OUT(0x04);
+ debug(("movl eax,4(esp)\n"));
+
+ OUT(0xD9);
+ OUT(0x6C);
+ OUT(0x24);
+ OUT(0x04);
debug(("fldcw 4(esp)\n"));
}
+#endif
}
define_insn(epilogue, epilogue_xxx)
{
setEpilogueLabel((uintp)CODEPC);
-
+
+#if 0
/* If this method uses IEEE, restore it */
- if (used_ieee_division == true && 0) {
+ if (used_ieee_division == true) {
#if 0
- OUT = 0xD9;
- OUT = 0x2C;
- OUT = 0x24;
+ OUT(0xD9);
+ OUT(0x2C);
+ OUT(0x24);
debug(("fldcw (esp)\n"));
#endif
- OUT = 0xD9;
- OUT = 0x6C;
- OUT = 0x24;
- OUT = 0;
+ OUT(0xD9);
+ OUT(0x6C);
+ OUT(0x24);
+ OUT(0);
debug(("fldcw 0(esp)\n"));
- OUT = 0x81;
- OUT = 0xC0|REG_esp;
- LOUT = 8;
+ OUT(0x81);
+ OUT(0xC0|REG_esp);
+ LOUT(8);
debug(("addl 8,esp\n"));
}
+#endif
#if defined(KAFFE_PROFILER)
if (profFlag) {
@@ -324,12 +330,12 @@
}
#endif
- OUT = 0x58|REG_ebx;
- OUT = 0x58|REG_esi;
- OUT = 0x58|REG_edi;
- OUT = 0x89;
- OUT = 0xC0|(REG_ebp<<3)|REG_esp;
- OUT = 0x58|REG_ebp;
+ OUT(0x58|REG_ebx);
+ OUT(0x58|REG_esi);
+ OUT(0x58|REG_edi);
+ OUT(0x89);
+ OUT(0xC0|(REG_ebp<<3)|REG_esp);
+ OUT(0x58|REG_ebp);
debug(("popl ebx\n"));
debug(("popl esi\n"));
@@ -337,7 +343,7 @@
debug(("movl ebp,esp\n"));
debug(("popl ebp\n"));
- OUT = 0xC3;
+ OUT(0xC3);
debug(("ret\n"));
}
@@ -349,9 +355,9 @@
int r = sreg_int(0);
int o = const_int(1);
- OUT = 0x89;
- OUT = 0x80|(r<<3)|REG_ebp;
- LOUT = o;
+ OUT(0x89);
+ OUT(0x80|(r<<3)|REG_ebp);
+ LOUT(o);
debug(("movl %s,%d(ebp)\n", regname(r), o));
}
@@ -360,11 +366,11 @@
{
int o = const_int(1);
- sreg_float(0);
+ (void)sreg_float(0);
- OUT = 0xD9;
- OUT = 0x98|REG_ebp;
- LOUT = o;
+ OUT(0xD9);
+ OUT(0x98|REG_ebp);
+ LOUT(o);
debug(("fstp %d(ebp)\n", o));
}
@@ -373,11 +379,11 @@
{
int o = const_int(1);
- sreg_double(0);
+ (void)sreg_double(0);
- OUT = 0xDD;
- OUT = 0x98|REG_ebp;
- LOUT = o;
+ OUT(0xDD);
+ OUT(0x98|REG_ebp);
+ LOUT(o);
debug(("fstpl %d(ebp)\n", o));
}
@@ -387,9 +393,9 @@
int r = lreg_int(0);
int o = const_int(1);
- OUT = 0x8B;
- OUT = 0x80|(r<<3)|REG_ebp;
- LOUT = o;
+ OUT(0x8B);
+ OUT(0x80|(r<<3)|REG_ebp);
+ LOUT(o);
debug(("movl %d(ebp),%s\n", o, regname(r)));
}
@@ -400,24 +406,23 @@
lreg_float(0);
- OUT = 0xD9;
- OUT = 0x80|REG_ebp;
- LOUT = o;
+ OUT(0xD9);
+ OUT(0x80|REG_ebp);
+ LOUT(o);
debug(("fld %d(ebp)\n", o));
}
define_insn(reload_double, freloadl_Rxx)
{
+ int r = lreg_double(0);
int o = const_int(1);
- lreg_double(0);
+ OUT(0xDD);
+ OUT(0x80|REG_ebp);
+ LOUT(o);
- OUT = 0xDD;
- OUT = 0x80|REG_ebp;
- LOUT = o;
-
- debug(("fldl %d(ebp)\n", o));
+ debug(("fldl %d(ebp) %d\n", o, r));
}
/* --------------------------------------------------------------------- */
@@ -426,10 +431,18 @@
{
int val = const_int(2);
int w = wreg_int(0);
- OUT = 0xB8|w;
- LOUT = val;
- debug(("movl #%d,%s\n", val, regname(w)));
+ if (val == 0) {
+ OUT(0x31);
+ OUT(0xC0|(w<<3)|w);
+ debug(("xorl %s,%s\n", regname(w), regname(w)));
+ }
+ else {
+ OUT(0xB8|w);
+ LOUT(val);
+
+ debug(("movl #%d,%s\n", val, regname(w)));
+ }
}
define_insn(move_label_const, move_RxL)
@@ -437,10 +450,10 @@
label* l = const_label(2);
int w = wreg_int(0);
- OUT = 0xB8|w;
+ OUT(0xB8|w);
l->type |= Llong|Labsolute;
l->at = CODEPC;
- LOUT = 0;
+ LOUT(0);
debug(("movl #?,%s\n", regname(w)));
}
@@ -451,38 +464,35 @@
int w = wreg_int(0);
if (r != w) {
- OUT = 0x89;
- OUT = 0xC0|(r<<3)|w;
+ OUT(0x89);
+ OUT(0xC0|(r<<3)|w);
debug(("movl %s,%s\n", regname(r), regname(w)));
}
}
define_insn(move_float_const, fmove_RxC)
{
- double val = const_float(2);
+ jvalue d;
+ d.d = const_float(2);
wreg_float(0);
- if (val == 0.0) {
- OUT = 0xD9;
- OUT = 0xEE;
+ if (d.d == 0.0) {
+ OUT(0xD9);
+ OUT(0xEE);
debug(("fldz\n"));
- {
- jvalue d;
- d.d = val;
-
- if ((d.j >> 63) & 1) {
- OUT = 0xD9;
- OUT = 0xe0;
- debug(("fchs\n"));
- }
+ if ((d.j >> 63) & 1) {
+ OUT(0xD9);
+ OUT(0xe0);
+
+ debug(("fchs\n"));
}
}
- else if (val == 1.0) {
- OUT = 0xD9;
- OUT = 0xE8;
+ else if (d.d == 1.0) {
+ OUT(0xD9);
+ OUT(0xE8);
debug(("fld1\n"));
}
@@ -499,9 +509,9 @@
if (or != ow) {
wreg_float(0);
- OUT = 0xD9;
- OUT = 0x80|REG_ebp;
- LOUT = or;
+ OUT(0xD9);
+ OUT(0x80|REG_ebp);
+ LOUT(or);
debug(("fld %d(ebp)\n", or));
}
@@ -509,30 +519,26 @@
define_insn(move_double_const, fmovel_RxC)
{
- double val = const_double(2);
+ jvalue d;
+ d.d = const_double(2);
wreg_double(0);
- if (val == 0.0) {
- OUT = 0xD9;
- OUT = 0xEE;
+ if (d.d == 0.0) {
+ OUT(0xD9);
+ OUT(0xEE);
debug(("fldz\n"));
- {
- jvalue d;
- d.d = val;
-
- if ((d.j >> 63) & 1) {
- OUT = 0xD9;
- OUT = 0xe0;
+ if ((d.j >> 63) & 1) {
+ OUT(0xD9);
+ OUT(0xe0);
- debug(("fchsl\n"));
- }
+ debug(("fchs\n"));
}
}
- else if (val == 1.0) {
- OUT = 0xD9;
- OUT = 0xE8;
+ else if (d.d == 1.0) {
+ OUT(0xD9);
+ OUT(0xE8);
debug(("fld1\n"));
}
@@ -549,9 +555,9 @@
if (or != ow) {
wreg_double(0);
- OUT = 0xDD;
- OUT = 0x80|REG_ebp;
- LOUT = or;
+ OUT(0xDD);
+ OUT(0x80|REG_ebp);
+ LOUT(or);
debug(("fldl %d(ebp)\n", or));
}
@@ -569,8 +575,8 @@
r = rreg_int(2);
w = rwreg_int(0);
- OUT = 0x01;
- OUT = 0xC0|(r<<3)|w;
+ OUT(0x01);
+ OUT(0xC0|(r<<3)|w);
debug(("addl %s,%s\n", regname(r), regname(w)));
}
@@ -583,8 +589,8 @@
r = rreg_int(2);
w = rwreg_int(0);
- OUT = 0x11;
- OUT = 0xC0|(r<<3)|w;
+ OUT(0x11);
+ OUT(0xC0|(r<<3)|w);
debug(("adcl %s,%s\n", regname(r), regname(w)));
}
@@ -596,9 +602,9 @@
rreg_float(1); /* Load r1 into the register stack */
wreg_float(0); /* Result will be in register stack */
- OUT = 0xD8;
- OUT = 0x80|REG_ebp;
- LOUT = r2;
+ OUT(0xD8);
+ OUT(0x80|REG_ebp);
+ LOUT(r2);
debug(("fadd %d(ebp)\n", r2));
}
@@ -610,9 +616,9 @@
rreg_double(1); /* Load r1 into the register stack */
wreg_double(0); /* Result will be in register stack */
- OUT = 0xDC;
- OUT = 0x80|REG_ebp;
- LOUT = r2;
+ OUT(0xDC);
+ OUT(0x80|REG_ebp);
+ LOUT(r2);
debug(("faddl %d(ebp)\n", r2));
}
@@ -627,8 +633,8 @@
r = rreg_int(2);
w = rwreg_int(0);
- OUT = 0x29;
- OUT = 0xC0|(r<<3)|w;
+ OUT(0x29);
+ OUT(0xC0|(r<<3)|w);
debug(("subl %s,%s\n", regname(r), regname(w)));
}
@@ -641,8 +647,8 @@
r = rreg_int(2);
w = rwreg_int(0);
- OUT = 0x19;
- OUT = 0xC0|(r<<3)|w;
+ OUT(0x19);
+ OUT(0xC0|(r<<3)|w);
debug(("sbbl %s,%s\n", regname(r), regname(w)));
}
@@ -654,9 +660,9 @@
rreg_float(1); /* Load r1 into the register stack */
wreg_float(0); /* Result will be in register stack */
- OUT = 0xD8;
- OUT = 0xA0|REG_ebp;
- LOUT = r2;
+ OUT(0xD8);
+ OUT(0xA0|REG_ebp);
+ LOUT(r2);
debug(("fsub %d(ebp)\n", r2));
}
@@ -668,33 +674,33 @@
rreg_double(1); /* Load r1 into the register stack */
wreg_double(0); /* Result will be in register stack */
- OUT = 0xDC;
- OUT = 0xA0|REG_ebp;
- LOUT = r2;
+ OUT(0xDC);
+ OUT(0xA0|REG_ebp);
+ LOUT(r2);
debug(("fsubl %d(ebp)\n", r2));
}
define_insn(neg_float, negf_RxR)
{
- rreg_float(2);
- wreg_float(0);
+ rreg_float(2);
+ wreg_float(0);
- OUT = 0xD9;
- OUT = 0xe0;
+ OUT(0xD9);
+ OUT(0xe0);
- debug(("fchs\n"));
+ debug(("fchs\n"));
}
define_insn(neg_double, negd_RxR)
{
- rreg_double(2);
- wreg_double(0);
+ rreg_double(2);
+ wreg_double(0);
- OUT = 0xD9;
- OUT = 0xe0;
+ OUT(0xD9);
+ OUT(0xe0);
- debug(("fchsl\n"));
+ debug(("fchs\n"));
}
define_insn(mul_int, mul_RRR)
@@ -707,9 +713,9 @@
r = rreg_int(2);
w = rwreg_int(0);
- OUT = 0x0F;
- OUT = 0xAF;
- OUT = 0xC0|(w<<3)|r;
+ OUT(0x0F);
+ OUT(0xAF);
+ OUT(0xC0|(w<<3)|r);
debug(("imull %s,%s\n", regname(r), regname(w)));
}
@@ -721,9 +727,9 @@
rreg_float(1); /* Load r1 into the register stack */
wreg_float(0); /* Result will be in register stack */
- OUT = 0xD8;
- OUT = 0x88|REG_ebp;
- LOUT = r2;
+ OUT(0xD8);
+ OUT(0x88|REG_ebp);
+ LOUT(r2);
debug(("fmul %d(ebp)\n", r2));
}
@@ -735,9 +741,9 @@
rreg_double(1); /* Load r1 into the register stack */
wreg_double(0); /* Result will be in register stack */
- OUT = 0xDC;
- OUT = 0x88|REG_ebp;
- LOUT = r2;
+ OUT(0xDC);
+ OUT(0x88|REG_ebp);
+ LOUT(r2);
debug(("fmull %d(ebp)\n", r2));
}
@@ -765,43 +771,43 @@
assert(r != REG_edx);
/* special case for LONG_MIN / -1l: r == -1 ? -eax : eax / r */
- OUT = 0x83;
- OUT = 0xF8|r;
- OUT = 0xFF;
+ OUT(0x83);
+ OUT(0xF8|r);
+ OUT(0xFF);
debug(("cmp #0xFF,%s\n", regname(r)));
l1 = newLabel();
l1->type = Linternal| Llong8|Lrelative;
- OUT = 0x74;
+ OUT(0x74);
l1->at = CODEPC;
- OUT = 0;
+ OUT(0);
l1->from = CODEPC;
debug(("je neg\n"));
/* Setup EDX - should contains the sign of EAX */
do_move_int(REG_edx, REG_eax);
#if 0
- OUT = 0xC1;
- OUT = 0xF8|REG_edx;
- OUT = 31;
+ OUT(0xC1);
+ OUT(0xF8|REG_edx);
+ OUT(31);
debug(("sarl #31,edx\n"));
#else
- OUT = 0x99;
+ OUT(0x99);
debug(("cltd\n"));
#endif
- OUT = 0xF7;
- OUT = 0xF8|r;
+ OUT(0xF7);
+ OUT(0xF8|r);
debug(("idivl %s,%s\n", regname(r), regname(w)));
- OUT = 0xEB;
- OUT = 2;
+ OUT(0xEB);
+ OUT(2);
debug(("jmp +2\n"));
debug(("neg:\n"));
l1->to = CODEPC;
- OUT = 0xF7;
- OUT = 0xD8|REG_eax;
+ OUT(0xF7);
+ OUT(0xD8|REG_eax);
debug(("neg eax\n"));
}
@@ -812,9 +818,9 @@
rreg_float(1); /* Load r1 into the register stack */
wreg_float(0); /* Result will be in register stack */
- OUT = 0xD8;
- OUT = 0xB0|REG_ebp;
- LOUT = r2;
+ OUT(0xD8);
+ OUT(0xB0|REG_ebp);
+ LOUT(r2);
debug(("fdiv %d(ebp)\n", r2));
}
@@ -826,9 +832,9 @@
rreg_double(1); /* Load r1 into the register stack */
wreg_double(0); /* Result will be in register stack */
- OUT = 0xDC;
- OUT = 0xB0|REG_ebp;
- LOUT = r2;
+ OUT(0xDC);
+ OUT(0xB0|REG_ebp);
+ LOUT(r2);
debug(("fdivl %d(ebp)\n", r2));
}
@@ -855,43 +861,43 @@
assert(r != REG_edx);
/* special case for LONG_MIN % -1l: r == -1 ? 0 : eax / r */
- OUT = 0x83;
- OUT = 0xF8|r;
- OUT = 0xFF;
+ OUT(0x83);
+ OUT(0xF8|r);
+ OUT(0xFF);
debug(("cmp #0xFF,%s\n", regname(r)));
l1 = newLabel();
l1->type = Linternal| Llong8|Lrelative;
- OUT = 0x74;
+ OUT(0x74);
l1->at = CODEPC;
- OUT = 0;
+ OUT(0);
l1->from = CODEPC;
debug(("je const0\n"));
/* Setup EDX - should contains the sign of EAX */
do_move_int(REG_edx, REG_eax);
#if 0
- OUT = 0xC1;
- OUT = 0xF8|REG_edx;
- OUT = 31;
+ OUT(0xC1);
+ OUT(0xF8|REG_edx);
+ OUT(31);
debug(("sarl #31,edx\n"));
#else
- OUT = 0x99;
+ OUT(0x99);
debug(("cltd\n"));
#endif
- OUT = 0xF7;
- OUT = 0xF8|r;
+ OUT(0xF7);
+ OUT(0xF8|r);
debug(("idivl %s,%s\n", regname(r), regname(w)));
- OUT = 0xEB;
- OUT = 2;
+ OUT(0xEB);
+ OUT(2);
debug(("jmp +2\n"));
debug(("const0:\n"));
l1->to = CODEPC;
- OUT = 0x31;
- OUT = 0xC0|(REG_edx<<3)|REG_edx;
+ OUT(0x31);
+ OUT(0xC0|(REG_edx<<3)|REG_edx);
debug(("xorl edx,edx\n"));
/* Result is in EDX not EAX - we must force the slot register */
@@ -910,8 +916,8 @@
r = rreg_int(2);
w = rwreg_int(0);
- OUT = 0x21;
- OUT = 0xC0|(r<<3)|w;
+ OUT(0x21);
+ OUT(0xC0|(r<<3)|w);
debug(("andl %s,%s\n", regname(r), regname(w)));
}
@@ -926,8 +932,8 @@
r = rreg_int(2);
w = rwreg_int(0);
- OUT = 0x09;
- OUT = 0xC0|(r<<3)|w;
+ OUT(0x09);
+ OUT(0xC0|(r<<3)|w);
debug(("orl %s,%s\n", regname(r), regname(w)));
}
@@ -942,8 +948,8 @@
r = rreg_int(2);
w = rwreg_int(0);
- OUT = 0x31;
- OUT = 0xC0|(r<<3)|w;
+ OUT(0x31);
+ OUT(0xC0|(r<<3)|w);
debug(("xorl %s,%s\n", regname(r), regname(w)));
}
@@ -962,8 +968,8 @@
w = rwreg_int(0);
- OUT = 0xD3;
- OUT = 0xF8|w;
+ OUT(0xD3);
+ OUT(0xF8|w);
debug(("sarl %s,%s\n", regname(r), regname(w)));
}
@@ -982,8 +988,8 @@
w = rwreg_int(0);
- OUT = 0xD3;
- OUT = 0xE8|w;
+ OUT(0xD3);
+ OUT(0xE8|w);
debug(("shrl %s,%s\n", regname(r), regname(w)));
}
@@ -1002,8 +1008,8 @@
w = rwreg_int(0);
- OUT = 0xD3;
- OUT = 0xE0|w;
+ OUT(0xD3);
+ OUT(0xE0|w);
debug(("shll %s,%s\n", regname(r), regname(w)));
}
@@ -1015,10 +1021,10 @@
int r = rreg_int(2);
int w = wreg_int(0);
- OUT = 0x8B;
- OUT = 0x00|(w<<3)|r;
+ OUT(0x8B);
+ OUT(0x00|(w<<3)|r);
if (r == REG_esp) {
- OUT = 0x20|REG_esp;
+ OUT(0x20|REG_esp);
}
debug(("movl (%s),%s\n", regname(r), regname(w)));
@@ -1030,8 +1036,8 @@
wreg_float(0);
- OUT = 0xD9;
- OUT = 0x00|r;
+ OUT(0xD9);
+ OUT(0x00|r);
debug(("fld (%s)\n", regname(r)));
}
@@ -1042,8 +1048,8 @@
wreg_double(0);
- OUT = 0xDD;
- OUT = 0x00|r;
+ OUT(0xDD);
+ OUT(0x00|r);
debug(("fldl (%s)\n", regname(r)));
}
@@ -1053,10 +1059,10 @@
int r = rreg_int(2);
int w = rreg_int(1);
- OUT = 0x89;
- OUT = 0x00|(r<<3)|w;
+ OUT(0x89);
+ OUT(0x00|(r<<3)|w);
if (w == REG_esp) {
- OUT = 0x20|REG_esp;
+ OUT(0x20|REG_esp);
}
debug(("movl %s,(%s)\n", regname(r), regname(w)));
@@ -1068,8 +1074,8 @@
rreg_float(2);
- OUT = 0xD9;
- OUT = 0x18|w;
+ OUT(0xD9);
+ OUT(0x18|w);
debug(("fstp (%s)\n", regname(w)));
}
@@ -1080,8 +1086,8 @@
rreg_double(2);
- OUT = 0xDD;
- OUT = 0x18|w;
+ OUT(0xDD);
+ OUT(0x18|w);
debug(("fstlp (%s)\n", regname(w)));
}
@@ -1093,8 +1099,8 @@
int r1 = rreg_int(1);
int r2 = rreg_int(2);
- OUT = 0x39;
- OUT = 0xC0|(r2<<3)|r1;
+ OUT(0x39);
+ OUT(0xC0|(r2<<3)|r1);
debug(("cmpl %s,%s\n", regname(r2), regname(r1)));
}
@@ -1107,9 +1113,9 @@
wreg_float(0);
- OUT = 0xDB;
- OUT = 0x80|REG_ebp;
- LOUT = r;
+ OUT(0xDB);
+ OUT(0x80|REG_ebp);
+ LOUT(r);
debug(("fild %d(ebp)\n", r));
}
@@ -1120,9 +1126,9 @@
wreg_double(0);
- OUT = 0xDB;
- OUT = 0x80|REG_ebp;
- LOUT = r;
+ OUT(0xDB);
+ OUT(0x80|REG_ebp);
+ LOUT(r);
debug(("fild %d(ebp)\n", r));
}
@@ -1133,9 +1139,9 @@
wreg_float(0);
- OUT = 0xDF;
- OUT = 0xA8|REG_ebp;
- LOUT = r;
+ OUT(0xDF);
+ OUT(0xA8|REG_ebp);
+ LOUT(r);
debug(("fildll %d(ebp)\n", r));
}
@@ -1146,9 +1152,9 @@
wreg_double(0);
- OUT = 0xDF;
- OUT = 0xA8|REG_ebp;
- LOUT = r;
+ OUT(0xDF);
+ OUT(0xA8|REG_ebp);
+ LOUT(r);
debug(("fildll %d(ebp)\n", r));
}
@@ -1159,9 +1165,9 @@
wreg_double(0);
- OUT = 0xD9;
- OUT = 0x80|REG_ebp;
- LOUT = o;
+ OUT(0xD9);
+ OUT(0x80|REG_ebp);
+ LOUT(o);
debug(("fld %d(ebp)\n", o));
}
@@ -1172,9 +1178,9 @@
wreg_float(0);
- OUT = 0xDD;
- OUT = 0x80|REG_ebp;
- LOUT = o;
+ OUT(0xDD);
+ OUT(0x80|REG_ebp);
+ LOUT(o);
debug(("fldl %d(ebp)\n", o));
}
@@ -1185,7 +1191,7 @@
{
jint val = const_int(2);
- LOUT = val;
+ LOUT(val);
debug((".word %08x\n", val));
}
@@ -1196,7 +1202,7 @@
l->type |= Llong|Labsolute;
l->at = CODEPC;
- LOUT = 0;
+ LOUT(0);
l->from = CODEPC;
debug((".word ?\n"));
}
@@ -1217,73 +1223,73 @@
l->type |= Llong|Lrelative;
switch (bt) {
case ba:
- OUT = 0xE9;
+ OUT(0xE9);
l->at = CODEPC;
- LOUT = 0;
+ LOUT(0);
l->from = CODEPC;
debug(("jmpl ?\n"));
break;
case beq:
- OUT = 0x0F;
- OUT = 0x84;
+ OUT(0x0F);
+ OUT(0x84);
l->at = CODEPC;
- LOUT = 0;
+ LOUT(0);
l->from = CODEPC;
debug(("je ?\n"));
break;
case bne:
- OUT = 0x0F;
- OUT = 0x85;
+ OUT(0x0F);
+ OUT(0x85);
l->at = CODEPC;
- LOUT = 0;
+ LOUT(0);
l->from = CODEPC;
debug(("jne ?\n"));
break;
case blt:
- OUT = 0x0F;
- OUT = 0x8C;
+ OUT(0x0F);
+ OUT(0x8C);
l->at = CODEPC;
- LOUT = 0;
+ LOUT(0);
l->from = CODEPC;
debug(("jlt ?\n"));
break;
case ble:
- OUT = 0x0F;
- OUT = 0x8E;
+ OUT(0x0F);
+ OUT(0x8E);
l->at = CODEPC;
- LOUT = 0;
+ LOUT(0);
l->from = CODEPC;
debug(("jle ?\n"));
break;
case bgt:
- OUT = 0x0F;
- OUT = 0x8F;
+ OUT(0x0F);
+ OUT(0x8F);
l->at = CODEPC;
- LOUT = 0;
+ LOUT(0);
l->from = CODEPC;
debug(("jgt ?\n"));
break;
case bge:
- OUT = 0x0F;
- OUT = 0x8D;
+ OUT(0x0F);
+ OUT(0x8D);
l->at = CODEPC;
- LOUT = 0;
+ LOUT(0);
l->from = CODEPC;
debug(("jge ?\n"));
break;
case bult:
- OUT = 0x0F;
- OUT = 0x82;
+ OUT(0x0F);
+ OUT(0x82);
l->at = CODEPC;
- LOUT = 0;
+ LOUT(0);
l->from = CODEPC;
debug(("jult ?\n"));
break;
case bugt:
- OUT = 0x0F;
- OUT = 0x87;
+ OUT(0x0F);
+ OUT(0x87);
l->at = CODEPC;
- LOUT = 0;
+ LOUT(0);
l->from = CODEPC;
debug(("jugt ?\n"));
break;
@@ -1297,8 +1303,8 @@
int r = rreg_int(1);
assert(const_int(2) == ba);
- OUT = 0xFF;
- OUT = 0xE0|r;
+ OUT(0xFF);
+ OUT(0xE0|r);
debug(("jmp (%s)\n", regname(r)));
}
@@ -1315,10 +1321,10 @@
}
#endif
- OUT = 0xE8;
+ OUT(0xE8);
l->type |= Llong|Lrelative;
l->at = CODEPC;
- LOUT = 0;
+ LOUT(0);
l->from = CODEPC;
debug(("call ?\n"));
@@ -1342,8 +1348,8 @@
}
#endif
- OUT = 0xFF;
- OUT = 0xD0|r;
+ OUT(0xFF);
+ OUT(0xD0|r);
debug(("call %s\n", regname(r)));
@@ -1365,8 +1371,8 @@
}
#endif
- WOUT = 0x15FF;
- LOUT = m;
+ WOUT(0x15FF);
+ LOUT(m);
debug(("call *%x\n", m));
@@ -1381,8 +1387,8 @@
{
int r = rreg_int(1);
- OUT = 0xFF;
- OUT = 0xF0|r;
+ OUT(0xFF);
+ OUT(0xF0|r);
debug(("pushl %s\n", regname(r)));
}
@@ -1391,8 +1397,8 @@
{
int r = rreg_int(1); /* Move the float into a register */
- OUT = 0xFF;
- OUT = 0xF0|r;
+ OUT(0xFF);
+ OUT(0xF0|r);
debug(("pushl %s\n", regname(r)));
}
@@ -1401,15 +1407,15 @@
{
int o = rslot_double(1);
- OUT = 0xFF;
- OUT = 0xB0|REG_ebp;
- LOUT = o+4;
+ OUT(0xFF);
+ OUT(0xB0|REG_ebp);
+ LOUT(o+4);
debug(("pushl %d(ebp)\n", (o+4)));
- OUT = 0xFF;
- OUT = 0xB0|REG_ebp;
- LOUT = o;
+ OUT(0xFF);
+ OUT(0xB0|REG_ebp);
+ LOUT(o);
debug(("pushl %d(ebp)\n", o));
}
@@ -1419,9 +1425,9 @@
int o = const_int(2);
o *= 4;
- OUT = 0x81;
- OUT = 0xC0|REG_esp;
- LOUT = o;
+ OUT(0x81);
+ OUT(0xC0|REG_esp);
+ LOUT(o);
debug(("addl %d,esp\n", o));
}
@@ -1478,8 +1484,8 @@
}
else {
/* r1 == REG_edx && r2 == REG_eax - swap */
- OUT = 0x87;
- OUT = 0xC0|r1<<3|r2;
+ OUT(0x87);
+ OUT(0xC0|r1<<3|r2);
}
}
@@ -1507,9 +1513,9 @@
v = const_int(2);
rw = rwreg_int(0);
- OUT = 0x81;
- OUT = 0xC0|rw;
- LOUT = v;
+ OUT(0x81);
+ OUT(0xC0|rw);
+ LOUT(v);
debug(("addl #%d,%s\n", v, regname(rw)));
}
@@ -1524,9 +1530,9 @@
v = const_int(2);
rw = rwreg_int(0);
- OUT = 0x81;
- OUT = 0xE8|rw;
- LOUT = v;
+ OUT(0x81);
+ OUT(0xE8|rw);
+ LOUT(v);
debug(("subl #%d,%s\n", v, regname(rw)));
}
@@ -1538,9 +1544,9 @@
int w = wreg_int(0);
assert(r != REG_esp);
- OUT = 0x8B;
- OUT = 0x80|(w<<3)|r;
- LOUT = v;
+ OUT(0x8B);
+ OUT(0x80|(w<<3)|r);
+ LOUT(v);
debug(("movl %d(%s),%s\n", v, regname(r), regname(w)));
}
@@ -1550,11 +1556,11 @@
int r = rreg_int(2);
int w = wreg_int(0);
- OUT = 0x0F;
- OUT = 0xBE;
- OUT = 0x00|(w<<3)|r;
+ OUT(0x0F);
+ OUT(0xBE);
+ OUT(0x00|(w<<3)|r);
if (r == REG_esp) {
- OUT = 0x20|REG_esp;
+ OUT(0x20|REG_esp);
}
debug(("movsb (%s),%s\n", regname(r), regname(w)));
@@ -1565,11 +1571,11 @@
int r = rreg_int(2);
int w = wreg_int(0);
- OUT = 0x0F;
- OUT = 0xB7;
- OUT = 0x00|(w<<3)|r;
+ OUT(0x0F);
+ OUT(0xB7);
+ OUT(0x00|(w<<3)|r);
if (r == REG_esp) {
- OUT = 0x20|REG_esp;
+ OUT(0x20|REG_esp);
}
debug(("movzw (%s),%s\n", regname(r), regname(w)));
@@ -1580,11 +1586,11 @@
int r = rreg_int(2);
int w = wreg_int(0);
- OUT = 0x0F;
- OUT = 0xBF;
- OUT = 0x00|(w<<3)|r;
+ OUT(0x0F);
+ OUT(0xBF);
+ OUT(0x00|(w<<3)|r);
if (r == REG_esp) {
- OUT = 0x20|REG_esp;
+ OUT(0x20|REG_esp);
}
debug(("movsw (%s),%s\n", regname(r), regname(w)));
@@ -1601,9 +1607,9 @@
r1 = rreg_int(1);
assert(r0 != REG_esp);
- OUT = 0x89;
- OUT = 0x80|(r0<<3)|r1;
- LOUT = v;
+ OUT(0x89);
+ OUT(0x80|(r0<<3)|r1);
+ LOUT(v);
debug(("movl %s,%d(%s)\n", regname(r0), v, regname(r1)));
}
@@ -1618,12 +1624,13 @@
if (r == REG_edi || r == REG_esi) {
do_force_move_int(REG_ebx, r, 2);
}
+
w = rreg_int(1);
- OUT = 0x88;
- OUT = 0x00|(r<<3)|w;
+ OUT(0x88);
+ OUT(0x00|(r<<3)|w);
if (w == REG_esp) {
- OUT = 0x20|REG_esp;
+ OUT(0x20|REG_esp);
}
debug(("movb %s,(%s)\n", regname(r), regname(w)));
@@ -1634,11 +1641,11 @@
int r = rreg_int(2);
int w = rreg_int(1);
- OUT = 0x66;
- OUT = 0x89;
- OUT = 0x00|(r<<3)|w;
+ OUT(0x66);
+ OUT(0x89);
+ OUT(0x00|(r<<3)|w);
if (w == REG_esp) {
- OUT = 0x20|REG_esp;
+ OUT(0x20|REG_esp);
}
debug(("movw %s,(%s)\n", regname(r), regname(w)));
@@ -1649,9 +1656,9 @@
int r1 = rreg_int(1);
int v = const_int(2);
- OUT = 0x81;
- OUT = 0xF8|r1;
- LOUT = v;
+ OUT(0x81);
+ OUT(0xF8|r1);
+ LOUT(v);
debug(("cmpl #%d,%s\n", v, regname(r1)));
}
@@ -1660,8 +1667,8 @@
{
int v = const_int(1);
- OUT = 0x68;
- LOUT = v;
+ OUT(0x68);
+ LOUT(v);
debug(("pushl #%d\n", v));
}
@@ -1676,9 +1683,9 @@
rw = rreg_int(0);
v = const_int(2);
- OUT = 0xC1;
- OUT = 0xE0|rw;
- OUT = v;
+ OUT(0xC1);
+ OUT(0xE0|rw);
+ OUT(v);
debug(("shll #%d,%s\n", v, regname(rw)));
}
@@ -1693,8 +1700,8 @@
)
if (((reginfo[s->regno].ctype & Rdouble) && (s->regno == REG_dbl0)) ||
((reginfo[s->regno].ctype & Rfloat) && (s->regno == REG_flt0))) {
- OUT = 0xDD;
- OUT = 0xD8;
+ OUT(0xDD);
+ OUT(0xD8);
debug (("fstp %%st(0)\n"));
}
diff -Naur kaffe-snap-040708.orig/config/i386/jit3-i386.def kaffe-snap-040708/config/i386/jit3-i386.def
--- kaffe-snap-040708.orig/config/i386/jit3-i386.def Sun Apr 4 13:52:37 2004
+++ kaffe-snap-040708/config/i386/jit3-i386.def Tue Jul 13 18:01:59 2004
@@ -111,7 +111,7 @@
\
OUT(0x29); \
OUT(0x05); \
- LOUT((int)(__counter)); \
+ LOUT((int)(__counter)); \
debug(("sub eax, 0x%x\n", (int)(__counter))); \
\
OUT(0x19); \
@@ -147,7 +147,7 @@
\
OUT(0x01); \
OUT(0x05); \
- LOUT((int)(__counter)); \
+ LOUT((int)(__counter)); \
debug(("add eax, 0x%x\n", (int)(__counter))); \
\
OUT(0x11); \
@@ -176,6 +176,7 @@
define_insn(nop, nop)
{
OUT(0x90);
+ debug(("nop\n"));
}
/* --------------------------------------------------------------------- */
@@ -455,7 +456,7 @@
/* The function ends with a throw, not a return. */
}
setEpilogueLabel((uintp)CODEPC);
-
+
#if 0
/* If this method uses IEEE, restore it */
if (used_ieee_division == true) {
@@ -518,10 +519,9 @@
define_insn(spill_float, fspill_Rxx)
{
- int o;
+ int o = const_int(1);
(void)sreg_float(0);
- o = const_int(1);
OUT(0xD9);
OUT(0x98|REG_ebp);
@@ -532,10 +532,9 @@
define_insn(spill_double, fspilll_Rxx)
{
- int o;
+ int o = const_int(1);
(void)sreg_double(0);
- o = const_int(1);
OUT(0xDD);
OUT(0x98|REG_ebp);
@@ -546,11 +545,8 @@
define_insn(reload_int, reload_Rxx)
{
- int o;
- int r;
-
- r = lreg_int(0);
- o = const_int(1);
+ int r = lreg_int(0);
+ int o = const_int(1);
OUT(0x8B);
OUT(0x80|(r<<3)|REG_ebp);
@@ -561,10 +557,9 @@
define_insn(reload_float, freload_Rxx)
{
- int o;
+ int o = const_int(1);
lreg_float(0);
- o = const_int(1);
OUT(0xD9);
OUT(0x80|REG_ebp);
@@ -575,15 +570,13 @@
define_insn(reload_double, freloadl_Rxx)
{
- int r, o;
+ int r = lreg_double(0);
+ int o = const_int(1);
- r = lreg_double(0);
- o = const_int(1);
-
OUT(0xDD);
OUT(0x80|REG_ebp);
LOUT(o);
-
+
debug(("fldl %d(ebp) %d\n", o, r));
}
@@ -656,7 +649,7 @@
OUT(0xe0);
debug(("fchs\n"));
- }
+ }
}
else if (d.d == 1.0) {
OUT(0xD9);
@@ -702,7 +695,7 @@
OUT(0xe0);
debug(("fchs\n"));
- }
+ }
}
else if (d.d == 1.0) {
OUT(0xD9);
@@ -1259,7 +1252,7 @@
OUT(0xD9);
OUT(0x18|w);
-
+
debug(("fstp (%s)\n", regname(w)));
}
@@ -1356,9 +1349,8 @@
define_insn(cvt_float_double, cvtfd_RxR)
{
- int o;
+ int o = rslot_float(2);
- o = rslot_float(2);
wreg_double(0);
OUT(0xD9);
@@ -1750,7 +1742,7 @@
rw = rwreg_int(0);
OUT(0x81);
- OUT(0xC0|rw);
+ OUT(0xC0|rw);
LOUT(v);
debug(("addl #%d,%s\n", v, regname(rw)));
@@ -1767,7 +1759,7 @@
rw = rwreg_int(0);
OUT(0x81);
- OUT(0xE8|rw);
+ OUT(0xE8|rw);
LOUT(v);
debug(("subl #%d,%s\n", v, regname(rw)));
@@ -1897,7 +1889,7 @@
int v = const_int(2);
OUT(0x81);
- OUT(0xF8|r1);
+ OUT(0xF8|r1);
LOUT(v);
debug(("cmpl #%d,%s\n", v, regname(r1)));
@@ -1924,7 +1916,7 @@
v = const_int(2);
OUT(0xC1);
- OUT(0xE0|rw);
+ OUT(0xE0|rw);
OUT(v);
debug(("shll #%d,%s\n", v, regname(rw)));
diff -Naur kaffe-snap-040708.orig/config/m68k/jit-m68k.def kaffe-snap-040708/config/m68k/jit-m68k.def
--- kaffe-snap-040708.orig/config/m68k/jit-m68k.def Fri Mar 12 19:38:44 2004
+++ kaffe-snap-040708/config/m68k/jit-m68k.def Tue Jul 13 19:35:59 2004
@@ -63,7 +63,7 @@
#ifdef KAFFE_VMDEBUG
int jit_debug = 0;
-#define debug(x) (jit_debug ? printf("%dx:\t", CODEPC), printf x : 0)
+#define debug(x) (jit_debug ? printf("%x:\t", (int)CODEPC), printf x : 0)
#else
#define debug(x) ((void)0)
#endif
@@ -91,8 +91,8 @@
{
debug(("addl #%d, %s\n", imm, regname(dst)));
assert_dreg(dst);
- WOUT = 0xD080 | (dst << 9) | MODE_src_imm;
- LOUT = imm;
+ WOUT(0xD080 | (dst << 9) | MODE_src_imm);
+ LOUT(imm);
}
static inline void
@@ -101,7 +101,7 @@
debug(("addl %s, %s\n", regname(src), regname(dst)));
assert_dreg(src);
assert_dreg(dst);
- WOUT = 0xD080 | (dst << 9) | (MODE_d << 3) | (src & 7);
+ WOUT(0xD080 | (dst << 9) | (MODE_d << 3) | (src & 7));
}
static inline void
@@ -110,8 +110,8 @@
debug(("addaw #%d, %s\n", imm, regname(dst)));
assert_s16(imm);
assert_areg(dst);
- WOUT = 0xD0C0 | ((dst & 7) << 9) | MODE_src_imm;
- WOUT = imm;
+ WOUT(0xD0C0 | ((dst & 7) << 9) | MODE_src_imm);
+ WOUT(imm);
}
static inline void
@@ -119,8 +119,8 @@
{
debug(("addal #%d, %s\n", imm, regname(dst)));
assert_areg(dst);
- WOUT = 0xD1C0 | ((dst & 7) << 9) | MODE_src_imm;
- LOUT = imm;
+ WOUT(0xD1C0 | ((dst & 7) << 9) | MODE_src_imm);
+ LOUT(imm);
}
static inline void
@@ -129,7 +129,7 @@
debug(("addal %s, %s\n", regname(src), regname(dst)));
assert_dreg(src);
assert_areg(dst);
- WOUT = 0xD1C0 | ((dst & 7) << 9) | (MODE_d << 3) | (src & 7);
+ WOUT(0xD1C0 | ((dst & 7) << 9) | (MODE_d << 3) | (src & 7));
}
static inline void
@@ -138,7 +138,7 @@
debug(("addql #%d, %s\n", imm, regname(dst)));
assert(imm >= 1 && imm <= 8);
assert_areg(dst);
- WOUT = 0x5080 | ((imm & 7) << 9) | (MODE_a << 3) | (dst & 7);
+ WOUT(0x5080 | ((imm & 7) << 9) | (MODE_a << 3) | (dst & 7));
}
static inline void
@@ -147,7 +147,7 @@
debug(("addql #%d, %s\n", imm, regname(dst)));
assert(imm >= 1 && imm <= 8);
assert_dreg(dst);
- WOUT = 0x5080 | ((imm & 7) << 9) | (MODE_d << 3) | (dst & 7);
+ WOUT(0x5080 | ((imm & 7) << 9) | (MODE_d << 3) | (dst & 7));
}
static inline void
@@ -156,7 +156,7 @@
debug(("addxl %s, %s\n", regname(src), regname(dst)));
assert_dreg(src);
assert_dreg(dst);
- WOUT = 0xD180 | (dst << 9) | src;
+ WOUT(0xD180 | (dst << 9) | src);
}
static inline void
@@ -164,8 +164,8 @@
{
debug(("andl #0x%x, %s\n", imm, regname(dst)));
assert_dreg(dst);
- WOUT = 0xC080 | (dst << 9) | MODE_src_imm;
- LOUT = imm;
+ WOUT(0xC080 | (dst << 9) | MODE_src_imm);
+ LOUT(imm);
}
static inline void
@@ -174,7 +174,7 @@
debug(("andl %s, %s\n", regname(src), regname(dst)));
assert_dreg(src);
assert_dreg(dst);
- WOUT = 0xC080 | (dst << 9) | (MODE_d << 3) | (src & 7);
+ WOUT(0xC080 | (dst << 9) | (MODE_d << 3) | (src & 7));
}
static inline void
@@ -183,7 +183,7 @@
debug(("asr #%d, %s\n", imm, regname(dst)));
assert_dreg(dst);
assert(imm >= 1 && imm <= 8);
- WOUT = 0xE080 | ((imm & 7) << 9) | dst;
+ WOUT(0xE080 | ((imm & 7) << 9) | dst);
}
static inline void
@@ -192,79 +192,79 @@
debug(("asr %s, %s\n", regname(src), regname(dst)));
assert_dreg(src);
assert_dreg(dst);
- WOUT = 0xE0A0 | ((src & 7) << 9) | dst;
+ WOUT(0xE0A0 | ((src & 7) << 9) | dst);
}
static inline void
op_beq_32(int disp)
{
debug(("beq %+d\n", disp));
- WOUT = 0x67FF;
- LOUT = disp;
+ WOUT(0x67FF);
+ LOUT(disp);
}
static inline void
op_bne_32(int disp)
{
debug(("bne %+d\n", disp));
- WOUT = 0x66FF;
- LOUT = disp;
+ WOUT(0x66FF);
+ LOUT(disp);
}
static inline void
op_blt_32(int disp)
{
debug(("blt %+d\n", disp));
- WOUT = 0x6DFF;
- LOUT = disp;
+ WOUT(0x6DFF);
+ LOUT(disp);
}
static inline void
op_ble_32(int disp)
{
debug(("ble %+d\n", disp));
- WOUT = 0x6FFF;
- LOUT = disp;
+ WOUT(0x6FFF);
+ LOUT(disp);
}
static inline void
op_bgt_32(int disp)
{
debug(("bgt %+d\n", disp));
- WOUT = 0x6EFF;
- LOUT = disp;
+ WOUT(0x6EFF);
+ LOUT(disp);
}
static inline void
op_bge_32(int disp)
{
debug(("bge %+d\n", disp));
- WOUT = 0x6CFF;
- LOUT = disp;
+ WOUT(0x6CFF);
+ LOUT(disp);
}
static inline void
op_blo_32(int disp)
{
debug(("blo %+d\n", disp));
- WOUT = 0x65FF;
- LOUT = disp;
+ WOUT(0x65FF);
+ LOUT(disp);
}
static inline void
op_bra_32(int disp)
{
debug(("bra %+d\n", disp));
- WOUT = 0x60FF;
- LOUT = disp;
+ WOUT(0x60FF);
+ LOUT(disp);
}
static inline void
op_bsr_32(int disp)
{
debug(("bsr %+d\n", disp));
- WOUT = 0x61FF;
- LOUT = disp;
+ WOUT(0x61FF);
+ LOUT(disp);
}
static inline void
@@ -272,7 +272,7 @@
{
debug(("clrl %s\n", regname(dst)));
assert_dreg(dst);
- WOUT = 0x4280 | (MODE_d << 3) | (dst & 7);
+ WOUT(0x4280 | (MODE_d << 3) | (dst & 7));
}
static inline void
@@ -281,7 +281,7 @@
debug(("cmpl %s, %s\n", regname(src1), regname(src2)));
assert_dreg(src1);
assert_dreg(src2);
- WOUT = 0xB080 | (src2 << 9) | (MODE_d << 7) | (src1 & 7);
+ WOUT(0xB080 | (src2 << 9) | (MODE_d << 7) | (src1 & 7));
}
static inline void
@@ -290,7 +290,7 @@
debug(("cmpl %s, %s\n", regname(src1), regname(src2)));
assert_areg(src1);
assert_areg(src2);
- WOUT = 0xB1C0 | (src2 << 9) | (MODE_a << 3) | (src1 & 7);
+ WOUT(0xB1C0 | (src2 << 9) | (MODE_a << 3) | (src1 & 7));
}
static inline void
@@ -298,8 +298,8 @@
{
debug(("cmpil #%d, %s\n", imm, regname(src2)));
assert_areg(src2);
- WOUT = 0x0C80 | (MODE_a << 3) | (src2 & 7);
- LOUT = imm;
+ WOUT(0x0C80 | (MODE_a << 3) | (src2 & 7));
+ LOUT(imm);
}
static inline void
@@ -307,8 +307,8 @@
{
debug(("cmpil #%d, %s\n", imm, regname(src2)));
assert_dreg(src2);
- WOUT = 0x0C80 | (MODE_d << 3) | (src2 & 7);
- LOUT = imm;
+ WOUT(0x0C80 | (MODE_d << 3) | (src2 & 7));
+ LOUT(imm);
}
static inline void
@@ -318,8 +318,8 @@
assert_dreg(src);
assert_dreg(r);
assert_dreg(q);
- WOUT = 0x4C40 | (MODE_d << 3) | (src & 7);
- WOUT = 0x0800 | (q << 12) | r;
+ WOUT(0x4C40 | (MODE_d << 3) | (src & 7));
+ WOUT(0x0800 | (q << 12) | r);
}
static inline void
@@ -328,7 +328,7 @@
debug(("eorl %s, %s\n", regname(src), regname(dst)));
assert_dreg(src);
assert_dreg(dst);
- WOUT = 0xB180 | ((src & 7) << 9) | (MODE_d << 3) | (dst & 7);
+ WOUT(0xB180 | ((src & 7) << 9) | (MODE_d << 3) | (dst & 7));
}
static inline void
@@ -336,7 +336,7 @@
{
debug(("extbl %s\n", regname(dst)));
assert_dreg(dst);
- WOUT = 0x49C0 | dst;
+ WOUT(0x49C0 | dst);
}
static inline void
@@ -344,7 +344,7 @@
{
debug(("extwl %s\n", regname(dst)));
assert_dreg(dst);
- WOUT = 0x48C0 | dst;
+ WOUT(0x48C0 | dst);
}
static inline void
@@ -353,7 +353,7 @@
debug(("exg %s, %s\n", regname(r1), regname(r2)));
assert_areg(r1);
assert_areg(r2);
- WOUT = 0xC148 | ((r1 & 7) << 9) | (r2 & 7);
+ WOUT(0xC148 | ((r1 & 7) << 9) | (r2 & 7));
}
static inline void
@@ -362,7 +362,7 @@
debug(("exg %s, %s\n", regname(r1), regname(r2)));
assert_dreg(r1);
assert_areg(r2);
- WOUT = 0xC188 | (r1 << 9) | (r2 & 7);
+ WOUT(0xC188 | (r1 << 9) | (r2 & 7));
}
static inline void
@@ -371,7 +371,7 @@
debug(("exg %s, %s\n", regname(r1), regname(r2)));
assert_dreg(r1);
assert_dreg(r2);
- WOUT = 0xC140 | (r1 << 9) | r2;
+ WOUT(0xC140 | (r1 << 9) | r2);
}
static inline void
@@ -379,7 +379,7 @@
{
debug(("jmp (%s)\n", regname(dst)));
assert_areg(dst);
- WOUT = 0x4EC0 | (MODE_ind << 3) | (dst & 7);
+ WOUT(0x4EC0 | (MODE_ind << 3) | (dst & 7));
}
static inline void
@@ -387,7 +387,7 @@
{
debug(("jsr (%s)\n", regname(dst)));
assert_areg(dst);
- WOUT = 0x4E80 | (MODE_ind << 3) | (dst & 7);
+ WOUT(0x4E80 | (MODE_ind << 3) | (dst & 7));
}
static inline void
@@ -396,8 +396,8 @@
debug(("linkw %s, #%d\n", regname(areg), disp));
assert_s16(disp);
assert_areg(areg);
- WOUT = 0x4E50 | (areg & 7);
- WOUT = disp;
+ WOUT(0x4E50 | (areg & 7));
+ WOUT(disp);
}
static inline void
@@ -406,7 +406,7 @@
debug(("lsl #%d, %s\n", imm, regname(dst)));
assert_dreg(dst);
assert(imm >= 1 && imm <= 8);
- WOUT = 0xE188 | ((imm & 7) << 9) | dst;
+ WOUT(0xE188 | ((imm & 7) << 9) | dst);
}
static inline void
@@ -415,7 +415,7 @@
debug(("lsl %s, %s\n", regname(src), regname(dst)));
assert_dreg(src);
assert_dreg(dst);
- WOUT = 0xE1A8 | ((src & 7) << 9) | dst;
+ WOUT(0xE1A8 | ((src & 7) << 9) | dst);
}
static inline void
@@ -424,7 +424,7 @@
debug(("lsr #%d, %s\n", imm, regname(dst)));
assert_dreg(dst);
assert(imm >= 1 && imm <= 8);
- WOUT = 0xE088 | ((imm & 7) << 9) | dst;
+ WOUT(0xE088 | ((imm & 7) << 9) | dst);
}
static inline void
@@ -433,7 +433,7 @@
debug(("lsr %s, %s\n", regname(src), regname(dst)));
assert_dreg(src);
assert_dreg(dst);
- WOUT = 0xE0A8 | ((src & 7) << 9) | dst;
+ WOUT(0xE0A8 | ((src & 7) << 9) | dst);
}
static inline void
@@ -442,8 +442,7 @@
debug(("moveb (%s), %s\n", regname(src), regname(dst)));
assert_areg(src);
assert_dreg(dst);
- WOUT = (0x1000 | ((dst & 7) << 9) | (MODE_d << 6)
- | (MODE_ind << 3) | (src & 7));
+ WOUT(0x1000 | ((dst & 7) << 9) | (MODE_d << 6) | (MODE_ind << 3) | (src & 7));
}
static inline void
@@ -452,8 +451,7 @@
debug(("moveb %s, (%s)\n", regname(src), regname(dst)));
assert_dreg(src);
assert_areg(dst);
- WOUT = (0x1000 | ((dst & 7) << 9) | (MODE_ind << 6)
- | (MODE_d << 3) | (src & 7));
+ WOUT(0x1000 | ((dst & 7) << 9) | (MODE_ind << 6) | (MODE_d << 3) | (src & 7));
}
static inline void
@@ -462,8 +460,7 @@
debug(("movew (%s), %s\n", regname(src), regname(dst)));
assert_areg(src);
assert_dreg(dst);
- WOUT = (0x3000 | ((dst & 7) << 9) | (MODE_d << 6)
- | (MODE_ind << 3) | (src & 7));
+ WOUT(0x3000 | ((dst & 7) << 9) | (MODE_d << 6) | (MODE_ind << 3) | (src & 7));
}
static inline void
@@ -472,8 +469,7 @@
debug(("movew %s, (%s)\n", regname(src), regname(dst)));
assert_dreg(src);
assert_areg(dst);
- WOUT = (0x3000 | ((dst & 7) << 9) | (MODE_ind << 6)
- | (MODE_d << 3) | (src & 7));
+ WOUT(0x3000 | ((dst & 7) << 9) | (MODE_ind << 6) | (MODE_d << 3) | (src & 7));
}
static inline void
@@ -483,9 +479,8 @@
assert_areg(src);
assert_areg(base);
assert_s16(disp);
- WOUT = (0x2000 | ((base & 7) << 9) | (MODE_inddisp << 6)
- | (MODE_a << 3) | (src & 7));
- WOUT = disp;
+ WOUT(0x2000 | ((base & 7) << 9) | (MODE_inddisp << 6) | (MODE_a << 3) | (src & 7));
+ WOUT(disp);
}
static inline void
@@ -494,8 +489,7 @@
debug(("movel %s, %s\n", regname(src), regname(dst)));
assert_areg(src);
assert_dreg(dst);
- WOUT = (0x2000 | ((dst & 7) << 9) | (MODE_d << 6)
- | (MODE_a << 3) | (src & 7));
+ WOUT(0x2000 | ((dst & 7) << 9) | (MODE_d << 6) | (MODE_a << 3) | (src & 7));
}
static inline void
@@ -504,8 +498,7 @@
debug(("movel %s, %s\n", regname(src), regname(dst)));
assert_dreg(src);
assert_dreg(dst);
- WOUT = (0x2000 | ((dst & 7) << 9) | (MODE_d << 6)
- | (MODE_d << 3) | (src & 7));
+ WOUT(0x2000 | ((dst & 7) << 9) | (MODE_d << 6) | (MODE_d << 3) | (src & 7));
}
static inline void
@@ -515,9 +508,8 @@
assert_dreg(src);
assert_areg(base);
assert_s16(disp);
- WOUT = (0x2000 | ((base & 7) << 9) | (MODE_inddisp << 6)
- | (MODE_d << 3) | (src & 7));
- WOUT = disp;
+ WOUT(0x2000 | ((base & 7) << 9) | (MODE_inddisp << 6) | (MODE_d << 3) | (src & 7));
+ WOUT(disp);
}
static inline void
@@ -525,8 +517,8 @@
{
debug(("movel #%d, %s\n", imm, regname(dst)));
assert_dreg(dst);
- WOUT = 0x2000 | ((dst & 7) << 9) | (MODE_d << 6) | MODE_src_imm;
- LOUT = imm;
+ WOUT(0x2000 | ((dst & 7) << 9) | (MODE_d << 6) | MODE_src_imm);
+ LOUT(imm);
}
static inline void
@@ -535,8 +527,7 @@
debug(("movel (%s), %s\n", regname(src), regname(dst)));
assert_areg(src);
assert_dreg(dst);
- WOUT = (0x2000 | ((dst & 7) << 9) | (MODE_d << 6)
- | (MODE_ind << 3) | (src & 7));
+ WOUT(0x2000 | ((dst & 7) << 9) | (MODE_d << 6) | (MODE_ind << 3) | (src & 7));
}
static inline void
@@ -545,8 +536,7 @@
debug(("movel %s, (%s)\n", regname(src), regname(dst)));
assert_areg(src);
assert_areg(dst);
- WOUT = (0x2000 | ((dst & 7) << 9) | (MODE_ind << 6)
- | (MODE_a << 3) | (src & 7));
+ WOUT(0x2000 | ((dst & 7) << 9) | (MODE_ind << 6) | (MODE_a << 3) | (src & 7));
}
static inline void
@@ -555,8 +545,7 @@
debug(("movel %s, (%s)\n", regname(src), regname(dst)));
assert_dreg(src);
assert_areg(dst);
- WOUT = (0x2000 | ((dst & 7) << 9) | (MODE_ind << 6)
- | (MODE_d << 3) | (src & 7));
+ WOUT(0x2000 | ((dst & 7) << 9) | (MODE_ind << 6) | (MODE_d << 3) | (src & 7));
}
static inline void
@@ -564,8 +553,8 @@
{
debug(("movel #%d, -(%s)\n", imm, regname(dst)));
assert_areg(dst);
- WOUT = 0x2000 | ((dst & 7) << 9) | (MODE_predec << 6) | MODE_src_imm;
- LOUT = imm;
+ WOUT(0x2000 | ((dst & 7) << 9) | (MODE_predec << 6) | MODE_src_imm);
+ LOUT(imm);
}
static inline void
@@ -574,8 +563,7 @@
debug(("movel %s, -(%s)\n", regname(src), regname(dst)));
assert_areg(src);
assert_areg(dst);
- WOUT = (0x2000 | ((dst & 7) << 9) | (MODE_predec << 6)
- | (MODE_a << 3) | (src & 7));
+ WOUT(0x2000 | ((dst & 7) << 9) | (MODE_predec << 6) | (MODE_a << 3) | (src & 7));
}
static inline void
@@ -584,8 +572,7 @@
debug(("movel %s, -(%s)\n", regname(src), regname(dst)));
assert_dreg(src);
assert_areg(dst);
- WOUT = (0x2000 | ((dst & 7) << 9) | (MODE_predec << 6)
- | (MODE_d << 3) | (src & 7));
+ WOUT(0x2000 | ((dst & 7) << 9) | (MODE_predec << 6) | (MODE_d << 3) | (src & 7));
}
static inline void
@@ -595,9 +582,8 @@
assert_areg(base);
assert_s16(disp);
assert_areg(dst);
- WOUT = (0x2000 | ((dst & 7) << 9) | (MODE_predec << 6)
- | (MODE_inddisp << 3) | (base & 7));
- WOUT = disp;
+ WOUT(0x2000 | ((dst & 7) << 9) | (MODE_predec << 6) | (MODE_inddisp << 3) | (base & 7));
+ WOUT(disp);
}
static inline void
@@ -607,9 +593,8 @@
assert_areg(base);
assert_s16(disp);
assert_dreg(dst);
- WOUT = (0x2000 | ((dst & 7) << 9) | (MODE_d << 6)
- | (MODE_inddisp << 3) | (base & 7));
- WOUT = disp;
+ WOUT(0x2000 | ((dst & 7) << 9) | (MODE_d << 6) | (MODE_inddisp << 3) | (base & 7));
+ WOUT(disp);
}
static inline void
@@ -618,7 +603,7 @@
debug(("moveal %s, %s\n", regname(src), regname(dst)));
assert_areg(src);
assert_areg(dst);
- WOUT = 0x2040 | ((dst & 7) << 9) | (MODE_a << 3) | (src & 7);
+ WOUT(0x2040 | ((dst & 7) << 9) | (MODE_a << 3) | (src & 7));
}
static inline void
@@ -627,7 +612,7 @@
debug(("moveal (%s), %s\n", regname(src), regname(dst)));
assert_areg(src);
assert_areg(dst);
- WOUT = 0x2040 | ((dst & 7) << 9) | (MODE_ind << 3) | (src & 7);
+ WOUT(0x2040 | ((dst & 7) << 9) | (MODE_ind << 3) | (src & 7));
}
static inline void
@@ -637,8 +622,8 @@
assert_areg(base);
assert_s16(disp);
assert_areg(dst);
- WOUT = 0x2040 | ((dst & 7) << 9) | (MODE_inddisp << 3) | (base & 7);
- WOUT = disp;
+ WOUT(0x2040 | ((dst & 7) << 9) | (MODE_inddisp << 3) | (base & 7));
+ WOUT(disp);
}
static inline void
@@ -646,8 +631,8 @@
{
debug(("moveal #0x%x, %s\n", imm, regname(dst)));
assert_areg(dst);
- WOUT = 0x2040 | ((dst & 7) << 9) | MODE_src_imm;
- LOUT = imm;
+ WOUT(0x2040 | ((dst & 7) << 9) | MODE_src_imm);
+ LOUT(imm);
}
static inline void
@@ -656,8 +641,8 @@
debug(("moveml 0x%04x, %d(%s)\n", mask, disp, regname(areg)));
assert_s16(disp);
assert_areg(areg);
- WOUT = 0x48C0 | (MODE_inddisp << 3) | (areg & 7);
- WOUT = mask;
+ WOUT(0x48C0 | (MODE_inddisp << 3) | (areg & 7));
+ WOUT(mask);
}
static inline void
@@ -666,8 +651,8 @@
debug(("moveml %d(%s), 0x%04x\n", disp, regname(areg), mask));
assert_s16(disp);
assert_areg(areg);
- WOUT = 0x4CC0 | (MODE_inddisp << 3) | (areg & 7);
- WOUT = mask;
+ WOUT(0x4CC0 | (MODE_inddisp << 3) | (areg & 7));
+ WOUT(mask);
}
static inline void
@@ -676,7 +661,7 @@
debug(("moveq #%d, %s\n", imm, regname(dst)));
assert_dreg(dst);
assert_s8(imm);
- WOUT = 0x7000 | (dst << 9) | (imm & 0xFF);
+ WOUT(0x7000 | (dst << 9) | (imm & 0xFF));
}
static inline void
@@ -684,9 +669,9 @@
{
debug(("mulsl #%d, %s\n", imm, regname(dst)));
assert_dreg(dst);
- WOUT = 0x4C00 | MODE_src_imm;
- WOUT = 0x0800 | (dst << 12);
- LOUT = imm;
+ WOUT(0x4C00 | MODE_src_imm);
+ WOUT(0x0800 | (dst << 12));
+ LOUT(imm);
}
static inline void
@@ -695,8 +680,8 @@
debug(("mulsl %s, %s\n", regname(src), regname(dst)));
assert_dreg(src);
assert_dreg(dst);
- WOUT = 0x4C00 | (MODE_d << 3) | src;
- WOUT = 0x0800 | (dst << 12);
+ WOUT(0x4C00 | (MODE_d << 3) | src);
+ WOUT(0x0800 | (dst << 12));
}
static inline void
@@ -704,7 +689,7 @@
{
debug(("negl %s\n", regname(dst)));
assert_dreg(dst);
- WOUT = 0x4480 | (MODE_d << 3) | dst;
+ WOUT(0x4480 | (MODE_d << 3) | dst);
}
static inline void
@@ -712,14 +697,14 @@
{
debug(("negxl %s\n", regname(dst)));
assert_dreg(dst);
- WOUT = 0x4080 | (MODE_d << 3) | dst;
+ WOUT(0x4080 | (MODE_d << 3) | dst);
}
static inline void
op_nop(void)
{
debug(("nop\n"));
- WOUT = 0x4E71;
+ WOUT(0x4E71);
}
static inline void
@@ -728,22 +713,22 @@
debug(("orl %s, %s\n", regname(src), regname(dst)));
assert_dreg(src);
assert_dreg(dst);
- WOUT = 0x8080 | (dst << 9) | (MODE_d << 3) | src;
+ WOUT(0x8080 | (dst << 9) | (MODE_d << 3) | src);
}
static inline void
op_pea_l(int addr)
{
debug(("pea 0x%08x\n", addr));
- WOUT = 0x4840 | MODE_src_absl;
- LOUT = addr;
+ WOUT(0x4840 | MODE_src_absl);
+ LOUT(addr);
}
static inline void
op_rts(void)
{
debug(("rts\n"));
- WOUT = 0x4E75;
+ WOUT(0x4E75);
}
static inline void
@@ -751,8 +736,8 @@
{
debug(("subl #%d, %s\n", imm, regname(dst)));
assert_dreg(dst);
- WOUT = 0x9080 | (dst << 9) | MODE_src_imm;
- LOUT = imm;
+ WOUT(0x9080 | (dst << 9) | MODE_src_imm);
+ LOUT(imm);
}
static inline void
@@ -761,7 +746,7 @@
debug(("subl %s, %s\n", regname(src), regname(dst)));
assert_dreg(src);
assert_dreg(dst);
- WOUT = 0x9080 | (dst << 9) | (MODE_d << 3) | src;
+ WOUT(0x9080 | (dst << 9) | (MODE_d << 3) | src);
}
static inline void
@@ -770,8 +755,8 @@
debug(("subaw #%d, %s\n", disp, regname(dst)));
assert_s16(disp);
assert_areg(dst);
- WOUT = 0x90C0 | ((dst & 7) << 9) | MODE_src_imm;
- WOUT = disp;
+ WOUT(0x90C0 | ((dst & 7) << 9) | MODE_src_imm);
+ WOUT(disp);
}
static inline void
@@ -780,7 +765,7 @@
debug(("subql #%d, %s\n", imm, regname(dst)));
assert(imm >= 1 && imm <= 8);
assert_dreg(dst);
- WOUT = 0x5180 | ((imm & 7) << 9) | (MODE_d << 3) | dst;
+ WOUT(0x5180 | ((imm & 7) << 9) | (MODE_d << 3) | dst);
}
static inline void
@@ -789,7 +774,7 @@
debug(("subxl %s, %s\n", regname(src), regname(dst)));
assert_dreg(src);
assert_dreg(dst);
- WOUT = 0x9180 | (dst << 9) | src;
+ WOUT(0x9180 | (dst << 9) | src);
}
static inline void
@@ -797,7 +782,7 @@
{
debug(("tst %s\n", regname(src)));
assert_areg(src);
- WOUT = 0x4A80 | (MODE_a << 3) | (src & 7);
+ WOUT(0x4A80 | (MODE_a << 3) | (src & 7));
}
static inline void
@@ -805,7 +790,7 @@
{
debug(("tst %s\n", regname(src)));
assert_dreg(src);
- WOUT = 0x4A80 | (MODE_d << 3) | (src & 7);
+ WOUT(0x4A80 | (MODE_d << 3) | (src & 7));
}
static inline void
@@ -813,7 +798,7 @@
{
debug(("unlk %s\n", regname(areg)));
assert_areg(areg);
- WOUT = 0x4E58 | (areg & 7);
+ WOUT(0x4E58 | (areg & 7));
}
/* --------------------------------------------------------------------- */
@@ -823,8 +808,8 @@
{
assert_freg(src);
assert_freg(dst);
- WOUT = 0xF000 | (COPROCID << 9);
- WOUT = ((src & 7) << 10) | ((dst & 7) << 7) | opmode;
+ WOUT(0xF000 | (COPROCID << 9));
+ WOUT(((src & 7) << 10) | ((dst & 7) << 7) | opmode);
}
static inline void
@@ -861,8 +846,8 @@
debug(("fmoves %s, (%s)\n", regname(src), regname(base)));
assert_freg(src);
assert_areg(base);
- WOUT = 0xF000 | (COPROCID << 9) | (MODE_ind << 3) | (base & 7);
- WOUT = 0x6400 | ((src & 7) << 7);
+ WOUT(0xF000 | (COPROCID << 9) | (MODE_ind << 3) | (base & 7));
+ WOUT(0x6400 | ((src & 7) << 7));
}
static inline void
@@ -871,8 +856,8 @@
debug(("fmoves %s, -(%s)\n", regname(src), regname(base)));
assert_freg(src);
assert_areg(base);
- WOUT = 0xF000 | (COPROCID << 9) | (MODE_predec << 3) | (base & 7);
- WOUT = 0x6400 | ((src & 7) << 7);
+ WOUT(0xF000 | (COPROCID << 9) | (MODE_predec << 3) | (base & 7));
+ WOUT(0x6400 | ((src & 7) << 7));
}
static inline void
@@ -882,9 +867,9 @@
assert_freg(src);
assert_areg(base);
assert_s16(disp);
- WOUT = 0xF000 | (COPROCID << 9) | (MODE_inddisp << 3) | (base & 7);
- WOUT = 0x6400 | ((src & 7) << 7);
- WOUT = disp;
+ WOUT(0xF000 | (COPROCID << 9) | (MODE_inddisp << 3) | (base & 7));
+ WOUT(0x6400 | ((src & 7) << 7));
+ WOUT(disp);
}
static inline void
@@ -893,8 +878,8 @@
debug(("fmoves %s, %s\n", regname(src), regname(dst)));
assert_freg(src);
assert_dreg(dst);
- WOUT = 0xF000 | (COPROCID << 9) | (MODE_d << 3) | (dst & 7);
- WOUT = 0x6400 | ((src & 7) << 7);
+ WOUT(0xF000 | (COPROCID << 9) | (MODE_d << 3) | (dst & 7));
+ WOUT(0x6400 | ((src & 7) << 7));
}
static inline void
@@ -903,8 +888,8 @@
debug(("fmoved %s, (%s)\n", regname(src), regname(base)));
assert_freg(src);
assert_areg(base);
- WOUT = 0xF000 | (COPROCID << 9) | (MODE_ind << 3) | (base & 7);
- WOUT = 0x7400 | ((src & 7) << 7);
+ WOUT(0xF000 | (COPROCID << 9) | (MODE_ind << 3) | (base & 7));
+ WOUT(0x7400 | ((src & 7) << 7));
}
static inline void
@@ -913,8 +898,8 @@
debug(("fmoved %s, -(%s)\n", regname(src), regname(base)));
assert_freg(src);
assert_areg(base);
- WOUT = 0xF000 | (COPROCID << 9) | (MODE_predec << 3) | (base & 7);
- WOUT = 0x7400 | ((src & 7) << 7);
+ WOUT(0xF000 | (COPROCID << 9) | (MODE_predec << 3) | (base & 7));
+ WOUT(0x7400 | ((src & 7) << 7));
}
static inline void
@@ -924,9 +909,9 @@
assert_freg(src);
assert_areg(base);
assert_s16(disp);
- WOUT = 0xF000 | (COPROCID << 9) | (MODE_inddisp << 3) | (base & 7);
- WOUT = 0x7400 | ((src & 7) << 7);
- WOUT = disp;
+ WOUT(0xF000 | (COPROCID << 9) | (MODE_inddisp << 3) | (base & 7));
+ WOUT(0x7400 | ((src & 7) << 7));
+ WOUT(disp);
}
static inline void
@@ -935,8 +920,8 @@
debug(("fsmoves %s, %s\n", regname(src), regname(dst)));
assert_dreg(src);
assert_freg(dst);
- WOUT = 0xF000 | (COPROCID << 9) | (MODE_d << 3) | (src & 7);
- WOUT = 0x4400 | ((dst & 7) << 7) | OPMODE_s;
+ WOUT(0xF000 | (COPROCID << 9) | (MODE_d << 3) | (src & 7));
+ WOUT(0x4400 | ((dst & 7) << 7) | OPMODE_s);
}
static inline void
@@ -945,8 +930,8 @@
debug(("fsmoves (%s), %s\n", regname(base), regname(dst)));
assert_areg(base);
assert_freg(dst);
- WOUT = 0xF000 | (COPROCID << 9) | (MODE_ind << 3) | (base & 7);
- WOUT = 0x4400 | ((dst & 7) << 7) | OPMODE_s;
+ WOUT(0xF000 | (COPROCID << 9) | (MODE_ind << 3) | (base & 7));
+ WOUT(0x4400 | ((dst & 7) << 7) | OPMODE_s);
}
static inline void
@@ -955,8 +940,8 @@
debug(("fdmoved (%s), %s\n", regname(base), regname(dst)));
assert_areg(base);
assert_freg(dst);
- WOUT = 0xF000 | (COPROCID << 9) | (MODE_ind << 3) | (base & 7);
- WOUT = 0x5400 | ((dst & 7) << 7) | OPMODE_d;
+ WOUT(0xF000 | (COPROCID << 9) | (MODE_ind << 3) | (base & 7));
+ WOUT(0x5400 | ((dst & 7) << 7) | OPMODE_d);
}
static inline void
@@ -966,9 +951,9 @@
assert_areg(base);
assert_s16(disp);
assert_freg(dst);
- WOUT = 0xF000 | (COPROCID << 9) | (MODE_inddisp << 3) | (base & 7);
- WOUT = 0x4400 | ((dst & 7) << 7) | OPMODE_s;
- WOUT = disp;
+ WOUT(0xF000 | (COPROCID << 9) | (MODE_inddisp << 3) | (base & 7));
+ WOUT(0x4400 | ((dst & 7) << 7) | OPMODE_s);
+ WOUT(disp);
}
static inline void
@@ -978,9 +963,9 @@
assert_areg(base);
assert_s16(disp);
assert_freg(dst);
- WOUT = 0xF000 | (COPROCID << 9) | (MODE_inddisp << 3) | (base & 7);
- WOUT = 0x5400 | ((dst & 7) << 7) | OPMODE_d;
- WOUT = disp;
+ WOUT(0xF000 | (COPROCID << 9) | (MODE_inddisp << 3) | (base & 7));
+ WOUT(0x5400 | ((dst & 7) << 7) | OPMODE_d);
+ WOUT(disp);
}
static inline void
@@ -989,8 +974,8 @@
debug(("fsmovel %s, %s\n", regname(src), regname(dst)));
assert_dreg(src);
assert_freg(dst);
- WOUT = 0xF000 | (COPROCID << 9) | (MODE_d << 3) | (src & 7);
- WOUT = 0x4000 | ((dst & 7) << 7) | OPMODE_s;
+ WOUT(0xF000 | (COPROCID << 9) | (MODE_d << 3) | (src & 7));
+ WOUT(0x4000 | ((dst & 7) << 7) | OPMODE_s);
}
static inline void
@@ -999,8 +984,8 @@
debug(("fdmovel %s, %s\n", regname(src), regname(dst)));
assert_dreg(src);
assert_freg(dst);
- WOUT = 0xF000 | (COPROCID << 9) | (MODE_d << 3) | (src & 7);
- WOUT = 0x4000 | ((dst & 7) << 7) | OPMODE_d;
+ WOUT(0xF000 | (COPROCID << 9) | (MODE_d << 3) | (src & 7));
+ WOUT(0x4000 | ((dst & 7) << 7) | OPMODE_d);
}
static inline void
@@ -1009,8 +994,8 @@
debug(("fsmovex %s, %s\n", regname(src), regname(dst)));
assert_freg(src);
assert_freg(dst);
- WOUT = 0xF000 | (COPROCID << 9);
- WOUT = ((src & 7) << 10) | ((dst & 7) << 7) | OPMODE_s;
+ WOUT(0xF000 | (COPROCID << 9));
+ WOUT(((src & 7) << 10) | ((dst & 7) << 7) | OPMODE_s);
}
static inline void
@@ -1019,8 +1004,8 @@
debug(("fdmovex %s, %s\n", regname(src), regname(dst)));
assert_freg(src);
assert_freg(dst);
- WOUT = 0xF000 | (COPROCID << 9);
- WOUT = ((src & 7) << 10) | ((dst & 7) << 7) | OPMODE_d;
+ WOUT(0xF000 | (COPROCID << 9));
+ WOUT(((src & 7) << 10) | ((dst & 7) << 7) | OPMODE_d);
}
static inline void
@@ -1029,8 +1014,8 @@
debug(("fmovemx 0x%02x, %d(%s)\n", mask, disp, regname(base)));
assert_s16(disp);
assert_areg(base);
- WOUT = 0xF000 | (COPROCID << 9) | (MODE_inddisp << 3) | (base & 7);
- WOUT = 0xD000 | mask;
+ WOUT(0xF000 | (COPROCID << 9) | (MODE_inddisp << 3) | (base & 7));
+ WOUT(0xD000 | mask);
}
static inline void
@@ -1039,8 +1024,8 @@
debug(("fmovemx %d(%s), 0x%02x\n", disp, regname(base), mask));
assert_s16(disp);
assert_areg(base);
- WOUT = 0xF000 | (COPROCID << 9) | (MODE_inddisp << 3) | (base & 7);
- WOUT = 0xE000 | mask;
+ WOUT(0xF000 | (COPROCID << 9) | (MODE_inddisp << 3) | (base & 7));
+ WOUT(0xE000 | mask);
}
static inline void
@@ -1993,7 +1978,7 @@
jint val = const_int(2);
debug((".long %08x\n", val));
- LOUT = val;
+ LOUT(val);
}
define_insn(build_code_ref, set_wordpc_xxC)
@@ -2005,7 +1990,7 @@
l->from = 0;
debug((".long ?\n"));
- LOUT = 0;
+ LOUT(0);
}
/* --------------------------------------------------------------------- */
diff -Naur kaffe-snap-040708.orig/config/m68k/jit3-m68k.def kaffe-snap-040708/config/m68k/jit3-m68k.def
--- kaffe-snap-040708.orig/config/m68k/jit3-m68k.def Tue Jun 1 02:15:10 2004
+++ kaffe-snap-040708/config/m68k/jit3-m68k.def Tue Jul 13 19:35:19 2004
@@ -1126,7 +1126,7 @@
debug(("fsmovex %s, %s\n", regname(src), regname(dst)));
assert_freg(src);
assert_freg(dst);
- WOUT(0xF000 | (COPROCID << 9));
+ WOUT(0xF000 | (COPROCID << 9));
WOUT(((src & 7) << 10) | ((dst & 7) << 7) | OPMODE_s);
}
@@ -1136,7 +1136,7 @@
debug(("fdmovex %s, %s\n", regname(src), regname(dst)));
assert_freg(src);
assert_freg(dst);
- WOUT(0xF000 | (COPROCID << 9));
+ WOUT(0xF000 | (COPROCID << 9));
WOUT(((src & 7) << 10) | ((dst & 7) << 7) | OPMODE_d);
}
diff -Naur kaffe-snap-040708.orig/kaffe/kaffevm/jit/funcs.c kaffe-snap-040708/kaffe/kaffevm/jit/funcs.c
--- kaffe-snap-040708.orig/kaffe/kaffevm/jit/funcs.c Mon Jun 14 09:12:37 1999
+++ kaffe-snap-040708/kaffe/kaffevm/jit/funcs.c Tue Jul 13 16:32:20 2004
@@ -8,7 +8,6 @@
*/
#include "config.h"
-#include "debug.h"
#include "config-std.h"
#include "gtypes.h"
#include "seq.h"
@@ -20,14 +19,14 @@
#include "errors.h"
#include "machine.h"
#include "md.h"
+#include "debug.h"
/* XXX: HUGE name clash: machine.h defines a define_insn for use in
* kaffe.def. The define_insn below, however, is used in jit.def
*
* We must rename one or the other!
*/
-#undef define_insn
-
+#undef define_insn
#define define_insn(n, i) void i (sequence* s)
#define ALIGN(byte) \
@@ -35,11 +34,34 @@
? CODEPC + (byte) - (CODEPC % (byte)) \
: CODEPC))
-#define OUT (codeblock[CODEPC++])
-#define BOUT (*(uint8*)&codeblock[CODEPC++])
-#define WOUT (*(uint16*)&codeblock[(CODEPC += 2) - 2])
-#define LOUT (*(uint32*)&codeblock[(CODEPC += 4) - 4])
-#define QOUT (*(uint64*)&codeblock[(CODEPC += 8) - 8])
+#if defined(KAFFE_VMDEBUG)
+/*
+ * Print any labels that refer to the current address.
+ */
+static
+void printCodeLabels(void)
+{
+ label *il, *curr = 0;
+
+ while( (il = getInternalLabel(&curr, CODEPC)) )
+ {
+ kaffe_dprintf("%s:\n", il->name);
+ }
+}
+#undef OUT
+#define OUT(v) do { DBGEXPR(JIT,(void)printCodeLabels(),0),codeblock[CODEPC] = v; CODEPC++; } while (0)
+#define BOUT(v) do { DBGEXPR(JIT,(void)printCodeLabels(),0),*(uint8*)&codeblock[CODEPC] = v; CODEPC++; } while (0)
+#define WOUT(v) do { DBGEXPR(JIT,(void)printCodeLabels(),0),*(uint16*)&codeblock[CODEPC] = v; CODEPC += 2; } while (0)
+#define LOUT(v) do { DBGEXPR(JIT,(void)printCodeLabels(),0),*(uint32*)&codeblock[CODEPC] = v; CODEPC += 4; } while (0)
+#define QOUT(v) do { DBGEXPR(JIT,(void)printCodeLabels(),0),*(uint64*)&codeblock[CODEPC] = v; CODEPC += 8; } while (0)
+#else
+#undef OUT
+#define OUT(v) do { codeblock[CODEPC] = v; CODEPC++; } while (0)
+#define BOUT(v) do { *(uint8*)&codeblock[CODEPC] = v; CODEPC++; } while (0)
+#define WOUT(v) do { *(uint16*)&codeblock[CODEPC] = v; CODEPC += 2; } while (0)
+#define LOUT(v) do { *(uint32*)&codeblock[CODEPC] = v; CODEPC += 4; } while (0)
+#define QOUT(v) do { *(uint64*)&codeblock[CODEPC] = v; CODEPC += 8; } while (0)
+#endif
#include "jit.def"
#include "trampolines.c"
More information about the kaffe
mailing list