Author: wmb Date: Wed May 25 22:27:40 2011 New Revision: 2223 URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2223
Log: BIOSload version - Fixed direct BIOS call gateway and used it for VESA BIOS calls, thus enabling the use of VESA framebuffers without needing syslinux.
Modified: cpu/x86/pc/biosload/callbios.fth cpu/x86/pc/biosload/callvbe.fth cpu/x86/pc/biosload/fw.bth
Modified: cpu/x86/pc/biosload/callbios.fth ============================================================================== --- cpu/x86/pc/biosload/callbios.fth Wed May 25 09:03:39 2011 (r2222) +++ cpu/x86/pc/biosload/callbios.fth Wed May 25 22:27:40 2011 (r2223) @@ -79,7 +79,7 @@ op: pushf op: pusha ds push es push fs push gs push
cli - cs ax mov ax ds mov + ax ax xor ax ds mov \ Assumes that the real-mode buffers are in the low 64K
op: pm-gdt-save #) lgdt cr0 ax mov 1 # al or ax cr0 mov @@ -151,7 +151,7 @@
\ Video - INT 10 : video-mode ( mode# -- ) - d# 55 set-tick-limit h# 10 bios{ 3 al bx }bios d# 10 set-tick-limit + ( d# 55 set-tick-limit ) h# 10 bios{ 3 al bx }bios ( d# 10 set-tick-limit ) ; : text-mode 3 video-mode ; : 1024x768x8 h# 105 video-mode ;
Modified: cpu/x86/pc/biosload/callvbe.fth ============================================================================== --- cpu/x86/pc/biosload/callvbe.fth Wed May 25 09:03:39 2011 (r2222) +++ cpu/x86/pc/biosload/callvbe.fth Wed May 25 22:27:40 2011 (r2223) @@ -1,6 +1,7 @@ \ Call VESA BIOS from a syslinux-loaded ".c32" image \ COM32 arguments are at 0 @ 4 +
+[ifndef] bios{ code vesa-mode ( mode# -- ) cx pop
@@ -76,6 +77,22 @@ h# 4f01 vbe-call ( ) h# 200 +c32-regs ( adr ) ; +: current-vesa-mode ( -- mode# ) h# 4f03 vbe-call 'c32-bx l@ ; +: set-vesa-mode ( mode# -- ) 'c32-bx w! h# 4f02 vbe-call ; +[else] +h# 2000 constant vesa-rm-buf +: vbe-info ( -- adr ) + vesa-rm-buf ( adr ) + h# 32454256 over l! ( adr ) + h# 10 bios{ dup es:di h# 4f00 ax }bios ( adr ) +; +: vesa-mode-info ( mode# -- adr ) + h# 10 bios{ cx h# 2000 dup es:di h# 4f01 ax }bios ( adr ) +; +: current-vesa-mode ( -- mode# ) h# 10 bios{ h# 4f03 ax }bios bios-bx l@ ; +: set-vesa-mode ( mode# -- ) h# 10 bios{ bx h# 4f02 ax }bios ; +[then] + : .vesa-mode-info ( mode# -- ) push-hex dup 3 u.r space vesa-mode-info >r ( r: adr ) @@ -201,7 +218,5 @@ 3e.l MaxPixelClock [then]
-: current-vesa-mode ( -- mode# ) h# 4f03 vbe-call 'c32-bx l@ ; -: set-vesa-mode ( mode# -- ) 'c32-bx w! h# 4f02 vbe-call ; : set-linear-mode ( mode# -- ) h# 4000 or set-vesa-mode ; : vesa-lfb-adr ( mode# -- padr ) h# 4000 or vesa-mode-info h# 28 + l@ ;
Modified: cpu/x86/pc/biosload/fw.bth ============================================================================== --- cpu/x86/pc/biosload/fw.bth Wed May 25 09:03:39 2011 (r2222) +++ cpu/x86/pc/biosload/fw.bth Wed May 25 22:27:40 2011 (r2223) @@ -185,6 +185,8 @@
fload ${BP}/cpu/x86/pc/rmtools.fth
+fload ${BP}/cpu/x86/pc/biosload/callbios.fth + [ifdef] syslinux-loaded fload ${BP}/cpu/x86/pc/biosload/callvbe.fth [then] @@ -247,7 +249,6 @@
fload ${BP}/cpu/x86/pc/biosload/usb.fth
-fload ${BP}/cpu/x86/pc/biosload/callbios.fth \ fload ${BP}/cpu/x86/pc/biosload/rmenter.fth
\ false to stand-init-debug? @@ -262,7 +263,7 @@
standalone? if cr ." Type 'i' to interrupt stand-init sequence" cr - d# 2000 ms + d# 1000 ms key? if key upc ascii I = if ." Interacting" cr hex interact then then