mirror of https://gitee.com/openkylin/qemu.git
219 lines
6.2 KiB
Diff
219 lines
6.2 KiB
Diff
Index: BIOS-bochs-latest
|
|
===================================================================
|
|
RCS file: /cvsroot/bochs/bochs/bios/BIOS-bochs-latest,v
|
|
retrieving revision 1.133
|
|
diff -u -w -r1.133 BIOS-bochs-latest
|
|
Binary files /tmp/cvsrjjP5I and BIOS-bochs-latest differ
|
|
Index: rombios.c
|
|
===================================================================
|
|
RCS file: /cvsroot/bochs/bochs/bios/rombios.c,v
|
|
retrieving revision 1.170
|
|
diff -u -w -r1.170 rombios.c
|
|
--- rombios.c 30 Sep 2006 11:22:53 -0000 1.170
|
|
+++ rombios.c 1 Oct 2006 16:03:53 -0000
|
|
@@ -4115,7 +4115,7 @@
|
|
case 3:
|
|
set_e820_range(ES, regs.u.r16.di,
|
|
0x00100000L,
|
|
- extended_memory_size - 0x10000L, 1);
|
|
+ extended_memory_size - ACPI_DATA_SIZE, 1);
|
|
regs.u.r32.ebx = 4;
|
|
regs.u.r32.eax = 0x534D4150;
|
|
regs.u.r32.ecx = 0x14;
|
|
@@ -4124,7 +4124,7 @@
|
|
break;
|
|
case 4:
|
|
set_e820_range(ES, regs.u.r16.di,
|
|
- extended_memory_size - 0x10000L,
|
|
+ extended_memory_size - ACPI_DATA_SIZE,
|
|
extended_memory_size, 3); // ACPI RAM
|
|
regs.u.r32.ebx = 5;
|
|
regs.u.r32.eax = 0x534D4150;
|
|
@@ -8723,7 +8723,7 @@
|
|
|
|
.align 16
|
|
bios32_entry_point:
|
|
- pushf
|
|
+ pushfd
|
|
cmp eax, #0x49435024 ;; "$PCI"
|
|
jne unknown_service
|
|
mov eax, #0x80000000
|
|
@@ -8750,12 +8750,12 @@
|
|
#ifdef BX_QEMU
|
|
and dword ptr[esp+8],0xfffffffc ;; reset CS.RPL for kqemu
|
|
#endif
|
|
- popf
|
|
+ popfd
|
|
retf
|
|
|
|
.align 16
|
|
pcibios_protected:
|
|
- pushf
|
|
+ pushfd
|
|
cli
|
|
push esi
|
|
push edi
|
|
@@ -8864,7 +8864,7 @@
|
|
#ifdef BX_QEMU
|
|
and dword ptr[esp+8],0xfffffffc ;; reset CS.RPL for kqemu
|
|
#endif
|
|
- popf
|
|
+ popfd
|
|
stc
|
|
retf
|
|
pci_pro_ok:
|
|
@@ -8874,7 +8874,7 @@
|
|
#ifdef BX_QEMU
|
|
and dword ptr[esp+8],0xfffffffc ;; reset CS.RPL for kqemu
|
|
#endif
|
|
- popf
|
|
+ popfd
|
|
clc
|
|
retf
|
|
|
|
Index: rombios.h
|
|
===================================================================
|
|
RCS file: /cvsroot/bochs/bochs/bios/rombios.h,v
|
|
retrieving revision 1.1
|
|
diff -u -w -r1.1 rombios.h
|
|
--- rombios.h 30 Sep 2006 11:22:53 -0000 1.1
|
|
+++ rombios.h 1 Oct 2006 16:03:54 -0000
|
|
@@ -19,7 +19,7 @@
|
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
/* define it to include QEMU specific code */
|
|
-//#define BX_QEMU
|
|
+#define BX_QEMU
|
|
|
|
#define BX_ROMBIOS32 1
|
|
#define DEBUG_ROMBIOS 0
|
|
@@ -48,3 +48,7 @@
|
|
#endif
|
|
#define BX_INFO(format, p...) bios_printf(BIOS_PRINTF_INFO, format, ##p)
|
|
#define BX_PANIC(format, p...) bios_printf(BIOS_PRINTF_DEBHALT, format, ##p)
|
|
+
|
|
+#define ACPI_DATA_SIZE 0x00010000L
|
|
+#define PM_IO_BASE 0xb000
|
|
+#define CPU_COUNT_ADDR 0xf000
|
|
Index: rombios32.c
|
|
===================================================================
|
|
RCS file: /cvsroot/bochs/bochs/bios/rombios32.c,v
|
|
retrieving revision 1.4
|
|
diff -u -w -r1.4 rombios32.c
|
|
--- rombios32.c 30 Sep 2006 11:22:53 -0000 1.4
|
|
+++ rombios32.c 1 Oct 2006 16:03:54 -0000
|
|
@@ -55,13 +55,10 @@
|
|
|
|
#define APIC_ENABLED 0x0100
|
|
|
|
-#define CPU_COUNT_ADDR 0xf000
|
|
#define AP_BOOT_ADDR 0x10000
|
|
|
|
#define MPTABLE_MAX_SIZE 0x00002000
|
|
-#define ACPI_DATA_SIZE 0x00010000
|
|
#define SMI_CMD_IO_ADDR 0xb2
|
|
-#define PM_IO_BASE 0xb000
|
|
|
|
#define BIOS_TMP_STORAGE 0x00030000 /* 64 KB used to copy the BIOS to shadow RAM */
|
|
|
|
@@ -354,12 +351,14 @@
|
|
|
|
void delay_ms(int n)
|
|
{
|
|
- int i, j, r1, r2;
|
|
+ int i, j;
|
|
for(i = 0; i < n; i++) {
|
|
-#if BX_QEMU
|
|
+#ifdef BX_QEMU
|
|
/* approximative ! */
|
|
for(j = 0; j < 1000000; j++);
|
|
#else
|
|
+ {
|
|
+ int r1, r2;
|
|
j = 66;
|
|
r1 = inb(0x61) & 0x10;
|
|
do {
|
|
@@ -369,6 +368,7 @@
|
|
r1 = r2;
|
|
}
|
|
} while (j > 0);
|
|
+ }
|
|
#endif
|
|
}
|
|
}
|
|
Index: rombios32start.S
|
|
===================================================================
|
|
RCS file: /cvsroot/bochs/bochs/bios/rombios32start.S,v
|
|
retrieving revision 1.1
|
|
diff -u -w -r1.1 rombios32start.S
|
|
--- rombios32start.S 28 Sep 2006 18:56:20 -0000 1.1
|
|
+++ rombios32start.S 1 Oct 2006 16:03:54 -0000
|
|
@@ -1,3 +1,25 @@
|
|
+/////////////////////////////////////////////////////////////////////////
|
|
+// $Id: bios.diff,v 1.15 2006-10-01 16:08:15 bellard Exp $
|
|
+/////////////////////////////////////////////////////////////////////////
|
|
+//
|
|
+// 32 bit Bochs BIOS init code
|
|
+// Copyright (C) 2006 Fabrice Bellard
|
|
+//
|
|
+// This library is free software; you can redistribute it and/or
|
|
+// modify it under the terms of the GNU Lesser General Public
|
|
+// License as published by the Free Software Foundation; either
|
|
+// version 2 of the License, or (at your option) any later version.
|
|
+//
|
|
+// This library is distributed in the hope that it will be useful,
|
|
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
+// Lesser General Public License for more details.
|
|
+//
|
|
+// You should have received a copy of the GNU Lesser General Public
|
|
+// License along with this library; if not, write to the Free Software
|
|
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
+#include "rombios.h"
|
|
+
|
|
.globl _start
|
|
.globl smp_ap_boot_code_start
|
|
.globl smp_ap_boot_code_end
|
|
@@ -6,8 +28,6 @@
|
|
.global smm_code_start
|
|
.global smm_code_end
|
|
|
|
-#define PM_IO_BASE 0xb000
|
|
-
|
|
_start:
|
|
/* clear bss section */
|
|
xor %eax, %eax
|
|
@@ -18,13 +38,11 @@
|
|
|
|
jmp rombios32_init
|
|
|
|
-#define CPU_COUNT 0xf000
|
|
-
|
|
.code16
|
|
smp_ap_boot_code_start:
|
|
xor %ax, %ax
|
|
mov %ax, %ds
|
|
- incw CPU_COUNT
|
|
+ incw CPU_COUNT_ADDR
|
|
1:
|
|
hlt
|
|
jmp 1b
|
|
@@ -33,7 +51,7 @@
|
|
/* code to relocate SMBASE to 0xa0000 */
|
|
smm_relocation_start:
|
|
mov $0x38000 + 0x7efc, %ebx
|
|
- mov (%ebx), %al /* revision ID to see if x86_64 or x86 */
|
|
+ addr32 mov (%ebx), %al /* revision ID to see if x86_64 or x86 */
|
|
cmp $0x64, %al
|
|
je 1f
|
|
mov $0x38000 + 0x7ef8, %ebx
|
|
@@ -42,7 +60,7 @@
|
|
mov $0x38000 + 0x7f00, %ebx
|
|
2:
|
|
movl $0xa0000, %eax
|
|
- movl %eax, (%ebx)
|
|
+ addr32 movl %eax, (%ebx)
|
|
rsm
|
|
smm_relocation_end:
|
|
|