Browse Source

+ implemented the CSeg, DSeg and SSeg functions on the i8086

git-svn-id: branches/i8086@24041 -
nickysn 12 years ago
parent
commit
ceb76808e7
2 changed files with 24 additions and 0 deletions
  1. 18 0
      rtl/i8086/i8086.inc
  2. 6 0
      rtl/inc/system.inc

+ 18 - 0
rtl/i8086/i8086.inc

@@ -24,6 +24,24 @@ asm
   mov ax, sp
 end;
 
+{$define FPC_SYSTEM_HAS_CSEG}
+function CSeg: Word;{$ifdef SYSTEMINLINE}inline;{$endif}assembler;nostackframe;
+asm
+  mov ax, cs
+end;
+
+{$define FPC_SYSTEM_HAS_DSEG}
+function DSeg: Word;{$ifdef SYSTEMINLINE}inline;{$endif}assembler;nostackframe;
+asm
+  mov ax, ds
+end;
+
+{$define FPC_SYSTEM_HAS_SSEG}
+function SSeg: Word;{$ifdef SYSTEMINLINE}inline;{$endif}assembler;nostackframe;
+asm
+  mov ax, ss
+end;
+
 {$define FPC_SYSTEM_HAS_GET_CALLER_ADDR}
 function get_caller_addr(framebp:pointer;addr:pointer=nil):pointer;nostackframe;assembler;
 asm

+ 6 - 0
rtl/inc/system.inc

@@ -657,20 +657,26 @@ Begin
   ptr:=farpointer((sel shl 4)+off);
 End;
 
+{$ifndef FPC_SYSTEM_HAS_CSEG}
 Function CSeg : Word;{$ifdef SYSTEMINLINE}inline;{$endif}
 Begin
   Cseg:=0;
 End;
+{$endif not FPC_SYSTEM_HAS_CSEG}
 
+{$ifndef FPC_SYSTEM_HAS_DSEG}
 Function DSeg : Word;{$ifdef SYSTEMINLINE}inline;{$endif}
 Begin
   Dseg:=0;
 End;
+{$endif not FPC_SYSTEM_HAS_DSEG}
 
+{$ifndef FPC_SYSTEM_HAS_SSEG}
 Function SSeg : Word;{$ifdef SYSTEMINLINE}inline;{$endif}
 Begin
   Sseg:=0;
 End;
+{$endif not FPC_SYSTEM_HAS_SSEG}