|
@@ -66,6 +66,20 @@ const
|
|
|
{$endif}
|
|
|
{$endif}
|
|
|
|
|
|
+{*****************************************************************************
|
|
|
+ Default generic sizes
|
|
|
+*****************************************************************************}
|
|
|
+
|
|
|
+ {# Defines the default address size for a processor, }
|
|
|
+ OS_ADDR = OS_32;
|
|
|
+ {# the natural int size for a processor, }
|
|
|
+ OS_INT = OS_32;
|
|
|
+ {# the maximum float size for a processor, }
|
|
|
+ OS_FLOAT = OS_F64;
|
|
|
+ {# the size of a vector register for a processor }
|
|
|
+ OS_VECTOR = OS_M128;
|
|
|
+
|
|
|
+
|
|
|
type
|
|
|
TAsmOp=(A_None,
|
|
|
{ normal opcodes }
|
|
@@ -197,6 +211,20 @@ Const
|
|
|
'XER','LR','CTR','FPSCR'
|
|
|
);
|
|
|
|
|
|
+ std_reg2str : reg2strtable = ('',
|
|
|
+ 'r0','r1','r2','r3','r4','r5','r6','r7','r8','r9','r10','r11','r12','r13',
|
|
|
+ 'r14','r15','r16','r17','r18','r19','r20','r21','r22','r23','r24','r25',
|
|
|
+ 'r26','r27','r28','r29','r30','r31',
|
|
|
+ 'F0','F1','F2','F3','F4','F5','F6','F7', 'F8','F9','F10','F11','F12',
|
|
|
+ 'F13','F14','F15','F16','F17', 'F18','F19','F20','F21','F22', 'F23','F24',
|
|
|
+ 'F25','F26','F27','F28','F29','F30','F31',
|
|
|
+ 'M0','M1','M2','M3','M4','M5','M6','M7','M8','M9','M10','M11','M12',
|
|
|
+ 'M13','M14','M15','M16','M17','M18','M19','M20','M21','M22', 'M23','M24',
|
|
|
+ 'M25','M26','M27','M28','M29','M30','M31',
|
|
|
+ 'CR','CR0','CR1','CR2','CR3','CR4','CR5','CR6','CR7',
|
|
|
+ 'XER','LR','CTR','FPSCR'
|
|
|
+ );
|
|
|
+
|
|
|
{ FIX ME !!!!!!!!! }
|
|
|
ALL_REGISTERS = [R_0..R_FPSCR];
|
|
|
|
|
@@ -287,6 +315,7 @@ const
|
|
|
*****************************************************************************}
|
|
|
|
|
|
type
|
|
|
+ trefoptions=(ref_none,ref_parafixup,ref_localfixup,ref_selffixup);
|
|
|
|
|
|
{ since we have only 16 offsets, we need to be able to specify the high }
|
|
|
{ and low 16 bits of the address of a symbol }
|
|
@@ -301,6 +330,7 @@ type
|
|
|
symbol : tasmsymbol;
|
|
|
symaddr : trefsymaddr;
|
|
|
offsetfixup : longint;
|
|
|
+ options : trefoptions;
|
|
|
alignment : byte;
|
|
|
end;
|
|
|
|
|
@@ -439,6 +469,9 @@ const
|
|
|
self_pointer_reg = R_9;
|
|
|
accumulator = R_3;
|
|
|
accumulatorhigh = R_4;
|
|
|
+{$warning I don't know the exact values, please check (PFV) }
|
|
|
+ fpuresultreg = R_F0;
|
|
|
+ mmresultreg = R_M0;
|
|
|
max_scratch_regs = 3;
|
|
|
scratch_regs: Array[1..max_scratch_regs] of TRegister = (R_11,R_12,R_31);
|
|
|
|
|
@@ -467,7 +500,8 @@ const
|
|
|
LA_LR = 8;
|
|
|
{ offset in the linkage area for the saved RTOC register}
|
|
|
LA_RTOC = 20;
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
{*****************************************************************************
|
|
|
GCC /ABI linking information
|
|
|
*****************************************************************************}
|
|
@@ -475,20 +509,20 @@ const
|
|
|
{# Registers which must be saved when calling a routine declared as
|
|
|
cppdecl, cdecl, stdcall, safecall, palmossyscall. The registers
|
|
|
saved should be the ones as defined in the target ABI and / or GCC.
|
|
|
-
|
|
|
+
|
|
|
This value can be deduced from CALLED_USED_REGISTERS array in the
|
|
|
GCC source.
|
|
|
}
|
|
|
std_saved_registers = [R_13..R_29];
|
|
|
{# Required parameter alignment when calling a routine declared as
|
|
|
stdcall and cdecl. The alignment value should be the one defined
|
|
|
- by GCC or the target ABI.
|
|
|
-
|
|
|
- The value of this constant is equal to the constant
|
|
|
+ by GCC or the target ABI.
|
|
|
+
|
|
|
+ The value of this constant is equal to the constant
|
|
|
PARM_BOUNDARY / BITS_PER_UNIT in the GCC source.
|
|
|
- }
|
|
|
+ }
|
|
|
std_param_align = 4; { for 32-bit version only }
|
|
|
-
|
|
|
+
|
|
|
|
|
|
{*****************************************************************************
|
|
|
Helpers
|
|
@@ -660,7 +694,10 @@ implementation
|
|
|
end.
|
|
|
{
|
|
|
$Log$
|
|
|
- Revision 1.9 2002-04-21 15:48:39 carl
|
|
|
+ Revision 1.10 2002-05-13 19:52:46 peter
|
|
|
+ * a ppcppc can be build again
|
|
|
+
|
|
|
+ Revision 1.9 2002/04/21 15:48:39 carl
|
|
|
* some small updates according to i386 version
|
|
|
|
|
|
Revision 1.8 2002/04/20 21:41:51 carl
|