qemu/pc-bios/bios.diff

141 lines
3.1 KiB
Diff

Index: apmbios.S
===================================================================
RCS file: /cvsroot/bochs/bochs/bios/apmbios.S,v
retrieving revision 1.4
diff -u -w -r1.4 apmbios.S
--- apmbios.S 26 Dec 2005 10:35:51 -0000 1.4
+++ apmbios.S 28 Apr 2006 22:41:19 -0000
@@ -225,6 +225,7 @@
APMSYM(05):
cmp al, #0x05
jne APMSYM(07)
+ sti
hlt
jmp APMSYM(ok)
Index: rombios.c
===================================================================
RCS file: /cvsroot/bochs/bochs/bios/rombios.c,v
retrieving revision 1.160
diff -u -w -r1.160 rombios.c
--- rombios.c 25 Jan 2006 17:51:49 -0000 1.160
+++ rombios.c 28 Apr 2006 22:41:21 -0000
@@ -1816,6 +1816,7 @@
{
printf(BX_APPNAME" BIOS - build: %s\n%s\nOptions: ",
BIOS_BUILD_DATE, bios_cvs_version_string);
+#if 0
printf(
#ifdef BX_APM
"apmbios "
@@ -1827,6 +1828,9 @@
"eltorito "
#endif
"\n\n");
+#else
+ printf("apmbios pcibios eltorito \n\n");
+#endif
}
//--------------------------------------------------------------------------
@@ -8713,6 +8717,7 @@
mov al, #0x80
bios32_end:
popf
+ and dword ptr[esp+4],0xfffffffc ;; reset CS.RPL for kqemu
retf
.align 16
@@ -8823,17 +8828,17 @@
pci_pro_fail:
pop edi
pop esi
- sti
popf
stc
+ and dword ptr[esp+4],0xfffffffc ;; reset CS.RPL for kqemu
retf
pci_pro_ok:
xor ah, ah
pop edi
pop esi
- sti
popf
clc
+ and dword ptr[esp+4],0xfffffffc ;; reset CS.RPL for kqemu
retf
pci_pro_select_reg:
@@ -8971,7 +8976,7 @@
jmp pci_real_ok
pci_real_f0d: ;; write configuration dword
cmp al, #0x0d
- jne pci_real_unknown
+ jne pci_real_f0e
call pci_real_select_reg
push dx
mov dx, #0x0cfc
@@ -8979,6 +8984,46 @@
out dx, eax
pop dx
jmp pci_real_ok
+pci_real_f0e: ;; get irq routing options
+ cmp al, #0x0e
+ jne pci_real_unknown
+ SEG ES
+ cmp word ptr [di], #pci_routing_table_structure_end - pci_routing_table_structure_start
+ jb pci_real_too_small
+ SEG ES
+ mov word ptr [di], #pci_routing_table_structure_end - pci_routing_table_structure_start
+ pushf
+ push ds
+ push es
+ push cx
+ push si
+ push di
+ cld
+ mov si, #pci_routing_table_structure_start
+ push cs
+ pop ds
+ SEG ES
+ mov cx, [di+2]
+ SEG ES
+ mov es, [di+4]
+ mov di, cx
+ mov cx, #pci_routing_table_structure_end - pci_routing_table_structure_start
+ rep
+ movsb
+ pop di
+ pop si
+ pop cx
+ pop es
+ pop ds
+ popf
+ mov bx, #(1 << 9) | (1 << 11) ;; irq 9 and 11 are used
+ jmp pci_real_ok
+pci_real_too_small:
+ SEG ES
+ mov word ptr [di], #pci_routing_table_structure_end - pci_routing_table_structure_start
+ mov ah, #0x89
+ jmp pci_real_fail
+
pci_real_unknown:
mov ah, #0x81
pci_real_fail:
@@ -9019,6 +9064,7 @@
dw 0,0 ;; Miniport data
db 0,0,0,0,0,0,0,0,0,0,0 ;; reserved
db 0x07 ;; checksum
+pci_routing_table_structure_start:
;; first slot entry PCI-to-ISA (embedded)
db 0 ;; pci bus number
db 0x08 ;; pci device number (bit 7-3)
@@ -9097,6 +9143,7 @@
dw 0xdef8 ;; IRQ bitmap INTD#
db 5 ;; physical slot (0 = embedded)
db 0 ;; reserved
+pci_routing_table_structure_end:
pci_irq_list:
db 11, 10, 9, 5;