Browse Source

+ added defines for the i8086 code and data model; ptrint/ptruint made to follow the data pointer size

git-svn-id: trunk@24838 -
nickysn 12 years ago
parent
commit
0e4e329228
1 changed files with 35 additions and 5 deletions
  1. 35 5
      rtl/inc/systemh.inc

+ 35 - 5
rtl/inc/systemh.inc

@@ -131,6 +131,28 @@ Type
   {$ifndef FPUNONE}
   {$ifndef FPUNONE}
     ValReal = Extended;
     ValReal = Extended;
   {$endif}
   {$endif}
+
+  {$if defined(FPC_MM_TINY)}
+    {$define FPC_X86_CODE_NEAR}
+    {$define FPC_X86_DATA_NEAR}
+  {$elseif defined(FPC_MM_SMALL)}
+    {$define FPC_X86_CODE_NEAR}
+    {$define FPC_X86_DATA_NEAR}
+  {$elseif defined(FPC_MM_MEDIUM)}
+    {$define FPC_X86_CODE_FAR}
+    {$define FPC_X86_DATA_NEAR}
+  {$elseif defined(FPC_MM_COMPACT)}
+    {$define FPC_X86_CODE_NEAR}
+    {$define FPC_X86_DATA_FAR}
+  {$elseif defined(FPC_MM_LARGE)}
+    {$define FPC_X86_CODE_FAR}
+    {$define FPC_X86_DATA_FAR}
+  {$elseif defined(FPC_MM_HUGE)}
+    {$define FPC_X86_CODE_FAR}
+    {$define FPC_X86_DATA_HUGE}
+  {$else}
+    {$fatal No memory model defined}
+  {$endif}
 {$endif CPUI8086}
 {$endif CPUI8086}
 
 
 {$ifdef CPUX86_64}
 {$ifdef CPUX86_64}
@@ -294,6 +316,8 @@ Type
   PtrUInt = QWord;
   PtrUInt = QWord;
   ValSInt = int64;
   ValSInt = int64;
   ValUInt = qword;
   ValUInt = qword;
+  NativeInt  = PtrInt;
+  NativeUint = PtrUint;
 {$endif CPU64}
 {$endif CPU64}
 
 
 {$ifdef CPU32}
 {$ifdef CPU32}
@@ -303,20 +327,26 @@ Type
   PtrUInt = DWord;
   PtrUInt = DWord;
   ValSInt = Longint;
   ValSInt = Longint;
   ValUInt = Cardinal;
   ValUInt = Cardinal;
+  NativeInt  = PtrInt;
+  NativeUint = PtrUint;
 {$endif CPU32}
 {$endif CPU32}
 
 
 {$ifdef CPU16}
 {$ifdef CPU16}
   SizeInt = Integer;
   SizeInt = Integer;
   SizeUInt = Word;
   SizeUInt = Word;
-  PtrInt = Integer;
-  PtrUInt = Word;
+  {$if defined(FPC_X86_DATA_FAR) or defined(FPC_X86_DATA_HUGE)}
+    PtrInt = Longint;
+    PtrUInt = DWord;
+  {$else}
+    PtrInt = Integer;
+    PtrUInt = Word;
+  {$endif}
   ValSInt = Integer;
   ValSInt = Integer;
   ValUInt = Word;
   ValUInt = Word;
+  NativeInt  = Integer;
+  NativeUint = Word;
 {$endif CPU16}
 {$endif CPU16}
 
 
-  NativeInt  = PtrInt;
-  NativeUint = PtrUint;
-
   Int8    = ShortInt;
   Int8    = ShortInt;
   Int16   = SmallInt;
   Int16   = SmallInt;
   Int32   = Longint;
   Int32   = Longint;