Archived
10
0
Fork 0
This repository has been archived on 2022-03-30. You can view files and clone it, but cannot push or open issues or pull requests.
qemu/pc-bios/bios.diff

219 lines
6.2 KiB
Diff
Raw Normal View History

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: