SandboXP
1"use strict";2
3var
4/** @const */ LOG_ALL = -1,5/** @const */ LOG_NONE = 0,6
7/** @const */ LOG_OTHER = 0x000001,8/** @const */ LOG_CPU = 0x000002,9/** @const */ LOG_FPU = 0x000004,10/** @const */ LOG_MEM = 0x000008,11/** @const */ LOG_DMA = 0x000010,12/** @const */ LOG_IO = 0x000020,13/** @const */ LOG_PS2 = 0x000040,14/** @const */ LOG_PIC = 0x000080,15/** @const */ LOG_VGA = 0x000100,16/** @const */ LOG_PIT = 0x000200,17/** @const */ LOG_MOUSE = 0x000400,18/** @const */ LOG_PCI = 0x000800,19/** @const */ LOG_BIOS = 0x001000,20/** @const */ LOG_FLOPPY = 0x002000,21/** @const */ LOG_SERIAL = 0x004000,22/** @const */ LOG_DISK = 0x008000,23/** @const */ LOG_RTC = 0x010000,24/** @const */ LOG_HPET = 0x020000,25/** @const */ LOG_ACPI = 0x040000,26/** @const */ LOG_APIC = 0x080000,27/** @const */ LOG_NET = 0x100000,28/** @const */ LOG_VIRTIO = 0x200000,29/** @const */ LOG_9P = 0x400000,30/** @const */ LOG_SB16 = 0x800000;31
32
33/**
34* @const
35* @type {Array<Array<string|number>>}
36*/
37var LOG_NAMES = [38[1, ""],39[LOG_CPU, "CPU"],40[LOG_DISK, "DISK"],41[LOG_FPU, "FPU"],42[LOG_MEM, "MEM"],43[LOG_DMA, "DMA"],44[LOG_IO, "IO"],45[LOG_PS2, "PS2"],46[LOG_PIC, "PIC"],47[LOG_VGA, "VGA"],48[LOG_PIT, "PIT"],49[LOG_MOUSE, "MOUS"],50[LOG_PCI, "PCI"],51[LOG_BIOS, "BIOS"],52[LOG_FLOPPY, "FLOP"],53[LOG_SERIAL, "SERI"],54[LOG_RTC, "RTC"],55[LOG_HPET, "HPET"],56[LOG_ACPI, "ACPI"],57[LOG_APIC, "APIC"],58[LOG_NET, "NET"],59[LOG_VIRTIO, "VIO"],60[LOG_9P, "9P"],61[LOG_SB16, "SB16"]62];63
64var
65
66// flags register bitflags
67/** @const */ FLAG_CARRY = 1,68/** @const */ FLAG_PARITY = 4,69/** @const */ FLAG_ADJUST = 16,70/** @const */ FLAG_ZERO = 64,71/** @const */ FLAG_SIGN = 128,72/** @const */ FLAG_TRAP = 256,73/** @const */ FLAG_INTERRUPT = 512,74/** @const */ FLAG_DIRECTION = 1024,75/** @const */ FLAG_OVERFLOW = 2048,76/** @const */ FLAG_IOPL = 1 << 12 | 1 << 13,77/** @const */ FLAG_NT = 1 << 14,78/** @const */ FLAG_RF = 1 << 16,79/** @const */ FLAG_VM = 1 << 17,80/** @const */ FLAG_AC = 1 << 18,81/** @const */ FLAG_VIF = 1 << 19,82/** @const */ FLAG_VIP = 1 << 20,83/** @const */ FLAG_ID = 1 << 21,84
85/**
86* default values of reserved flags bits
87* @const
88*/
89FLAGS_DEFAULT = 1 << 1,90
91
92/** @const */ REG_EAX = 0,93/** @const */ REG_ECX = 1,94/** @const */ REG_EDX = 2,95/** @const */ REG_EBX = 3,96/** @const */ REG_ESP = 4,97/** @const */ REG_EBP = 5,98/** @const */ REG_ESI = 6,99/** @const */ REG_EDI = 7,100
101/** @const */ REG_ES = 0,102/** @const */ REG_CS = 1,103/** @const */ REG_SS = 2,104/** @const */ REG_DS = 3,105/** @const */ REG_FS = 4,106/** @const */ REG_GS = 5,107
108/** @const */ REG_LDTR = 7; // local descriptor table register109
110var
111/**112* The minimum number of bytes that can be memory-mapped
113* by one device.
114*
115* @const
116*/
117MMAP_BLOCK_BITS = 17,118/** @const */119MMAP_BLOCK_SIZE = 1 << MMAP_BLOCK_BITS;120
121/** @const */
122var CR0_PG = 1 << 31;123/** @const */
124var CR4_PAE = 1 << 5;125
126
127// https://github.com/qemu/seabios/blob/14221cd86eadba82255fdc55ed174d401c7a0a04/src/fw/paravirt.c#L205-L219
128
129/** @const */ var FW_CFG_SIGNATURE = 0x00;130/** @const */ var FW_CFG_ID = 0x01;131/** @const */ var FW_CFG_RAM_SIZE = 0x03;132/** @const */ var FW_CFG_NB_CPUS = 0x05;133/** @const */ var FW_CFG_MAX_CPUS = 0x0F;134/** @const */ var FW_CFG_NUMA = 0x0D;135/** @const */ var FW_CFG_FILE_DIR = 0x19;136
137/** @const */ var FW_CFG_CUSTOM_START = 0x8000;138// This value is specific to v86, choosen to hopefully not collide with other indexes
139/** @const */ var FW_CFG_FILE_START = 0xC000;140
141/** @const */ var FW_CFG_SIGNATURE_QEMU = 0x554D4551;142
143
144// See same constant in jit.rs
145/** @const */
146var WASM_TABLE_SIZE = 900;147
148/** @const */
149var WASM_TABLE_OFFSET = 1024;150
151
152/** @const */
153var MIXER_CHANNEL_LEFT = 0;154/** @const */
155var MIXER_CHANNEL_RIGHT = 1;156/** @const */
157var MIXER_CHANNEL_BOTH = 2;158/** @const */
159var MIXER_SRC_MASTER = 0;160/** @const */
161var MIXER_SRC_PCSPEAKER = 1;162/** @const */
163var MIXER_SRC_DAC = 2;164