Fabian 3 lat temu
rodzic
commit
c835023c0c
5 zmienionych plików z 3 dodań i 189 usunięć
  1. 0 73
      src/browser/print_stats.js
  2. 0 78
      src/const.js
  3. 3 18
      src/cpu.js
  4. 0 1
      src/rust/cpu/fpu.rs
  5. 0 19
      src/rust/jit.rs

+ 0 - 73
src/browser/print_stats.js

@@ -4,8 +4,6 @@ const print_stats = {
     stats_to_string: function(cpu)
     {
         return print_stats.print_misc_stats(cpu) +
-            print_stats.print_basic_block_duplication(cpu) +
-            print_stats.print_wasm_basic_block_count_histogram(cpu) +
             print_stats.print_instruction_counts(cpu);
     },
 
@@ -97,77 +95,6 @@ const print_stats = {
         return text;
     },
 
-    print_basic_block_duplication: function(cpu)
-    {
-        let unique = 0;
-        let total = 0;
-        let duplicates = 0;
-        const histogram = [];
-        const addresses = {};
-
-        for(let i = 0; i < JIT_CACHE_ARRAY_SIZE; i++)
-        {
-            const address = cpu.wm.exports["jit_get_entry_address"](i);
-
-            if(address !== 0)
-            {
-                addresses[address] = (addresses[address] || 0) + 1;
-            }
-        }
-
-        for(let [address, count] of Object.entries(addresses))
-        {
-            dbg_assert(count >= 1);
-            unique++;
-            total += count;
-            duplicates += count - 1;
-
-            //for(let i = histogram.length; i < count + 1; i++) histogram.push(0);
-            //histogram[count]++;
-        }
-
-        let text = "";
-        text += "UNIQUE=" + unique + " DUPLICATES=" + duplicates + " TOTAL=" + total + "\n";
-
-        return text;
-    },
-
-    print_wasm_basic_block_count_histogram: function(cpu)
-    {
-        let text = "";
-        let pending_count = 0;
-        const histogram = Object.create(null);
-
-        for(let i = 0; i < JIT_CACHE_ARRAY_SIZE; i++)
-        {
-            const length = cpu.wm.exports["jit_get_entry_length"](i);
-            pending_count += cpu.wm.exports["jit_get_entry_pending"](i);
-            histogram[length] = (histogram[length] || 0) + 1;
-        }
-
-        let above = 0;
-
-        for(let i of Object.keys(histogram))
-        {
-            i = +i;
-            if(i >= 32)
-            {
-                above += histogram[i];
-            }
-        }
-
-        for(let i = 0; i < 32; i++)
-        {
-            text += i + ":" + (histogram[i] || 0) + " ";
-        }
-
-        text += "32+:" + above + "\n";
-
-        text += "Pending: " + pending_count + "\n";
-
-        return text;
-    },
-
     print_instruction_counts: function(cpu)
     {
         return [

+ 0 - 78
src/const.js

@@ -86,36 +86,6 @@ var
  */
 flags_default = 1 << 1,
 
-/**
- * bitmask to select non-reserved flags bits
- * @const
- */
-flags_mask =
-    flag_carry | flag_parity | flag_adjust | flag_zero | flag_sign | flag_trap | flag_interrupt |
-    flag_direction | flag_overflow | flag_iopl | flag_nt | flag_rf | flag_vm | flag_ac |
-    flag_vif | flag_vip | flag_id,
-
-
-/**
- * all arithmetic flags
- * @const
- */
-flags_all = flag_carry | flag_parity | flag_adjust | flag_zero | flag_sign | flag_overflow,
-
-
-/**
- * opsizes used by get flag functions
- *
- * @const
- */
-OPSIZE_8 = 7,
-/** @const */
-OPSIZE_16 = 15,
-/** @const */
-OPSIZE_32 = 31,
-
-/** @const */
-PSE_ENABLED = 128,
 
 /** @const */ reg_eax = 0,
 /** @const */ reg_ecx = 1,
@@ -126,25 +96,6 @@ PSE_ENABLED = 128,
 /** @const */ reg_esi = 6,
 /** @const */ reg_edi = 7,
 
-/** @const */ reg_ax = 0,
-/** @const */ reg_cx = 2,
-/** @const */ reg_dx = 4,
-/** @const */ reg_bx = 6,
-/** @const */ reg_sp = 8,
-/** @const */ reg_bp = 10,
-/** @const */ reg_si = 12,
-/** @const */ reg_di = 14,
-
-/** @const */ reg_al = 0,
-/** @const */ reg_cl = 4,
-/** @const */ reg_dl = 8,
-/** @const */ reg_bl = 12,
-/** @const */ reg_ah = 1,
-/** @const */ reg_ch = 5,
-/** @const */ reg_dh = 9,
-/** @const */ reg_bh = 13,
-
-
 /** @const */ reg_es = 0,
 /** @const */ reg_cs = 1,
 /** @const */ reg_ss = 2,
@@ -320,29 +271,6 @@ var IA32_APIC_BASE_EN = 1 << 11;
 
 /** @const */ var FW_CFG_SIGNATURE_QEMU = 0x554D4551;
 
-
-/** @const */
-var PREFIX_MASK_REP = 0b11000;
-/** @const */
-var PREFIX_REPZ = 0b01000;
-/** @const */
-var PREFIX_REPNZ = 0b10000;
-
-/** @const */
-var PREFIX_MASK_SEGMENT = 0b111;
-
-/** @const */
-var PREFIX_MASK_OPSIZE = 0b100000;
-/** @const */
-var PREFIX_MASK_ADDRSIZE = 0b1000000;
-
-/** @const */
-var PREFIX_F2 = PREFIX_REPNZ; // alias
-/** @const */
-var PREFIX_F3 = PREFIX_REPZ; // alias
-/** @const */
-var PREFIX_66 = PREFIX_MASK_OPSIZE; // alias
-
 /** @const */
 var MXCSR_MASK = (0xFFFF & ~(1 << 6));
 
@@ -353,11 +281,5 @@ var WASM_TABLE_SIZE = 900;
 /** @const */
 var WASM_TABLE_OFFSET = 1024;
 
-/** @const */
-var JIT_CACHE_ARRAY_SIZE = 0x40000;
-
 /** @const */
 const WASM_EXPORT_TABLE_NAME = "__indirect_function_table";
-
-/** @const */
-const WASM_PAGE_SIZE = 64 * 1024;

+ 3 - 18
src/cpu.js

@@ -24,7 +24,6 @@ function CPU(bus, wm)
     this.memory_size = v86util.view(Uint32Array, memory, 812, 1);
 
     this.mem8 = new Uint8Array(0);
-    this.mem16 = new Uint16Array(this.mem8.buffer);
     this.mem32s = new Int32Array(this.mem8.buffer);
 
     this.segment_is_null = v86util.view(Uint8Array, memory, 724, 8);
@@ -54,17 +53,8 @@ function CPU(bus, wm)
 
     this.cr = v86util.view(Int32Array, memory, 580, 8);
 
-    /** @type {number} */
-    this.cr[0] = 0;
-    /** @type {number} */
-    this.cr[2] = 0;
-    /** @type {number} */
-    this.cr[3] = 0;
-    /** @type {number} */
-    this.cr[4] = 0;
-
     // current privilege level
-    this.cpl = v86util.view(Int32Array, memory, 612, 1);
+    this.cpl = v86util.view(Uint8Array, memory, 612, 1);
 
     // current operand/address size
     this.is_32 = v86util.view(Int32Array, memory, 804, 1);
@@ -132,10 +122,6 @@ function CPU(bus, wm)
 
     // registers
     this.reg32 = v86util.view(Int32Array, memory, 64, 8);
-    this.reg16s = v86util.view(Int16Array, memory, 64, 16);
-    this.reg16 = v86util.view(Uint16Array, memory, 64, 16);
-    this.reg8s = v86util.view(Int8Array, memory, 64, 32);
-    this.reg8 = v86util.view(Uint8Array, memory, 64, 32);
 
     this.fpu_st = v86util.view(Int32Array, memory, 1152, 4 * 8);
 
@@ -684,7 +670,7 @@ CPU.prototype.reset = function()
     this.switch_cs_real_mode(0xF000);
 
     if(!this.switch_seg(reg_ss, 0x30)) dbg_assert(false);
-    this.reg16[reg_sp] = 0x100;
+    this.reg32[reg_esp] = 0x100;
 
     if(this.devices.virtio)
     {
@@ -724,7 +710,6 @@ CPU.prototype.create_memory = function(size)
     const memory_offset = this.allocate_memory(size);
 
     this.mem8 = v86util.view(Uint8Array, this.wm.instance.exports.memory, memory_offset, size);
-    this.mem16 = v86util.view(Uint16Array, this.wm.instance.exports.memory, memory_offset, size >> 1);
     this.mem32s = v86util.view(Uint32Array, this.wm.instance.exports.memory, memory_offset, size >> 2);
 };
 
@@ -1992,7 +1977,7 @@ CPU.prototype.cpuid = function()
 
     if(level === 4)
     {
-        dbg_log("cpuid: eax=" + h(this.reg32[reg_eax] >>> 0, 8) + " cl=" + h(this.reg8[reg_cl], 2), LOG_CPU);
+        dbg_log("cpuid: eax=" + h(this.reg32[reg_eax] >>> 0, 8) + " cl=" + h(this.reg32[reg_ecx] & 0xFF, 2), LOG_CPU);
     }
     else if(level !== 0 && level !== 2 && level !== (0x80000000 | 0))
     {

+ 0 - 1
src/rust/cpu/fpu.rs

@@ -775,7 +775,6 @@ pub unsafe fn fpu_fchs() {
     fpu_write_st(*fpu_stack_ptr as i32, -st0);
 }
 
-#[no_mangle]
 pub unsafe fn fpu_fabs() {
     let st0 = fpu_get_st0();
     fpu_write_st(*fpu_stack_ptr as i32, st0.abs());

+ 0 - 19
src/rust/jit.rs

@@ -1160,25 +1160,6 @@ pub fn jit_page_has_code(page: Page) -> bool {
     match ctx.page_has_pending_code.get(&page) { Some(&(_, PageState::Compiling { .. })) => true, _ => false }
 }
 
-#[no_mangle]
-pub fn jit_get_entry_length(_i: u32) -> u32 {
-    //#[allow(unused_variables)]
-    //let entry = jit_cache_array::get(i);
-    //#[cfg(debug_assertions)]
-    //return entry.len;
-    //#[cfg(not(debug_assertions))]
-    0
-}
-#[no_mangle]
-pub fn jit_get_entry_address(_i: u32) -> u32 {
-    //if cfg!(debug_assertions) { jit_cache_array::get(i).start_addr } else { 0 }
-    0
-}
-#[no_mangle]
-pub fn jit_get_entry_pending(_i: u32) -> bool {
-    //if cfg!(debug_assertions) { jit_cache_array::get(i).pending } else { false }
-    false
-}
 #[no_mangle]
 pub fn jit_get_wasm_table_index_free_list_count() -> u32 {
     if cfg!(debug_assertions) {