From 6170faf3345aa58d0d36f972bd4bf7b63f40df75 Mon Sep 17 00:00:00 2001 From: florian Date: Mon, 22 Dec 2003 19:00:17 +0000 Subject: [PATCH] * fixed some x86-64 issues --- compiler/cg64f64.pas | 7 +++++-- compiler/cgobj.pas | 7 +++++-- compiler/ncgutil.pas | 13 ++++++++----- compiler/x86_64/cgcpu.pas | 7 +++++-- compiler/x86_64/cpubase.inc | 30 +++++------------------------- compiler/x86_64/cpuinfo.pas | 8 ++++++-- 6 files changed, 34 insertions(+), 38 deletions(-) diff --git a/compiler/cg64f64.pas b/compiler/cg64f64.pas index 1490dcc21a..e17663af67 100644 --- a/compiler/cg64f64.pas +++ b/compiler/cg64f64.pas @@ -34,7 +34,7 @@ unit cg64f64; uses aasmbase,aasmtai,aasmcpu, cpuinfo, cpubase, - cginfo, cgobj, + cgbase,cgobj, symtype; type @@ -223,7 +223,10 @@ unit cg64f64; end. { $Log$ - Revision 1.8 2003-06-03 21:11:09 peter + Revision 1.9 2003-12-22 19:00:17 florian + * fixed some x86-64 issues + + Revision 1.8 2003/06/03 21:11:09 peter * cg.a_load_* get a from and to size specifier * makeregsize only accepts newregister * i386 uses generic tcgnotnode,tcgunaryminus diff --git a/compiler/cgobj.pas b/compiler/cgobj.pas index 7c6cb67023..ec3d5b3399 100644 --- a/compiler/cgobj.pas +++ b/compiler/cgobj.pas @@ -831,7 +831,7 @@ implementation if (locpara.size in [OS_S64,OS_64]) then begin {$ifdef cpu64bit} - ungetregisterint(list,locpara.register64); + ungetregister(list,locpara.register64); {$else cpu64bit} getexplicitregister(list,locpara.registerlow); getexplicitregister(list,locpara.registerhigh); @@ -1986,7 +1986,10 @@ finalization end. { $Log$ - Revision 1.141 2003-12-21 19:42:42 florian + Revision 1.142 2003-12-22 19:00:17 florian + * fixed some x86-64 issues + + Revision 1.141 2003/12/21 19:42:42 florian * fixed ppc inlining stuff * fixed wrong unit writing + added some sse stuff diff --git a/compiler/ncgutil.pas b/compiler/ncgutil.pas index c8c79f9594..f0b00e6c23 100644 --- a/compiler/ncgutil.pas +++ b/compiler/ncgutil.pas @@ -31,9 +31,9 @@ interface globtype, cpubase,cgbase, aasmbase,aasmtai,aasmcpu, - symconst,symbase,symdef,symsym,symtype,symtable, + symconst,symbase,symdef,symsym,symtype,symtable {$ifndef cpu64bit} - cg64f32 + ,cg64f32 {$endif cpu64bit} ; @@ -501,7 +501,7 @@ implementation else begin location_release(list,l); - hregister:=cg.getregisterint(list,OS_INT); + hregister:=cg.getintregister(list,OS_INT); end; { load value in low register } case l.loc of @@ -543,7 +543,7 @@ implementation else begin location_release(list,l); - hregister:=cg.getregisterint(list,OS_INT); + hregister:=cg.getintregister(list,OS_INT); end; end; hregister:=cg.makeregsize(hregister,dst_size); @@ -2001,7 +2001,10 @@ implementation end. { $Log$ - Revision 1.174 2003-12-07 16:28:30 jonas + Revision 1.175 2003-12-22 19:00:17 florian + * fixed some x86-64 issues + + Revision 1.174 2003/12/07 16:28:30 jonas * fixed typo found by Charlie Revision 1.173 2003/12/06 01:15:22 florian diff --git a/compiler/x86_64/cgcpu.pas b/compiler/x86_64/cgcpu.pas index 339b00baf3..14fc89f82c 100644 --- a/compiler/x86_64/cgcpu.pas +++ b/compiler/x86_64/cgcpu.pas @@ -29,7 +29,7 @@ unit cgcpu; interface uses - cginfo,cgbase,cgobj,cg64f64,cgx86, + cgbase,cgobj,cg64f64,cgx86, aasmbase,aasmtai,aasmcpu, cpubase,cpuinfo,cpupara, node,symconst; @@ -192,7 +192,10 @@ begin end. { $Log$ - Revision 1.5 2003-09-25 13:13:32 florian + Revision 1.6 2003-12-22 19:00:17 florian + * fixed some x86-64 issues + + Revision 1.5 2003/09/25 13:13:32 florian * more x86-64 fixes Revision 1.4 2003/04/30 15:45:35 florian diff --git a/compiler/x86_64/cpubase.inc b/compiler/x86_64/cpubase.inc index 44671c1824..55c02c9c5b 100644 --- a/compiler/x86_64/cpubase.inc +++ b/compiler/x86_64/cpubase.inc @@ -51,31 +51,8 @@ const *****************************************************************************} const - firstsaveintreg = RS_RAX; - lastsaveintreg = RS_R15; - firstsavefpureg = RS_INVALID; - lastsavefpureg = RS_INVALID; - firstsavemmreg = RS_MM0; - lastsavemmreg = RS_MM15; - - general_registers = [RS_EAX,RS_EBX,RS_ECX,RS_EDX]; - general_superregisters = [RS_RAX,RS_RBX,RS_RCX,RS_RDX]; - - usableregsint = [first_int_imreg..last_int_imreg]; c_countusableregsint = 4; - maxaddrregs = 0; - usableregsaddr = []; - c_countusableregsaddr = 0; - - maxvarregs = 4; - varregs : array[1..maxvarregs] of tsuperregister = - (RS_EBX,RS_EDX,RS_ECX,RS_EAX); - - maxfpuvarregs = 8; - fpuvarregs : Array [1..maxfpuvarregs] of Tsuperregister = - (RS_MM8,RS_MM9,RS_MM10,RS_MM11,RS_MM12,RS_MM13,RS_MM14,RS_MM15); - {***************************************************************************** GDB Information *****************************************************************************} @@ -112,7 +89,7 @@ const RS_STACK_POINTER_REG = RS_RSP; NR_STACK_POINTER_REG = NR_RSP; {# Frame pointer register } - RS_FRAME_POINTER_REG = RS_EBP; + RS_FRAME_POINTER_REG = RS_RBP; NR_FRAME_POINTER_REG = NR_RBP; { Register for addressing absolute data in a position independant way, such as in PIC code. The exact meaning is ABI specific. For @@ -158,7 +135,10 @@ const { $Log$ - Revision 1.8 2003-09-25 13:13:32 florian + Revision 1.9 2003-12-22 19:00:17 florian + * fixed some x86-64 issues + + Revision 1.8 2003/09/25 13:13:32 florian * more x86-64 fixes Revision 1.7 2003/09/24 17:12:02 florian diff --git a/compiler/x86_64/cpuinfo.pas b/compiler/x86_64/cpuinfo.pas index 826e45dea0..94293f417a 100644 --- a/compiler/x86_64/cpuinfo.pas +++ b/compiler/x86_64/cpuinfo.pas @@ -49,7 +49,8 @@ Type ts32real = single; ts64real = double; ts80real = extended; - ts64comp = extended; + ts128real = type extended; + ts64comp = type extended; pbestreal=^bestreal; @@ -106,7 +107,10 @@ Implementation end. { $Log$ - Revision 1.8 2003-12-20 12:38:51 florian + Revision 1.9 2003-12-22 19:00:17 florian + * fixed some x86-64 issues + + Revision 1.8 2003/12/20 12:38:51 florian * some x86-64 compilation fixe Revision 1.7 2003/09/24 17:12:02 florian