Revision 307b0c24

b/pc-bios/bios.diff
1 1
Index: rombios.c
2 2
===================================================================
3 3
RCS file: /cvsroot/bochs/bochs/bios/rombios.c,v
4
retrieving revision 1.130
5
diff -u -w -r1.130 rombios.c
6
--- rombios.c	13 Feb 2005 08:47:30 -0000	1.130
7
+++ rombios.c	9 Feb 2006 21:49:38 -0000
8
@@ -8570,7 +8570,10 @@
9
 use32 386
10
 #define APM_PROT32
11
 #include "apmbios.S"
12
+
13
 use16 386
14
+#define APM_PROT16
15
+#include "apmbios.S"
4
retrieving revision 1.160
5
diff -u -w -r1.160 rombios.c
6
--- rombios.c	25 Jan 2006 17:51:49 -0000	1.160
7
+++ rombios.c	2 Apr 2006 18:29:51 -0000
8
@@ -1816,6 +1816,7 @@
9
 {
10
   printf(BX_APPNAME" BIOS - build: %s\n%s\nOptions: ",
11
     BIOS_BUILD_DATE, bios_cvs_version_string);
12
+#if 0
13
   printf(
14
 #ifdef BX_APM
15
   "apmbios "
16
@@ -1827,6 +1828,9 @@
17
   "eltorito "
18
 #endif
19
   "\n\n");
20
+#else
21
+  printf("apmbios pcibios eltorito \n\n");
22
+#endif
23
 }
16 24
 
17
 #define APM_REAL
18
 #include "apmbios.S"
19
@@ -8611,6 +8614,7 @@
25
 //--------------------------------------------------------------------------
26
@@ -8713,6 +8717,7 @@
20 27
   mov al, #0x80
21 28
 bios32_end:
22 29
   popf
......
24 31
   retf
25 32
 
26 33
 .align 16
27
@@ -8721,17 +8725,17 @@
34
@@ -8823,17 +8828,17 @@
28 35
 pci_pro_fail:
29 36
   pop edi
30 37
   pop esi
......
44 51
   retf
45 52
 
46 53
 pci_pro_select_reg:
47
Index: apmbios.S
48
===================================================================
49
RCS file: /cvsroot/bochs/bochs/bios/apmbios.S,v
50
retrieving revision 1.1
51
diff -u -w -r1.1 apmbios.S
52
--- apmbios.S	20 Jun 2004 18:27:09 -0000	1.1
53
+++ apmbios.S	9 Feb 2006 21:49:38 -0000
54
@@ -1,6 +1,9 @@
55
 //  APM BIOS support for the Bochs BIOS
56
 //  Copyright (C) 2004 Fabrice Bellard
57
 //
58
+//  16-bit interface activation
59
+//  Copyright (C) 2005 Struan Bartlett
60
+//
61
 //  This library is free software; you can redistribute it and/or
62
 //  modify it under the terms of the GNU Lesser General Public
63
 //  License as published by the Free Software Foundation; either
64
@@ -111,13 +114,28 @@
65
   mov bl, #0x4d // 'M'
66
   // bit 0 : 16 bit interface supported
67
   // bit 1 : 32 bit interface supported
68
-  mov cx, #0x2 
69
+  mov cx, #0x3
70
   jmp APMSYM(ok)
71
   
72
 ;-----------------
73
 ; APM real mode interface connect
74
 APMSYM(01):
75
   cmp al, #0x01
76
+  jne APMSYM(02)
77
+  jmp APMSYM(ok)
78
+
79
+;-----------------
80
+; APM 16 bit protected mode interface connect
81
+APMSYM(02):
82
+  cmp al, #0x02
83
+  jne APMSYM(03)
54
@@ -8971,7 +8976,7 @@
55
   jmp pci_real_ok
56
 pci_real_f0d: ;; write configuration dword
57
   cmp al, #0x0d
58
-  jne pci_real_unknown
59
+  jne pci_real_f0e
60
   call pci_real_select_reg
61
   push dx
62
   mov dx, #0x0cfc
63
@@ -8979,6 +8984,46 @@
64
   out dx, eax
65
   pop dx
66
   jmp pci_real_ok
67
+pci_real_f0e: ;; get irq routing options
68
+  cmp al, #0x0e
69
+  jne pci_real_unknown
70
+  SEG ES
71
+  cmp word ptr [di], #pci_routing_table_structure_end - pci_routing_table_structure_start
72
+  jb pci_real_too_small    
73
+  SEG ES
74
+  mov word ptr [di], #pci_routing_table_structure_end - pci_routing_table_structure_start        
75
+  pushf
76
+  push ds
77
+  push es
78
+  push cx
79
+  push si
80
+  push di
81
+  cld
82
+  mov si, #pci_routing_table_structure_start
83
+  push cs
84
+  pop ds
85
+  SEG ES
86
+  mov cx, [di+2]
87
+  SEG ES
88
+  mov es, [di+4]
89
+  mov di, cx
90
+  mov cx, #pci_routing_table_structure_end - pci_routing_table_structure_start
91
+  rep 
92
+      movsb
93
+  pop di
94
+  pop si
95
+  pop cx
96
+  pop es
97
+  pop ds
98
+  popf
99
+  mov bx, #(1 << 9) | (1 << 11)   ;; irq 9 and 11 are used
100
+  jmp pci_real_ok
101
+pci_real_too_small:
102
+  SEG ES
103
+  mov word ptr [di], #pci_routing_table_structure_end - pci_routing_table_structure_start        
104
+  mov ah, #0x89
105
+  jmp pci_real_fail
84 106
+
85
+  mov bx, #_apm16_entry
86
+  
87
+  mov ax, #0xf000 // 16 bit code segment base
88
+  mov si, #0xfff0 // 16 bit code segment size
89
+  mov cx, #0xf000 // data segment address
90
+  mov di, #0xfff0 // data segment length
91
   jne APMSYM(03)
92
   jmp APMSYM(ok)
107
 pci_real_unknown:
108
   mov ah, #0x81
109
 pci_real_fail:
110
@@ -9019,6 +9064,7 @@
111
   dw 0,0 ;; Miniport data
112
   db 0,0,0,0,0,0,0,0,0,0,0 ;; reserved
113
   db 0x07 ;; checksum
114
+pci_routing_table_structure_start:
115
   ;; first slot entry PCI-to-ISA (embedded)
116
   db 0 ;; pci bus number
117
   db 0x08 ;; pci device number (bit 7-3)
118
@@ -9097,6 +9143,7 @@
119
   dw 0xdef8 ;; IRQ bitmap INTD#
120
   db 5 ;; physical slot (0 = embedded)
121
   db 0 ;; reserved
122
+pci_routing_table_structure_end:
93 123
 
124
 pci_irq_list:
125
   db 11, 10, 9, 5;

Also available in: Unified diff