| 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: |
| |