[openfirmware] r943 - cpu/x86/pc/biosload

svn at openfirmware.info svn at openfirmware.info
Thu Sep 25 10:11:22 CEST 2008


Author: wmb
Date: 2008-09-25 10:11:21 +0200 (Thu, 25 Sep 2008)
New Revision: 943

Modified:
   cpu/x86/pc/biosload/rmenter.fth
Log:
Biosload - fixed a compilation failure that was introduced by
a source rearrangement that happened some time ago.


Modified: cpu/x86/pc/biosload/rmenter.fth
===================================================================
--- cpu/x86/pc/biosload/rmenter.fth	2008-09-23 15:29:21 UTC (rev 942)
+++ cpu/x86/pc/biosload/rmenter.fth	2008-09-25 08:11:21 UTC (rev 943)
@@ -19,6 +19,28 @@
 h# e.8000 constant new-gdt-pa
 
 
+[ifdef] virtualbox-loaded
+h#  8 constant rm-cs
+h# 18 constant rm-ds
+h# 20 constant pm-cs
+h# 28 constant pm-ds
+: fix-gdt 
+   \ 16-bit 64K code segment starting at rm-base
+   rm-base lbsplit                   ( adr.0 adr.1 adr.2 adr.3 )
+   2swap h# ffff -rot bwjoin wljoin  ( adr.2 adr.3 desc.lo )
+   -rot                              ( desc.lo adr.2 adr.3 )
+   >r  h# 9a 0  r>   bljoin          ( desc.lo desc.hi )
+   gdtr@ drop rm-cs + d!             ( )
+
+   \ 16-bit 64K data segment starting at rm-base
+   rm-base lbsplit                   ( adr.0 adr.1 adr.2 adr.3 )
+   2swap h# ffff -rot bwjoin wljoin  ( adr.2 adr.3 desc.lo )
+   -rot                              ( desc.lo adr.2 adr.3 )
+   >r  h# 93 0  r>   bljoin          ( desc.lo desc.hi )
+   gdtr@ drop rm-ds + d!             ( )
+;
+[then]
+
 [ifdef] syslinux-loaded
 h#  8 constant rm-cs
 h# 18 constant rm-ds
@@ -149,12 +171,12 @@
    cli  \ This is unnecessary since we got here from an INT
    cs push   ds pop
 
-   'rm-int >off  #) pop        \ Save interrupt vector CS, i.e. the int#
+   'rm-int >seg:off drop  #) pop        \ Save interrupt vector CS, i.e. the int#
 
-   sp 'rm-sp    >off  #) mov
-   ss 'rm-sp 2+ >off  #) mov
+   sp 'rm-sp    >seg:off drop  #) mov
+   ss 'rm-sp 2+ >seg:off drop  #) mov
 
-   op: 'pm-gdt  >off  #) lgdt
+   op: 'pm-gdt  >seg:off drop  #) lgdt
    cr0 ax mov  1 # al or  ax cr0 mov   \ Enter protected mode
 
    \ We are still running in 16-bit mode, but the target address might
@@ -213,7 +235,7 @@
 
    cli
    sp sp xor
-   'pm-to-rm >off  rm-cs #) far jmp
+   'pm-to-rm >seg:off drop  rm-cs #) far jmp
 end-code
 
 : rm-init-program  ( pc -- )
@@ -240,7 +262,7 @@
    saved-rm-vectors  over la+ l@   swap /l* l!
 ;
 
-: move-gdt  ( -- )
+: safe-gdt  ( -- )
    gdtr@ 1+                    ( gdt-adr gdt-len )
 
    new-gdt-pa                  ( gdt-adr gdt-len new-gdt-adr )
@@ -279,7 +301,7 @@
 : setup-rm-gateway  ( -- )
    fix-gdt
 
-   move-gdt
+   safe-gdt
 
    rm-enter 'rm-enter   /rm-enter   move
    rm-to-pm 'rm-to-pm   /rm-to-pm   move




More information about the openfirmware mailing list