Remove unused A20 stuff
This commit is contained in:
parent
d5c9b29942
commit
c84a814610
13
src/cpu.js
13
src/cpu.js
|
@ -23,11 +23,6 @@ function CPU(bus, wm)
|
|||
|
||||
this.memory_size = v86util.view(Uint32Array, memory, 812, 1);
|
||||
|
||||
// Note: Currently unused (degrades performance and not required by any OS
|
||||
// that we support)
|
||||
this.a20_enabled = v86util.view(Int32Array, memory, 552, 1);
|
||||
this.a20_enabled[0] = +true;
|
||||
|
||||
this.mem8 = new Uint8Array(0);
|
||||
this.mem16 = new Uint16Array(this.mem8.buffer);
|
||||
this.mem32s = new Int32Array(this.mem8.buffer);
|
||||
|
@ -418,7 +413,6 @@ CPU.prototype.get_state = function()
|
|||
state[59] = this.devices.net;
|
||||
state[60] = this.devices.pic;
|
||||
|
||||
state[61] = this.a20_enabled[0];
|
||||
state[62] = this.fw_value;
|
||||
|
||||
state[63] = this.devices.ioapic;
|
||||
|
@ -514,7 +508,6 @@ CPU.prototype.set_state = function(state)
|
|||
this.devices.net = state[59];
|
||||
this.devices.pic = state[60];
|
||||
|
||||
this.a20_enabled[0] = state[61];
|
||||
this.fw_value = state[62];
|
||||
|
||||
this.devices.ioapic = state[63];
|
||||
|
@ -644,8 +637,6 @@ CPU.prototype.reboot_internal = function()
|
|||
|
||||
CPU.prototype.reset = function()
|
||||
{
|
||||
this.a20_enabled[0] = +true;
|
||||
|
||||
this.segment_is_null.fill(0);
|
||||
this.segment_limits.fill(0);
|
||||
//this.segment_infos = new Uint32Array(8);
|
||||
|
@ -800,8 +791,6 @@ CPU.prototype.init = function(settings, device_bus)
|
|||
}
|
||||
}
|
||||
|
||||
var a20_byte = 0;
|
||||
|
||||
io.register_read(0xB3, this, function()
|
||||
{
|
||||
// seabios smm_relocate_and_restore
|
||||
|
@ -809,6 +798,8 @@ CPU.prototype.init = function(settings, device_bus)
|
|||
return 0;
|
||||
});
|
||||
|
||||
var a20_byte = 0;
|
||||
|
||||
io.register_read(0x92, this, function()
|
||||
{
|
||||
return a20_byte;
|
||||
|
|
|
@ -205,9 +205,6 @@ pub const PREFIX_F2: i32 = PREFIX_REPNZ;
|
|||
pub const PREFIX_F3: i32 = PREFIX_REPZ;
|
||||
pub const PREFIX_66: i32 = PREFIX_MASK_OPSIZE;
|
||||
pub const LOG_CPU: i32 = 2;
|
||||
pub const A20_MASK: i32 = !(1 << 20);
|
||||
pub const A20_MASK16: i32 = !(1 << 20 - 1);
|
||||
pub const A20_MASK32: i32 = !(1 << 20 - 2);
|
||||
|
||||
pub const MXCSR_MASK: i32 = 0xffff;
|
||||
pub const MXCSR_FZ: i32 = 1 << 15;
|
||||
|
|
|
@ -17,7 +17,7 @@ pub const flags: *mut i32 = 120 as *mut i32;
|
|||
|
||||
pub const page_fault: *mut bool = 540 as *mut bool;
|
||||
pub const page_fault_error_code: *mut i32 = 544 as *mut i32;
|
||||
pub const a20_enabled: *mut bool = 552 as *mut bool;
|
||||
|
||||
pub const instruction_pointer: *mut i32 = 556 as *mut i32;
|
||||
pub const previous_ip: *mut i32 = 560 as *mut i32;
|
||||
pub const idtr_size: *mut i32 = 564 as *mut i32;
|
||||
|
|
|
@ -20,18 +20,13 @@ use cpu2::cpu::*;
|
|||
use cpu2::global_pointers::*;
|
||||
use page::Page;
|
||||
|
||||
const USE_A20: bool = false;
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe fn in_mapped_range(addr: u32) -> bool {
|
||||
return addr >= 0xA0000 && addr < 0xC0000 || addr >= *memory_size;
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe fn read8(mut addr: u32) -> i32 {
|
||||
if 0 != USE_A20 as i32 && 0 != *a20_enabled as i32 {
|
||||
addr &= A20_MASK as u32
|
||||
}
|
||||
pub unsafe fn read8(addr: u32) -> i32 {
|
||||
if in_mapped_range(addr) {
|
||||
return mmap_read8(addr);
|
||||
}
|
||||
|
@ -40,10 +35,7 @@ pub unsafe fn read8(mut addr: u32) -> i32 {
|
|||
};
|
||||
}
|
||||
#[no_mangle]
|
||||
pub unsafe fn read16(mut addr: u32) -> i32 {
|
||||
if 0 != USE_A20 as i32 && !*a20_enabled {
|
||||
addr &= A20_MASK as u32
|
||||
}
|
||||
pub unsafe fn read16(addr: u32) -> i32 {
|
||||
if in_mapped_range(addr) {
|
||||
return mmap_read16(addr);
|
||||
}
|
||||
|
@ -52,11 +44,8 @@ pub unsafe fn read16(mut addr: u32) -> i32 {
|
|||
};
|
||||
}
|
||||
#[no_mangle]
|
||||
pub unsafe fn read_aligned16(mut addr: u32) -> i32 {
|
||||
pub unsafe fn read_aligned16(addr: u32) -> i32 {
|
||||
dbg_assert!(addr < 0x80000000);
|
||||
if 0 != USE_A20 as i32 && !*a20_enabled {
|
||||
addr &= A20_MASK16 as u32
|
||||
}
|
||||
if in_mapped_range(addr << 1) {
|
||||
return mmap_read16(addr << 1);
|
||||
}
|
||||
|
@ -65,10 +54,7 @@ pub unsafe fn read_aligned16(mut addr: u32) -> i32 {
|
|||
};
|
||||
}
|
||||
#[no_mangle]
|
||||
pub unsafe fn read32s(mut addr: u32) -> i32 {
|
||||
if 0 != USE_A20 as i32 && 0 != *a20_enabled as i32 {
|
||||
addr &= A20_MASK as u32
|
||||
}
|
||||
pub unsafe fn read32s(addr: u32) -> i32 {
|
||||
if in_mapped_range(addr) {
|
||||
return mmap_read32(addr);
|
||||
}
|
||||
|
@ -77,10 +63,7 @@ pub unsafe fn read32s(mut addr: u32) -> i32 {
|
|||
};
|
||||
}
|
||||
#[no_mangle]
|
||||
pub unsafe fn read64s(mut addr: u32) -> i64 {
|
||||
if 0 != USE_A20 as i32 && 0 != *a20_enabled as i32 {
|
||||
addr &= A20_MASK as u32
|
||||
}
|
||||
pub unsafe fn read64s(addr: u32) -> i64 {
|
||||
if in_mapped_range(addr) {
|
||||
return mmap_read32(addr) as i64 | (mmap_read32(addr.wrapping_add(4 as u32)) as i64) << 32;
|
||||
}
|
||||
|
@ -89,11 +72,8 @@ pub unsafe fn read64s(mut addr: u32) -> i64 {
|
|||
};
|
||||
}
|
||||
#[no_mangle]
|
||||
pub unsafe fn read_aligned32(mut addr: u32) -> i32 {
|
||||
pub unsafe fn read_aligned32(addr: u32) -> i32 {
|
||||
dbg_assert!(addr < 0x40000000 as u32);
|
||||
if 0 != USE_A20 as i32 && !*a20_enabled {
|
||||
addr &= A20_MASK32 as u32
|
||||
}
|
||||
if in_mapped_range(addr << 2) {
|
||||
return mmap_read32(addr << 2);
|
||||
}
|
||||
|
@ -102,10 +82,7 @@ pub unsafe fn read_aligned32(mut addr: u32) -> i32 {
|
|||
};
|
||||
}
|
||||
#[no_mangle]
|
||||
pub unsafe fn read128(mut addr: u32) -> reg128 {
|
||||
if 0 != USE_A20 as i32 && 0 != *a20_enabled as i32 {
|
||||
addr &= A20_MASK as u32
|
||||
}
|
||||
pub unsafe fn read128(addr: u32) -> reg128 {
|
||||
let mut value: reg128 = reg128 {
|
||||
i8_0: [0 as i8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
};
|
||||
|
@ -123,10 +100,7 @@ pub unsafe fn read128(mut addr: u32) -> reg128 {
|
|||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe fn write8(mut addr: u32, value: i32) {
|
||||
if 0 != USE_A20 as i32 && !*a20_enabled {
|
||||
addr &= A20_MASK as u32
|
||||
}
|
||||
pub unsafe fn write8(addr: u32, value: i32) {
|
||||
if in_mapped_range(addr) {
|
||||
mmap_write8(addr, value);
|
||||
}
|
||||
|
@ -141,10 +115,7 @@ pub unsafe fn write8_no_mmap_or_dirty_check(addr: u32, value: i32) {
|
|||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe fn write16(mut addr: u32, value: i32) {
|
||||
if 0 != USE_A20 as i32 && !*a20_enabled {
|
||||
addr &= A20_MASK as u32
|
||||
}
|
||||
pub unsafe fn write16(addr: u32, value: i32) {
|
||||
if in_mapped_range(addr) {
|
||||
mmap_write16(addr, value);
|
||||
}
|
||||
|
@ -154,11 +125,8 @@ pub unsafe fn write16(mut addr: u32, value: i32) {
|
|||
};
|
||||
}
|
||||
#[no_mangle]
|
||||
pub unsafe fn write_aligned16(mut addr: u32, value: u32) {
|
||||
pub unsafe fn write_aligned16(addr: u32, value: u32) {
|
||||
dbg_assert!(addr < 0x80000000);
|
||||
if 0 != USE_A20 as i32 && !*a20_enabled {
|
||||
addr &= A20_MASK16 as u32
|
||||
}
|
||||
let phys_addr: u32 = addr << 1;
|
||||
if in_mapped_range(phys_addr) {
|
||||
mmap_write16(phys_addr, value as i32);
|
||||
|
@ -169,10 +137,7 @@ pub unsafe fn write_aligned16(mut addr: u32, value: u32) {
|
|||
};
|
||||
}
|
||||
#[no_mangle]
|
||||
pub unsafe fn write32(mut addr: u32, value: i32) {
|
||||
if 0 != USE_A20 as i32 && !*a20_enabled {
|
||||
addr &= A20_MASK as u32
|
||||
}
|
||||
pub unsafe fn write32(addr: u32, value: i32) {
|
||||
if in_mapped_range(addr) {
|
||||
mmap_write32(addr, value);
|
||||
}
|
||||
|
@ -187,11 +152,8 @@ pub unsafe fn write_aligned32_no_mmap_or_dirty_check(addr: u32, value: i32) {
|
|||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe fn write_aligned32(mut addr: u32, value: i32) {
|
||||
pub unsafe fn write_aligned32(addr: u32, value: i32) {
|
||||
dbg_assert!(addr < 0x40000000 as u32);
|
||||
if 0 != USE_A20 as i32 && !*a20_enabled {
|
||||
addr &= A20_MASK32 as u32
|
||||
}
|
||||
let phys_addr: u32 = addr << 2;
|
||||
if in_mapped_range(phys_addr) {
|
||||
mmap_write32(phys_addr, value);
|
||||
|
@ -202,10 +164,7 @@ pub unsafe fn write_aligned32(mut addr: u32, value: i32) {
|
|||
};
|
||||
}
|
||||
#[no_mangle]
|
||||
pub unsafe fn write64(mut addr: u32, value: i64) {
|
||||
if 0 != USE_A20 as i32 && !*a20_enabled {
|
||||
addr &= A20_MASK as u32
|
||||
}
|
||||
pub unsafe fn write64(addr: u32, value: i64) {
|
||||
if in_mapped_range(addr) {
|
||||
mmap_write32(
|
||||
addr.wrapping_add(0 as u32),
|
||||
|
@ -219,10 +178,7 @@ pub unsafe fn write64(mut addr: u32, value: i64) {
|
|||
};
|
||||
}
|
||||
#[no_mangle]
|
||||
pub unsafe fn write128(mut addr: u32, value: reg128) {
|
||||
if 0 != USE_A20 as i32 && !*a20_enabled {
|
||||
addr &= A20_MASK as u32
|
||||
}
|
||||
pub unsafe fn write128(addr: u32, value: reg128) {
|
||||
if in_mapped_range(addr) {
|
||||
mmap_write128(
|
||||
addr,
|
||||
|
|
Loading…
Reference in a new issue