Commit 678f2df60fefdf75a880a606fb66d0238ecefbc2

Authored by bellard
1 parent 9e57f14d

update


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@943 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 92 additions and 248 deletions
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.108
5   -diff -u -w -r1.108 rombios.c
6   ---- rombios.c 9 Feb 2004 16:48:50 -0000 1.108
7   -+++ rombios.c 23 May 2004 15:48:52 -0000
8   -@@ -2254,6 +2254,7 @@
9   - type = read_byte(get_SS(),buffer+1) & 0x1f;
10   - removable = (read_byte(get_SS(),buffer+0) & 0x80) ? 1 : 0;
11   - mode = read_byte(get_SS(),buffer+96) ? ATA_MODE_PIO32 : ATA_MODE_PIO16;
12   -+ blksize = 2048;
  4 +retrieving revision 1.110
  5 +diff -u -w -r1.110 rombios.c
  6 +--- rombios.c 31 May 2004 13:11:27 -0000 1.110
  7 ++++ rombios.c 20 Jun 2004 13:10:07 -0000
  8 +@@ -137,6 +137,7 @@
  9 + #define DEBUG_INT16 0
  10 + #define DEBUG_INT1A 0
  11 + #define DEBUG_INT74 0
  12 ++#define DEBUG_APM 0
13 13  
14   - write_byte(ebda_seg,&EbdaData->ata.devices[device].device, type);
15   - write_byte(ebda_seg,&EbdaData->ata.devices[device].removable, removable);
16   -@@ -3378,6 +3379,8 @@
17   - and al,#0x10
18   - mov ah, al
  14 + #define BX_CPU 3
  15 + #define BX_USE_PS2_MOUSE 1
  16 +@@ -145,6 +146,7 @@
  17 + #define BX_SUPPORT_FLOPPY 1
  18 + #define BX_FLOPPY_ON_CNT 37 // 2 seconds
  19 + #define BX_PCIBIOS 1
  20 ++#define BX_APM 1
19 21  
20   -+ or ecx, ecx
21   -+ je int1586_tick_end
22   - int1586_tick:
23   - in al, #0x61
24   - and al,#0x10
25   -@@ -3386,6 +3389,7 @@
26   - mov ah, al
27   - dec ecx
28   - jnz int1586_tick
29   -+int1586_tick_end:
30   - ASM_END
31   -
32   - break;
33   -@@ -3781,7 +3785,17 @@
34   - write_word(ebda_seg, 0x0022, mouse_driver_offset);
35   - write_word(ebda_seg, 0x0024, mouse_driver_seg);
36   - mouse_flags_2 = read_byte(ebda_seg, 0x0027);
37   -+ if (mouse_driver_offset == 0 &&
38   -+ mouse_driver_seg == 0) {
39   -+ /* remove handler */
40   -+ if ( (mouse_flags_2 & 0x80) != 0 ) {
41   -+ mouse_flags_2 &= ~0x80;
42   -+ inhibit_mouse_int_and_events(); // disable IRQ12 and packets
43   -+ }
44   -+ } else {
45   -+ /* install handler */
46   - mouse_flags_2 |= 0x80;
47   -+ }
48   - write_byte(ebda_seg, 0x0027, mouse_flags_2);
49   - CLEAR_CF();
50   - regs.u.r8.ah = 0;
51   -@@ -4409,7 +4423,8 @@
52   - mouse_flags_2 = read_byte(ebda_seg, 0x0027);
  22 + #define BX_USE_ATADRV 1
  23 + #define BX_ELTORITO_BOOT 1
  24 +@@ -230,17 +232,6 @@
  25 + out dx,ax
  26 + MEND
53 27  
54   - if ( (mouse_flags_2 & 0x80) != 0x80 ) {
55   -- BX_PANIC("int74_function:\n");
56   -+ // BX_PANIC("int74_function:\n");
57   -+ return;
  28 +-MACRO HALT2
  29 +- ;; the HALT macro is called with the line number of the HALT call.
  30 +- ;; The line number is then sent to the PANIC_PORT, causing Bochs/Plex
  31 +- ;; to print a BX_PANIC message. This will normally halt the simulation
  32 +- ;; with a message such as "BIOS panic at rombios.c, line 4091".
  33 +- ;; However, users can choose to make panics non-fatal and continue.
  34 +- mov dx,#PANIC_PORT2
  35 +- mov ax,#?1
  36 +- out dx,ax
  37 +-MEND
  38 +-
  39 + MACRO JMP_AP
  40 + db 0xea
  41 + dw ?2
  42 +@@ -1543,15 +1534,12 @@
58 43 }
59 44  
60   - package_count = mouse_flags_2 & 0x07;
61   -@@ -4833,8 +4848,10 @@
62   - // ---------------------------------------------------------------------------
  45 + if (action & BIOS_PRINTF_HALT) {
  46 +- // freeze in a busy loop. If I do a HLT instruction, then in versions
  47 +- // 1.3.pre1 and earlier, it will panic without ever updating the VGA
  48 +- // display, so the panic message will not be visible. By waiting
  49 +- // forever, you are certain to see the panic message on screen.
  50 +- // After a few more versions have passed, we can turn this back into
  51 +- // a halt or something.
  52 +- // do {} while (1);
  53 ++ // freeze in a busy loop.
  54 + ASM_START
  55 +- HALT2(__LINE__)
  56 ++ cli
  57 ++ halt2_loop:
  58 ++ hlt
  59 ++ jmp halt2_loop
  60 + ASM_END
  61 + }
  62 + }
  63 +@@ -8344,6 +8332,19 @@
  64 + pop ax
  65 + iret
63 66  
64   - void
65   --int13_cdrom(DI, SI, BP, SP, BX, DX, CX, AX, DS, ES, FLAGS)
66   -- Bit16u DI, SI, BP, SP, BX, DX, CX, AX, DS, ES, FLAGS;
67   -+int13_cdrom(DI, DIH, SI, SIH, BP, BPH, SP, SPH, BX, BXH, DX, DXH, CX, CXH, AX, AXH,
68   -+ DS, ES, FLAGS)
69   -+ Bit16u DI, DIH, SI, SIH, BP, BPH, SP, SPH, BX, BXH, DX, DXH, CX, CXH, AX, AXH,
70   -+ DS, ES, FLAGS;
71   - {
72   - Bit16u ebda_seg=read_word(0x0040,0x000E);
73   - Bit8u device, status, locks;
74   -@@ -7692,9 +7709,12 @@
  67 ++
  68 ++;--------------------
  69 ++#if BX_APM
  70 ++use32 386
  71 ++#define APM_PROT32
  72 ++#include "apmbios.S"
  73 ++use16 386
  74 ++
  75 ++#define APM_REAL
  76 ++#include "apmbios.S"
  77 ++
  78 ++#endif
  79 ++
  80 + ;--------------------
  81 + #if BX_PCIBIOS
  82 + use32 386
  83 +@@ -9560,6 +9561,10 @@
  84 + .org 0xf859 ; INT 15h System Services Entry Point
  85 + int15_handler:
  86 + pushf
  87 ++#if BX_APM
  88 ++ cmp ah, #0x53
  89 ++ je apm_call
  90 ++#endif
75 91 push ds
76   - push ss
77   - pop ds
78   -- pusha
79   -+ // ebx is modified: BSD 5.2.1 boot loader problem, so we save all
80   -+ // the 32 bit registers. It should be done in all the bios or no 32
81   -+ // bit register should be used without saving it first.
82   -+ pushad
83   - call _int13_cdrom
84   -- popa
85   -+ popad
86   - pop ds
87   - pop es
  92 + push es
  93 + pushad
  94 +@@ -9570,6 +9575,10 @@
88 95 popf
89   -@@ -8401,57 +8421,69 @@
90   - cmp al, #0x08
91   - jne pci_pro_f09
92   - call pci_pro_select_reg
93   -+ push edx
94   - mov dx, di
95   - and dx, #0x03
96   - add dx, #0x0cfc
97   - in al, dx
98   -+ pop edx
99   - mov cl, al
100   - jmp pci_pro_ok
101   - pci_pro_f09: ;; read configuration word
102   - cmp al, #0x09
103   - jne pci_pro_f0a
104   - call pci_pro_select_reg
105   -+ push edx
106   - mov dx, di
107   - and dx, #0x02
108   - add dx, #0x0cfc
109   - in ax, dx
110   -+ pop edx
111   - mov cx, ax
112   - jmp pci_pro_ok
113   - pci_pro_f0a: ;; read configuration dword
114   - cmp al, #0x0a
115   - jne pci_pro_f0b
116   - call pci_pro_select_reg
117   -+ push edx
118   - mov dx, #0x0cfc
119   - in eax, dx
120   -+ pop edx
121   - mov ecx, eax
122   - jmp pci_pro_ok
123   - pci_pro_f0b: ;; write configuration byte
124   - cmp al, #0x0b
125   - jne pci_pro_f0c
126   - call pci_pro_select_reg
127   -+ push edx
128   - mov dx, di
129   - and dx, #0x03
130   - add dx, #0x0cfc
131   - mov al, cl
132   - out dx, al
133   -+ pop edx
134   - jmp pci_pro_ok
135   - pci_pro_f0c: ;; write configuration word
136   - cmp al, #0x0c
137   - jne pci_pro_f0d
138   - call pci_pro_select_reg
139   -+ push edx
140   - mov dx, di
141   - and dx, #0x02
142   - add dx, #0x0cfc
143   - mov ax, cx
144   - out dx, ax
145   -+ pop edx
146   - jmp pci_pro_ok
147   - pci_pro_f0d: ;; write configuration dword
148   - cmp al, #0x0d
149   - jne pci_pro_unknown
150   - call pci_pro_select_reg
151   -+ push edx
152   - mov dx, #0x0cfc
153   - mov eax, ecx
154   - out dx, eax
155   -+ pop edx
156   - jmp pci_pro_ok
157   - pci_pro_unknown:
158   - mov ah, #0x81
159   -@@ -8468,6 +8500,7 @@
160   - retf
161   -
162   - pci_pro_select_reg:
163   -+ push edx
164   - mov eax, #0x800000
165   - mov ax, bx
166   - shl eax, #8
167   -@@ -8476,6 +8509,7 @@
168   - and al, #0xfc
169   - mov dx, #0x0cf8
170   - out dx, eax
171   -+ pop edx
172   - ret
173   -
174   - use16 386
175   -@@ -8536,57 +8570,69 @@
176   - cmp al, #0x08
177   - jne pci_real_f09
178   - call pci_real_select_reg
179   -+ push dx
180   - mov dx, di
181   - and dx, #0x03
182   - add dx, #0x0cfc
183   - in al, dx
184   -+ pop dx
185   - mov cl, al
186   - jmp pci_real_ok
187   - pci_real_f09: ;; read configuration word
188   - cmp al, #0x09
189   - jne pci_real_f0a
190   - call pci_real_select_reg
191   -+ push dx
192   - mov dx, di
193   - and dx, #0x02
194   - add dx, #0x0cfc
195   - in ax, dx
196   -+ pop dx
197   - mov cx, ax
198   - jmp pci_real_ok
199   - pci_real_f0a: ;; read configuration dword
200   - cmp al, #0x0a
201   - jne pci_real_f0b
202   - call pci_real_select_reg
203   -+ push dx
204   - mov dx, #0x0cfc
205   - in eax, dx
206   -+ pop dx
207   - mov ecx, eax
208   - jmp pci_real_ok
209   - pci_real_f0b: ;; write configuration byte
210   - cmp al, #0x0b
211   - jne pci_real_f0c
212   - call pci_real_select_reg
213   -+ push dx
214   - mov dx, di
215   - and dx, #0x03
216   - add dx, #0x0cfc
217   - mov al, cl
218   - out dx, al
219   -+ pop dx
220   - jmp pci_real_ok
221   - pci_real_f0c: ;; write configuration word
222   - cmp al, #0x0c
223   - jne pci_real_f0d
224   - call pci_real_select_reg
225   -+ push dx
226   - mov dx, di
227   - and dx, #0x02
228   - add dx, #0x0cfc
229   - mov ax, cx
230   - out dx, ax
231   -+ pop dx
232   - jmp pci_real_ok
233   - pci_real_f0d: ;; write configuration dword
234   - cmp al, #0x0d
235   - jne pci_real_unknown
236   - call pci_real_select_reg
237   -+ push dx
238   - mov dx, #0x0cfc
239   - mov eax, ecx
240   - out dx, eax
241   -+ pop dx
242   - jmp pci_real_ok
243   - pci_real_unknown:
244   - mov ah, #0x81
245   -@@ -8599,6 +8645,7 @@
246   - ret
  96 + //JMPL(iret_modify_cf)
  97 + jmp iret_modify_cf
  98 ++#if BX_APM
  99 ++apm_call:
  100 ++ jmp _apmreal_entry
  101 ++#endif
247 102  
248   - pci_real_select_reg:
249   -+ push dx
250   - mov eax, #0x800000
251   - mov ax, bx
252   - shl eax, #8
253   -@@ -8607,6 +8654,7 @@
254   - and al, #0xfc
255   - mov dx, #0x0cf8
256   - out dx, eax
257   -+ pop dx
258   - ret
259   -
260   - .align 16
  103 + ;; Protected mode IDT descriptor
  104 + ;;
... ...