v86 0.4.0 → 0.5.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Readme.md +56 -111
- package/build/libv86-debug.js +12680 -0
- package/build/libv86-debug.mjs +732 -0
- package/build/libv86.js +710 -0
- package/build/libv86.mjs +637 -0
- package/build/v86-debug.wasm +0 -0
- package/build/v86-fallback.wasm +0 -0
- package/build/v86.wasm +0 -0
- package/package.json +12 -35
- package/bios/.gitignore +0 -1
- package/bios/COPYING.LESSER +0 -165
- package/bios/bochs-bios.bin +0 -0
- package/bios/bochs-vgabios.bin +0 -0
- package/bios/fetch-and-build-seabios.sh +0 -13
- package/bios/seabios/.config +0 -113
- package/bios/seabios/.config.old +0 -114
- package/bios/seabios/.gitignore +0 -4
- package/bios/seabios/COPYING +0 -674
- package/bios/seabios/COPYING.LESSER +0 -165
- package/bios/seabios/Makefile +0 -286
- package/bios/seabios/README +0 -17
- package/bios/seabios/docs/Build_overview.md +0 -104
- package/bios/seabios/docs/Contributing.md +0 -20
- package/bios/seabios/docs/Debugging.md +0 -111
- package/bios/seabios/docs/Developer_Documentation.md +0 -25
- package/bios/seabios/docs/Developer_links.md +0 -86
- package/bios/seabios/docs/Download.md +0 -27
- package/bios/seabios/docs/Execution_and_code_flow.md +0 -178
- package/bios/seabios/docs/Linking_overview.md +0 -160
- package/bios/seabios/docs/Mailinglist.md +0 -8
- package/bios/seabios/docs/Memory_Model.md +0 -253
- package/bios/seabios/docs/README +0 -5
- package/bios/seabios/docs/Releases.md +0 -482
- package/bios/seabios/docs/Runtime_config.md +0 -193
- package/bios/seabios/docs/SeaBIOS.md +0 -17
- package/bios/seabios/docs/SeaVGABIOS.md +0 -39
- package/bios/seabios/out/autoconf.h +0 -117
- package/bios/seabios/out/include/config/acpi/dsdt.h +0 -0
- package/bios/seabios/out/include/config/acpi.h +0 -0
- package/bios/seabios/out/include/config/ahci.h +0 -0
- package/bios/seabios/out/include/config/apmbios.h +0 -0
- package/bios/seabios/out/include/config/ata/dma.h +0 -0
- package/bios/seabios/out/include/config/ata/pio32.h +0 -0
- package/bios/seabios/out/include/config/ata.h +0 -0
- package/bios/seabios/out/include/config/auto.conf +0 -69
- package/bios/seabios/out/include/config/auto.conf.cmd +0 -9
- package/bios/seabios/out/include/config/boot.h +0 -0
- package/bios/seabios/out/include/config/bootorder.h +0 -0
- package/bios/seabios/out/include/config/build/vgabios.h +0 -0
- package/bios/seabios/out/include/config/call32/smm.h +0 -0
- package/bios/seabios/out/include/config/cdrom/boot.h +0 -0
- package/bios/seabios/out/include/config/cdrom/emu.h +0 -0
- package/bios/seabios/out/include/config/debug/level.h +0 -0
- package/bios/seabios/out/include/config/drives.h +0 -0
- package/bios/seabios/out/include/config/entry/extrastack.h +0 -0
- package/bios/seabios/out/include/config/esp/scsi.h +0 -0
- package/bios/seabios/out/include/config/flash/floppy.h +0 -0
- package/bios/seabios/out/include/config/floppy.h +0 -0
- package/bios/seabios/out/include/config/fw/romfile/load.h +0 -0
- package/bios/seabios/out/include/config/hardware/irq.h +0 -0
- package/bios/seabios/out/include/config/kbd/call/int15/4f.h +0 -0
- package/bios/seabios/out/include/config/keyboard.h +0 -0
- package/bios/seabios/out/include/config/lpt.h +0 -0
- package/bios/seabios/out/include/config/lsi/scsi.h +0 -0
- package/bios/seabios/out/include/config/malloc/uppermemory.h +0 -0
- package/bios/seabios/out/include/config/megasas.h +0 -0
- package/bios/seabios/out/include/config/mouse.h +0 -0
- package/bios/seabios/out/include/config/mpt/scsi.h +0 -0
- package/bios/seabios/out/include/config/mptable.h +0 -0
- package/bios/seabios/out/include/config/mtrr/init.h +0 -0
- package/bios/seabios/out/include/config/optionroms.h +0 -0
- package/bios/seabios/out/include/config/override/pci/id.h +0 -0
- package/bios/seabios/out/include/config/pcibios.h +0 -0
- package/bios/seabios/out/include/config/pirtable.h +0 -0
- package/bios/seabios/out/include/config/pmm.h +0 -0
- package/bios/seabios/out/include/config/pmtimer.h +0 -0
- package/bios/seabios/out/include/config/pnpbios.h +0 -0
- package/bios/seabios/out/include/config/ps2port.h +0 -0
- package/bios/seabios/out/include/config/pvscsi.h +0 -0
- package/bios/seabios/out/include/config/qemu/hardware.h +0 -0
- package/bios/seabios/out/include/config/qemu.h +0 -0
- package/bios/seabios/out/include/config/rom/size.h +0 -0
- package/bios/seabios/out/include/config/rtc/timer.h +0 -0
- package/bios/seabios/out/include/config/s3/resume.h +0 -0
- package/bios/seabios/out/include/config/sdcard.h +0 -0
- package/bios/seabios/out/include/config/serial.h +0 -0
- package/bios/seabios/out/include/config/tcgbios.h +0 -0
- package/bios/seabios/out/include/config/threads.h +0 -0
- package/bios/seabios/out/include/config/tristate.conf +0 -4
- package/bios/seabios/out/include/config/tsc/timer.h +0 -0
- package/bios/seabios/out/include/config/use/smm.h +0 -0
- package/bios/seabios/out/include/config/vga/allocate/extra/stack.h +0 -0
- package/bios/seabios/out/include/config/vga/bochs/stdvga.h +0 -0
- package/bios/seabios/out/include/config/vga/bochs.h +0 -0
- package/bios/seabios/out/include/config/vga/did.h +0 -0
- package/bios/seabios/out/include/config/vga/extra/stack/size.h +0 -0
- package/bios/seabios/out/include/config/vga/fixup/asm.h +0 -0
- package/bios/seabios/out/include/config/vga/pci.h +0 -0
- package/bios/seabios/out/include/config/vga/stdvga/ports.h +0 -0
- package/bios/seabios/out/include/config/vga/vbe.h +0 -0
- package/bios/seabios/out/include/config/vga/vid.h +0 -0
- package/bios/seabios/out/include/config/vgahooks.h +0 -0
- package/bios/seabios/out/include/config/virtio/blk.h +0 -0
- package/bios/seabios/out/include/config/virtio/scsi.h +0 -0
- package/bios/seabios/out/include/config/xen.h +0 -0
- package/bios/seabios/out/scripts/kconfig/conf +0 -0
- package/bios/seabios/out/scripts/kconfig/conf.o +0 -0
- package/bios/seabios/out/scripts/kconfig/zconf.hash.c +0 -289
- package/bios/seabios/out/scripts/kconfig/zconf.lex.c +0 -2420
- package/bios/seabios/out/scripts/kconfig/zconf.tab.c +0 -2538
- package/bios/seabios/out/scripts/kconfig/zconf.tab.o +0 -0
- package/bios/seabios/scripts/acpi_extract.py +0 -366
- package/bios/seabios/scripts/acpi_extract_preprocess.py +0 -41
- package/bios/seabios/scripts/buildrom.py +0 -56
- package/bios/seabios/scripts/buildversion.py +0 -134
- package/bios/seabios/scripts/checkrom.py +0 -95
- package/bios/seabios/scripts/checkstack.py +0 -226
- package/bios/seabios/scripts/checksum.py +0 -16
- package/bios/seabios/scripts/encodeint.py +0 -21
- package/bios/seabios/scripts/gen-offsets.sh +0 -17
- package/bios/seabios/scripts/kconfig/.gitignore +0 -22
- package/bios/seabios/scripts/kconfig/Makefile +0 -331
- package/bios/seabios/scripts/kconfig/POTFILES.in +0 -12
- package/bios/seabios/scripts/kconfig/check.sh +0 -13
- package/bios/seabios/scripts/kconfig/conf.c +0 -718
- package/bios/seabios/scripts/kconfig/confdata.c +0 -1250
- package/bios/seabios/scripts/kconfig/expr.c +0 -1168
- package/bios/seabios/scripts/kconfig/expr.h +0 -241
- package/bios/seabios/scripts/kconfig/gconf.c +0 -1542
- package/bios/seabios/scripts/kconfig/gconf.glade +0 -661
- package/bios/seabios/scripts/kconfig/images.c +0 -326
- package/bios/seabios/scripts/kconfig/kxgettext.c +0 -235
- package/bios/seabios/scripts/kconfig/lex.zconf.c +0 -2430
- package/bios/seabios/scripts/kconfig/list.h +0 -131
- package/bios/seabios/scripts/kconfig/lkc.h +0 -200
- package/bios/seabios/scripts/kconfig/lkc_proto.h +0 -57
- package/bios/seabios/scripts/kconfig/lxdialog/.gitignore +0 -4
- package/bios/seabios/scripts/kconfig/lxdialog/BIG.FAT.WARNING +0 -4
- package/bios/seabios/scripts/kconfig/lxdialog/check-lxdialog.sh +0 -87
- package/bios/seabios/scripts/kconfig/lxdialog/checklist.c +0 -332
- package/bios/seabios/scripts/kconfig/lxdialog/dialog.h +0 -257
- package/bios/seabios/scripts/kconfig/lxdialog/inputbox.c +0 -301
- package/bios/seabios/scripts/kconfig/lxdialog/menubox.c +0 -437
- package/bios/seabios/scripts/kconfig/lxdialog/textbox.c +0 -408
- package/bios/seabios/scripts/kconfig/lxdialog/util.c +0 -713
- package/bios/seabios/scripts/kconfig/lxdialog/yesno.c +0 -114
- package/bios/seabios/scripts/kconfig/mconf.c +0 -1036
- package/bios/seabios/scripts/kconfig/menu.c +0 -697
- package/bios/seabios/scripts/kconfig/merge_config.sh +0 -150
- package/bios/seabios/scripts/kconfig/nconf.c +0 -1556
- package/bios/seabios/scripts/kconfig/nconf.gui.c +0 -656
- package/bios/seabios/scripts/kconfig/nconf.h +0 -96
- package/bios/seabios/scripts/kconfig/qconf.cc +0 -1795
- package/bios/seabios/scripts/kconfig/qconf.h +0 -338
- package/bios/seabios/scripts/kconfig/streamline_config.pl +0 -647
- package/bios/seabios/scripts/kconfig/symbol.c +0 -1373
- package/bios/seabios/scripts/kconfig/util.c +0 -157
- package/bios/seabios/scripts/kconfig/zconf.gperf +0 -48
- package/bios/seabios/scripts/kconfig/zconf.hash.c_shipped +0 -289
- package/bios/seabios/scripts/kconfig/zconf.l +0 -363
- package/bios/seabios/scripts/kconfig/zconf.lex.c_shipped +0 -2420
- package/bios/seabios/scripts/kconfig/zconf.tab.c_shipped +0 -2538
- package/bios/seabios/scripts/kconfig/zconf.y +0 -733
- package/bios/seabios/scripts/layoutrom.py +0 -705
- package/bios/seabios/scripts/python23compat.py +0 -14
- package/bios/seabios/scripts/readserial.py +0 -190
- package/bios/seabios/scripts/tarball.sh +0 -36
- package/bios/seabios/scripts/test-build.sh +0 -90
- package/bios/seabios/scripts/transdump.py +0 -53
- package/bios/seabios/scripts/vgafixup.py +0 -96
- package/bios/seabios/src/Kconfig +0 -579
- package/bios/seabios/src/apm.c +0 -215
- package/bios/seabios/src/asm-offsets.c +0 -23
- package/bios/seabios/src/biosvar.h +0 -130
- package/bios/seabios/src/block.c +0 -623
- package/bios/seabios/src/block.h +0 -121
- package/bios/seabios/src/bmp.c +0 -117
- package/bios/seabios/src/boot.c +0 -793
- package/bios/seabios/src/bootsplash.c +0 -255
- package/bios/seabios/src/bregs.h +0 -80
- package/bios/seabios/src/byteorder.h +0 -71
- package/bios/seabios/src/cdrom.c +0 -322
- package/bios/seabios/src/clock.c +0 -506
- package/bios/seabios/src/code16gcc.s +0 -1
- package/bios/seabios/src/config.h +0 -108
- package/bios/seabios/src/cp437.c +0 -275
- package/bios/seabios/src/cp437.h +0 -1
- package/bios/seabios/src/disk.c +0 -779
- package/bios/seabios/src/e820map.c +0 -152
- package/bios/seabios/src/e820map.h +0 -26
- package/bios/seabios/src/entryfuncs.S +0 -165
- package/bios/seabios/src/farptr.h +0 -208
- package/bios/seabios/src/font.c +0 -139
- package/bios/seabios/src/fw/acpi-dsdt-cpu-hotplug.dsl +0 -78
- package/bios/seabios/src/fw/acpi-dsdt-dbug.dsl +0 -26
- package/bios/seabios/src/fw/acpi-dsdt-hpet.dsl +0 -36
- package/bios/seabios/src/fw/acpi-dsdt-isa.dsl +0 -102
- package/bios/seabios/src/fw/acpi-dsdt-pci-crs.dsl +0 -90
- package/bios/seabios/src/fw/acpi-dsdt.dsl +0 -342
- package/bios/seabios/src/fw/acpi-dsdt.hex +0 -554
- package/bios/seabios/src/fw/acpi.c +0 -685
- package/bios/seabios/src/fw/biostables.c +0 -491
- package/bios/seabios/src/fw/coreboot.c +0 -569
- package/bios/seabios/src/fw/csm.c +0 -347
- package/bios/seabios/src/fw/dev-pci.h +0 -52
- package/bios/seabios/src/fw/dev-piix.h +0 -29
- package/bios/seabios/src/fw/dev-q35.h +0 -52
- package/bios/seabios/src/fw/lzmadecode.c +0 -398
- package/bios/seabios/src/fw/lzmadecode.h +0 -67
- package/bios/seabios/src/fw/mptable.c +0 -197
- package/bios/seabios/src/fw/mtrr.c +0 -105
- package/bios/seabios/src/fw/multiboot.c +0 -111
- package/bios/seabios/src/fw/paravirt.c +0 -624
- package/bios/seabios/src/fw/paravirt.h +0 -63
- package/bios/seabios/src/fw/pciinit.c +0 -1187
- package/bios/seabios/src/fw/pirtable.c +0 -103
- package/bios/seabios/src/fw/q35-acpi-dsdt.dsl +0 -450
- package/bios/seabios/src/fw/romfile_loader.c +0 -259
- package/bios/seabios/src/fw/romfile_loader.h +0 -91
- package/bios/seabios/src/fw/shadow.c +0 -208
- package/bios/seabios/src/fw/smbios.c +0 -585
- package/bios/seabios/src/fw/smm.c +0 -269
- package/bios/seabios/src/fw/smp.c +0 -194
- package/bios/seabios/src/fw/ssdt-misc.dsl +0 -104
- package/bios/seabios/src/fw/ssdt-misc.hex +0 -88
- package/bios/seabios/src/fw/ssdt-pcihp.dsl +0 -36
- package/bios/seabios/src/fw/ssdt-pcihp.hex +0 -38
- package/bios/seabios/src/fw/ssdt-proc.dsl +0 -48
- package/bios/seabios/src/fw/ssdt-proc.hex +0 -35
- package/bios/seabios/src/fw/xen.c +0 -149
- package/bios/seabios/src/fw/xen.h +0 -125
- package/bios/seabios/src/gen-defs.h +0 -19
- package/bios/seabios/src/hw/ahci.c +0 -697
- package/bios/seabios/src/hw/ahci.h +0 -201
- package/bios/seabios/src/hw/ata.c +0 -1046
- package/bios/seabios/src/hw/ata.h +0 -163
- package/bios/seabios/src/hw/blockcmd.c +0 -372
- package/bios/seabios/src/hw/blockcmd.h +0 -114
- package/bios/seabios/src/hw/dma.c +0 -67
- package/bios/seabios/src/hw/esp-scsi.c +0 -241
- package/bios/seabios/src/hw/esp-scsi.h +0 -8
- package/bios/seabios/src/hw/floppy.c +0 -741
- package/bios/seabios/src/hw/lsi-scsi.c +0 -221
- package/bios/seabios/src/hw/lsi-scsi.h +0 -8
- package/bios/seabios/src/hw/megasas.c +0 -405
- package/bios/seabios/src/hw/megasas.h +0 -8
- package/bios/seabios/src/hw/mpt-scsi.c +0 -319
- package/bios/seabios/src/hw/mpt-scsi.h +0 -8
- package/bios/seabios/src/hw/nvme-int.h +0 -199
- package/bios/seabios/src/hw/nvme.c +0 -708
- package/bios/seabios/src/hw/nvme.h +0 -17
- package/bios/seabios/src/hw/pci.c +0 -133
- package/bios/seabios/src/hw/pci.h +0 -47
- package/bios/seabios/src/hw/pci_ids.h +0 -2632
- package/bios/seabios/src/hw/pci_regs.h +0 -556
- package/bios/seabios/src/hw/pcidevice.c +0 -192
- package/bios/seabios/src/hw/pcidevice.h +0 -76
- package/bios/seabios/src/hw/pic.c +0 -115
- package/bios/seabios/src/hw/pic.h +0 -60
- package/bios/seabios/src/hw/ps2port.c +0 -543
- package/bios/seabios/src/hw/ps2port.h +0 -67
- package/bios/seabios/src/hw/pvscsi.c +0 -333
- package/bios/seabios/src/hw/pvscsi.h +0 -8
- package/bios/seabios/src/hw/ramdisk.c +0 -108
- package/bios/seabios/src/hw/rtc.c +0 -100
- package/bios/seabios/src/hw/rtc.h +0 -75
- package/bios/seabios/src/hw/sdcard.c +0 -572
- package/bios/seabios/src/hw/serialio.c +0 -113
- package/bios/seabios/src/hw/serialio.h +0 -29
- package/bios/seabios/src/hw/timer.c +0 -259
- package/bios/seabios/src/hw/tpm_drivers.c +0 -636
- package/bios/seabios/src/hw/tpm_drivers.h +0 -127
- package/bios/seabios/src/hw/usb-ehci.c +0 -650
- package/bios/seabios/src/hw/usb-ehci.h +0 -177
- package/bios/seabios/src/hw/usb-hid.c +0 -442
- package/bios/seabios/src/hw/usb-hid.h +0 -29
- package/bios/seabios/src/hw/usb-hub.c +0 -205
- package/bios/seabios/src/hw/usb-hub.h +0 -64
- package/bios/seabios/src/hw/usb-msc.c +0 -222
- package/bios/seabios/src/hw/usb-msc.h +0 -10
- package/bios/seabios/src/hw/usb-ohci.c +0 -568
- package/bios/seabios/src/hw/usb-ohci.h +0 -144
- package/bios/seabios/src/hw/usb-uas.c +0 -289
- package/bios/seabios/src/hw/usb-uas.h +0 -9
- package/bios/seabios/src/hw/usb-uhci.c +0 -571
- package/bios/seabios/src/hw/usb-uhci.h +0 -128
- package/bios/seabios/src/hw/usb-xhci.c +0 -1161
- package/bios/seabios/src/hw/usb-xhci.h +0 -133
- package/bios/seabios/src/hw/usb.c +0 -499
- package/bios/seabios/src/hw/usb.h +0 -254
- package/bios/seabios/src/hw/virtio-blk.c +0 -211
- package/bios/seabios/src/hw/virtio-blk.h +0 -43
- package/bios/seabios/src/hw/virtio-pci.c +0 -501
- package/bios/seabios/src/hw/virtio-pci.h +0 -151
- package/bios/seabios/src/hw/virtio-ring.c +0 -147
- package/bios/seabios/src/hw/virtio-ring.h +0 -121
- package/bios/seabios/src/hw/virtio-scsi.c +0 -220
- package/bios/seabios/src/hw/virtio-scsi.h +0 -47
- package/bios/seabios/src/jpeg.c +0 -1055
- package/bios/seabios/src/kbd.c +0 -599
- package/bios/seabios/src/list.h +0 -91
- package/bios/seabios/src/malloc.c +0 -561
- package/bios/seabios/src/malloc.h +0 -70
- package/bios/seabios/src/memmap.h +0 -21
- package/bios/seabios/src/misc.c +0 -195
- package/bios/seabios/src/mouse.c +0 -342
- package/bios/seabios/src/optionroms.c +0 -475
- package/bios/seabios/src/output.c +0 -584
- package/bios/seabios/src/output.h +0 -68
- package/bios/seabios/src/pcibios.c +0 -241
- package/bios/seabios/src/pmm.c +0 -176
- package/bios/seabios/src/pnpbios.c +0 -88
- package/bios/seabios/src/post.c +0 -337
- package/bios/seabios/src/resume.c +0 -157
- package/bios/seabios/src/romfile.c +0 -146
- package/bios/seabios/src/romfile.h +0 -21
- package/bios/seabios/src/romlayout.S +0 -698
- package/bios/seabios/src/sercon.c +0 -677
- package/bios/seabios/src/serial.c +0 -317
- package/bios/seabios/src/sha1.c +0 -147
- package/bios/seabios/src/sha1.h +0 -8
- package/bios/seabios/src/stacks.c +0 -771
- package/bios/seabios/src/stacks.h +0 -68
- package/bios/seabios/src/std/LegacyBios.h +0 -985
- package/bios/seabios/src/std/acpi.h +0 -323
- package/bios/seabios/src/std/bda.h +0 -174
- package/bios/seabios/src/std/disk.h +0 -175
- package/bios/seabios/src/std/mptable.h +0 -77
- package/bios/seabios/src/std/multiboot.h +0 -260
- package/bios/seabios/src/std/optionrom.h +0 -59
- package/bios/seabios/src/std/pirtable.h +0 -35
- package/bios/seabios/src/std/pmm.h +0 -19
- package/bios/seabios/src/std/pnpbios.h +0 -24
- package/bios/seabios/src/std/smbios.h +0 -167
- package/bios/seabios/src/std/tcg.h +0 -554
- package/bios/seabios/src/std/vbe.h +0 -156
- package/bios/seabios/src/std/vga.h +0 -63
- package/bios/seabios/src/string.c +0 -251
- package/bios/seabios/src/string.h +0 -31
- package/bios/seabios/src/system.c +0 -357
- package/bios/seabios/src/tcgbios.c +0 -2014
- package/bios/seabios/src/tcgbios.h +0 -19
- package/bios/seabios/src/types.h +0 -156
- package/bios/seabios/src/util.h +0 -251
- package/bios/seabios/src/version.c +0 -5
- package/bios/seabios/src/vgahooks.c +0 -355
- package/bios/seabios/src/x86.c +0 -23
- package/bios/seabios/src/x86.h +0 -277
- package/bios/seabios/vgasrc/Kconfig +0 -211
- package/bios/seabios/vgasrc/bochsdisplay.c +0 -59
- package/bios/seabios/vgasrc/bochsvga.c +0 -447
- package/bios/seabios/vgasrc/bochsvga.h +0 -57
- package/bios/seabios/vgasrc/cbvga.c +0 -337
- package/bios/seabios/vgasrc/clext.c +0 -627
- package/bios/seabios/vgasrc/geodevga.c +0 -434
- package/bios/seabios/vgasrc/geodevga.h +0 -89
- package/bios/seabios/vgasrc/ramfb.c +0 -163
- package/bios/seabios/vgasrc/stdvga.c +0 -485
- package/bios/seabios/vgasrc/stdvga.h +0 -81
- package/bios/seabios/vgasrc/stdvgaio.c +0 -186
- package/bios/seabios/vgasrc/stdvgamodes.c +0 -534
- package/bios/seabios/vgasrc/swcursor.c +0 -96
- package/bios/seabios/vgasrc/vbe.c +0 -432
- package/bios/seabios/vgasrc/vgabios.c +0 -1131
- package/bios/seabios/vgasrc/vgabios.h +0 -88
- package/bios/seabios/vgasrc/vgaentry.S +0 -161
- package/bios/seabios/vgasrc/vgafb.c +0 -661
- package/bios/seabios/vgasrc/vgafb.h +0 -42
- package/bios/seabios/vgasrc/vgafonts.c +0 -785
- package/bios/seabios/vgasrc/vgahw.h +0 -152
- package/bios/seabios/vgasrc/vgainit.c +0 -202
- package/bios/seabios/vgasrc/vgalayout.lds.S +0 -23
- package/bios/seabios/vgasrc/vgautil.h +0 -103
- package/bios/seabios/vgasrc/vgaversion.c +0 -6
- package/bios/seabios-debug.bin +0 -0
- package/bios/seabios-debug.config +0 -117
- package/bios/seabios.bin +0 -0
- package/bios/seabios.config +0 -114
- package/bios/vgabios-debug.bin +0 -0
- package/bios/vgabios.bin +0 -0
- package/build/binaries.js +0 -1
- package/build/index-debug.cjs +0 -1
- package/build/index-debug.js +0 -1
- package/build/index.cjs +0 -1
- package/build/index.js +0 -1
- package/v86.css +0 -259
|
@@ -1,333 +0,0 @@
|
|
|
1
|
-
// QEMU VMWARE Paravirtualized SCSI boot support.
|
|
2
|
-
//
|
|
3
|
-
// Copyright (c) 2013 Ravello Systems LTD (http://ravellosystems.com)
|
|
4
|
-
//
|
|
5
|
-
// Authors:
|
|
6
|
-
// Evgeny Budilovsky <evgeny.budilovsky@ravellosystems.com>
|
|
7
|
-
//
|
|
8
|
-
// This file may be distributed under the terms of the GNU LGPLv3 license.
|
|
9
|
-
|
|
10
|
-
#include "block.h" // struct drive_s
|
|
11
|
-
#include "blockcmd.h" // scsi_drive_setup
|
|
12
|
-
#include "config.h" // CONFIG_*
|
|
13
|
-
#include "malloc.h" // free
|
|
14
|
-
#include "memmap.h" // PAGE_SHIFT, virt_to_phys
|
|
15
|
-
#include "output.h" // dprintf
|
|
16
|
-
#include "pcidevice.h" // foreachpci
|
|
17
|
-
#include "pci_ids.h" // PCI_DEVICE_ID_VMWARE_PVSCSI
|
|
18
|
-
#include "pci_regs.h" // PCI_VENDOR_ID
|
|
19
|
-
#include "pvscsi.h" // pvscsi_setup
|
|
20
|
-
#include "stacks.h" // run_thread
|
|
21
|
-
#include "std/disk.h" // DISK_RET_SUCCESS
|
|
22
|
-
#include "string.h" // memset
|
|
23
|
-
#include "util.h" // usleep
|
|
24
|
-
#include "x86.h" // writel
|
|
25
|
-
|
|
26
|
-
#define MASK(n) ((1 << (n)) - 1)
|
|
27
|
-
|
|
28
|
-
#define SIMPLE_QUEUE_TAG 0x20
|
|
29
|
-
|
|
30
|
-
#define PVSCSI_INTR_CMPL_0 (1 << 0)
|
|
31
|
-
#define PVSCSI_INTR_CMPL_1 (1 << 1)
|
|
32
|
-
#define PVSCSI_INTR_CMPL_MASK MASK(2)
|
|
33
|
-
|
|
34
|
-
#define PVSCSI_INTR_MSG_0 (1 << 2)
|
|
35
|
-
#define PVSCSI_INTR_MSG_1 (1 << 3)
|
|
36
|
-
#define PVSCSI_INTR_MSG_MASK (MASK(2) << 2)
|
|
37
|
-
#define PVSCSI_INTR_ALL_SUPPORTED MASK(4)
|
|
38
|
-
|
|
39
|
-
#define PVSCSI_FLAG_CMD_WITH_SG_LIST (1 << 0)
|
|
40
|
-
#define PVSCSI_FLAG_CMD_OUT_OF_BAND_CDB (1 << 1)
|
|
41
|
-
#define PVSCSI_FLAG_CMD_DIR_NONE (1 << 2)
|
|
42
|
-
#define PVSCSI_FLAG_CMD_DIR_TOHOST (1 << 3)
|
|
43
|
-
#define PVSCSI_FLAG_CMD_DIR_TODEVICE (1 << 4)
|
|
44
|
-
|
|
45
|
-
enum PVSCSIRegOffset {
|
|
46
|
-
PVSCSI_REG_OFFSET_COMMAND = 0x0,
|
|
47
|
-
PVSCSI_REG_OFFSET_COMMAND_DATA = 0x4,
|
|
48
|
-
PVSCSI_REG_OFFSET_COMMAND_STATUS = 0x8,
|
|
49
|
-
PVSCSI_REG_OFFSET_LAST_STS_0 = 0x100,
|
|
50
|
-
PVSCSI_REG_OFFSET_LAST_STS_1 = 0x104,
|
|
51
|
-
PVSCSI_REG_OFFSET_LAST_STS_2 = 0x108,
|
|
52
|
-
PVSCSI_REG_OFFSET_LAST_STS_3 = 0x10c,
|
|
53
|
-
PVSCSI_REG_OFFSET_INTR_STATUS = 0x100c,
|
|
54
|
-
PVSCSI_REG_OFFSET_INTR_MASK = 0x2010,
|
|
55
|
-
PVSCSI_REG_OFFSET_KICK_NON_RW_IO = 0x3014,
|
|
56
|
-
PVSCSI_REG_OFFSET_DEBUG = 0x3018,
|
|
57
|
-
PVSCSI_REG_OFFSET_KICK_RW_IO = 0x4018,
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
enum PVSCSICommands {
|
|
61
|
-
PVSCSI_CMD_FIRST = 0,
|
|
62
|
-
PVSCSI_CMD_ADAPTER_RESET = 1,
|
|
63
|
-
PVSCSI_CMD_ISSUE_SCSI = 2,
|
|
64
|
-
PVSCSI_CMD_SETUP_RINGS = 3,
|
|
65
|
-
PVSCSI_CMD_RESET_BUS = 4,
|
|
66
|
-
PVSCSI_CMD_RESET_DEVICE = 5,
|
|
67
|
-
PVSCSI_CMD_ABORT_CMD = 6,
|
|
68
|
-
PVSCSI_CMD_CONFIG = 7,
|
|
69
|
-
PVSCSI_CMD_SETUP_MSG_RING = 8,
|
|
70
|
-
PVSCSI_CMD_DEVICE_UNPLUG = 9,
|
|
71
|
-
PVSCSI_CMD_LAST = 10
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
#define PVSCSI_SETUP_RINGS_MAX_NUM_PAGES 32
|
|
75
|
-
struct PVSCSICmdDescSetupRings {
|
|
76
|
-
u32 reqRingNumPages;
|
|
77
|
-
u32 cmpRingNumPages;
|
|
78
|
-
u64 ringsStatePPN;
|
|
79
|
-
u64 reqRingPPNs[PVSCSI_SETUP_RINGS_MAX_NUM_PAGES];
|
|
80
|
-
u64 cmpRingPPNs[PVSCSI_SETUP_RINGS_MAX_NUM_PAGES];
|
|
81
|
-
} PACKED;
|
|
82
|
-
|
|
83
|
-
struct PVSCSIRingCmpDesc {
|
|
84
|
-
u64 context;
|
|
85
|
-
u64 dataLen;
|
|
86
|
-
u32 senseLen;
|
|
87
|
-
u16 hostStatus;
|
|
88
|
-
u16 scsiStatus;
|
|
89
|
-
u32 pad[2];
|
|
90
|
-
} PACKED;
|
|
91
|
-
|
|
92
|
-
struct PVSCSIRingsState {
|
|
93
|
-
u32 reqProdIdx;
|
|
94
|
-
u32 reqConsIdx;
|
|
95
|
-
u32 reqNumEntriesLog2;
|
|
96
|
-
|
|
97
|
-
u32 cmpProdIdx;
|
|
98
|
-
u32 cmpConsIdx;
|
|
99
|
-
u32 cmpNumEntriesLog2;
|
|
100
|
-
|
|
101
|
-
u8 pad[104];
|
|
102
|
-
|
|
103
|
-
u32 msgProdIdx;
|
|
104
|
-
u32 msgConsIdx;
|
|
105
|
-
u32 msgNumEntriesLog2;
|
|
106
|
-
} PACKED;
|
|
107
|
-
|
|
108
|
-
struct PVSCSIRingReqDesc {
|
|
109
|
-
u64 context;
|
|
110
|
-
u64 dataAddr;
|
|
111
|
-
u64 dataLen;
|
|
112
|
-
u64 senseAddr;
|
|
113
|
-
u32 senseLen;
|
|
114
|
-
u32 flags;
|
|
115
|
-
u8 cdb[16];
|
|
116
|
-
u8 cdbLen;
|
|
117
|
-
u8 lun[8];
|
|
118
|
-
u8 tag;
|
|
119
|
-
u8 bus;
|
|
120
|
-
u8 target;
|
|
121
|
-
u8 vcpuHint;
|
|
122
|
-
u8 unused[59];
|
|
123
|
-
} PACKED;
|
|
124
|
-
|
|
125
|
-
struct pvscsi_ring_dsc_s {
|
|
126
|
-
struct PVSCSIRingsState *ring_state;
|
|
127
|
-
struct PVSCSIRingReqDesc *ring_reqs;
|
|
128
|
-
struct PVSCSIRingCmpDesc *ring_cmps;
|
|
129
|
-
};
|
|
130
|
-
|
|
131
|
-
struct pvscsi_lun_s {
|
|
132
|
-
struct drive_s drive;
|
|
133
|
-
void *iobase;
|
|
134
|
-
u8 target;
|
|
135
|
-
u8 lun;
|
|
136
|
-
struct pvscsi_ring_dsc_s *ring_dsc;
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
static void
|
|
140
|
-
pvscsi_write_cmd_desc(void *iobase, u32 cmd, const void *desc, size_t len)
|
|
141
|
-
{
|
|
142
|
-
const u32 *ptr = desc;
|
|
143
|
-
size_t i;
|
|
144
|
-
|
|
145
|
-
len /= sizeof(*ptr);
|
|
146
|
-
writel(iobase + PVSCSI_REG_OFFSET_COMMAND, cmd);
|
|
147
|
-
for (i = 0; i < len; i++)
|
|
148
|
-
writel(iobase + PVSCSI_REG_OFFSET_COMMAND_DATA, ptr[i]);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
static void
|
|
152
|
-
pvscsi_kick_rw_io(void *iobase)
|
|
153
|
-
{
|
|
154
|
-
writel(iobase + PVSCSI_REG_OFFSET_KICK_RW_IO, 0);
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
static void
|
|
158
|
-
pvscsi_wait_intr_cmpl(void *iobase)
|
|
159
|
-
{
|
|
160
|
-
while (!(readl(iobase + PVSCSI_REG_OFFSET_INTR_STATUS) & PVSCSI_INTR_CMPL_MASK))
|
|
161
|
-
usleep(5);
|
|
162
|
-
writel(iobase + PVSCSI_REG_OFFSET_INTR_STATUS, PVSCSI_INTR_CMPL_MASK);
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
static void
|
|
166
|
-
pvscsi_init_rings(void *iobase, struct pvscsi_ring_dsc_s **ring_dsc)
|
|
167
|
-
{
|
|
168
|
-
struct PVSCSICmdDescSetupRings cmd = {0,};
|
|
169
|
-
|
|
170
|
-
struct pvscsi_ring_dsc_s *dsc = memalign_high(PAGE_SIZE, sizeof(*dsc));
|
|
171
|
-
if (!dsc) {
|
|
172
|
-
warn_noalloc();
|
|
173
|
-
return;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
dsc->ring_state =
|
|
177
|
-
(struct PVSCSIRingsState *)memalign_high(PAGE_SIZE, PAGE_SIZE);
|
|
178
|
-
dsc->ring_reqs =
|
|
179
|
-
(struct PVSCSIRingReqDesc *)memalign_high(PAGE_SIZE, PAGE_SIZE);
|
|
180
|
-
dsc->ring_cmps =
|
|
181
|
-
(struct PVSCSIRingCmpDesc *)memalign_high(PAGE_SIZE, PAGE_SIZE);
|
|
182
|
-
if (!dsc->ring_state || !dsc->ring_reqs || !dsc->ring_cmps) {
|
|
183
|
-
warn_noalloc();
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
|
-
memset(dsc->ring_state, 0, PAGE_SIZE);
|
|
187
|
-
memset(dsc->ring_reqs, 0, PAGE_SIZE);
|
|
188
|
-
memset(dsc->ring_cmps, 0, PAGE_SIZE);
|
|
189
|
-
|
|
190
|
-
cmd.reqRingNumPages = 1;
|
|
191
|
-
cmd.cmpRingNumPages = 1;
|
|
192
|
-
cmd.ringsStatePPN = virt_to_phys(dsc->ring_state) >> PAGE_SHIFT;
|
|
193
|
-
cmd.reqRingPPNs[0] = virt_to_phys(dsc->ring_reqs) >> PAGE_SHIFT;
|
|
194
|
-
cmd.cmpRingPPNs[0] = virt_to_phys(dsc->ring_cmps) >> PAGE_SHIFT;
|
|
195
|
-
|
|
196
|
-
pvscsi_write_cmd_desc(iobase, PVSCSI_CMD_SETUP_RINGS,
|
|
197
|
-
&cmd, sizeof(cmd));
|
|
198
|
-
*ring_dsc = dsc;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
static u32
|
|
202
|
-
pvscsi_get_rsp(struct PVSCSIRingsState *s,
|
|
203
|
-
struct PVSCSIRingCmpDesc *rsp)
|
|
204
|
-
{
|
|
205
|
-
u32 status = rsp->hostStatus;
|
|
206
|
-
s->cmpConsIdx = s->cmpConsIdx + 1;
|
|
207
|
-
return status;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
int
|
|
211
|
-
pvscsi_process_op(struct disk_op_s *op)
|
|
212
|
-
{
|
|
213
|
-
if (!CONFIG_PVSCSI)
|
|
214
|
-
return DISK_RET_EBADTRACK;
|
|
215
|
-
struct pvscsi_lun_s *plun =
|
|
216
|
-
container_of(op->drive_fl, struct pvscsi_lun_s, drive);
|
|
217
|
-
struct pvscsi_ring_dsc_s *ring_dsc = plun->ring_dsc;
|
|
218
|
-
struct PVSCSIRingsState *s = ring_dsc->ring_state;
|
|
219
|
-
u32 req_entries = s->reqNumEntriesLog2;
|
|
220
|
-
u32 cmp_entries = s->cmpNumEntriesLog2;
|
|
221
|
-
struct PVSCSIRingReqDesc *req;
|
|
222
|
-
struct PVSCSIRingCmpDesc *rsp;
|
|
223
|
-
u32 status;
|
|
224
|
-
|
|
225
|
-
if (s->reqProdIdx - s->cmpConsIdx >= 1 << req_entries) {
|
|
226
|
-
dprintf(1, "pvscsi: ring full: reqProdIdx=%d cmpConsIdx=%d\n",
|
|
227
|
-
s->reqProdIdx, s->cmpConsIdx);
|
|
228
|
-
return DISK_RET_EBADTRACK;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
req = ring_dsc->ring_reqs + (s->reqProdIdx & MASK(req_entries));
|
|
232
|
-
int blocksize = scsi_fill_cmd(op, req->cdb, 16);
|
|
233
|
-
if (blocksize < 0)
|
|
234
|
-
return default_process_op(op);
|
|
235
|
-
req->bus = 0;
|
|
236
|
-
req->target = plun->target;
|
|
237
|
-
memset(req->lun, 0, sizeof(req->lun));
|
|
238
|
-
req->lun[1] = plun->lun;
|
|
239
|
-
req->senseLen = 0;
|
|
240
|
-
req->senseAddr = 0;
|
|
241
|
-
req->cdbLen = 16;
|
|
242
|
-
req->vcpuHint = 0;
|
|
243
|
-
req->tag = SIMPLE_QUEUE_TAG;
|
|
244
|
-
req->flags = scsi_is_read(op) ?
|
|
245
|
-
PVSCSI_FLAG_CMD_DIR_TOHOST : PVSCSI_FLAG_CMD_DIR_TODEVICE;
|
|
246
|
-
req->dataLen = op->count * blocksize;
|
|
247
|
-
req->dataAddr = (u32)op->buf_fl;
|
|
248
|
-
s->reqProdIdx = s->reqProdIdx + 1;
|
|
249
|
-
|
|
250
|
-
pvscsi_kick_rw_io(plun->iobase);
|
|
251
|
-
pvscsi_wait_intr_cmpl(plun->iobase);
|
|
252
|
-
|
|
253
|
-
rsp = ring_dsc->ring_cmps + (s->cmpConsIdx & MASK(cmp_entries));
|
|
254
|
-
status = pvscsi_get_rsp(s, rsp);
|
|
255
|
-
|
|
256
|
-
return status == 0 ? DISK_RET_SUCCESS : DISK_RET_EBADTRACK;
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
static int
|
|
260
|
-
pvscsi_add_lun(struct pci_device *pci, void *iobase,
|
|
261
|
-
struct pvscsi_ring_dsc_s *ring_dsc, u8 target, u8 lun)
|
|
262
|
-
{
|
|
263
|
-
struct pvscsi_lun_s *plun = malloc_fseg(sizeof(*plun));
|
|
264
|
-
if (!plun) {
|
|
265
|
-
warn_noalloc();
|
|
266
|
-
return -1;
|
|
267
|
-
}
|
|
268
|
-
memset(plun, 0, sizeof(*plun));
|
|
269
|
-
plun->drive.type = DTYPE_PVSCSI;
|
|
270
|
-
plun->drive.cntl_id = pci->bdf;
|
|
271
|
-
plun->target = target;
|
|
272
|
-
plun->lun = lun;
|
|
273
|
-
plun->iobase = iobase;
|
|
274
|
-
plun->ring_dsc = ring_dsc;
|
|
275
|
-
|
|
276
|
-
char *name = znprintf(MAXDESCSIZE, "pvscsi %pP %d:%d", pci, target, lun);
|
|
277
|
-
int prio = bootprio_find_scsi_device(pci, target, lun);
|
|
278
|
-
int ret = scsi_drive_setup(&plun->drive, name, prio);
|
|
279
|
-
free(name);
|
|
280
|
-
if (ret)
|
|
281
|
-
goto fail;
|
|
282
|
-
return 0;
|
|
283
|
-
|
|
284
|
-
fail:
|
|
285
|
-
free(plun);
|
|
286
|
-
return -1;
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
static void
|
|
290
|
-
pvscsi_scan_target(struct pci_device *pci, void *iobase,
|
|
291
|
-
struct pvscsi_ring_dsc_s *ring_dsc, u8 target)
|
|
292
|
-
{
|
|
293
|
-
/* pvscsi has no more than a single lun per target */
|
|
294
|
-
pvscsi_add_lun(pci, iobase, ring_dsc, target, 0);
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
static void
|
|
298
|
-
init_pvscsi(void *data)
|
|
299
|
-
{
|
|
300
|
-
struct pci_device *pci = data;
|
|
301
|
-
void *iobase = pci_enable_membar(pci, PCI_BASE_ADDRESS_0);
|
|
302
|
-
if (!iobase)
|
|
303
|
-
return;
|
|
304
|
-
pci_enable_busmaster(pci);
|
|
305
|
-
|
|
306
|
-
dprintf(1, "found pvscsi at %pP, io @ %p\n", pci, iobase);
|
|
307
|
-
|
|
308
|
-
pvscsi_write_cmd_desc(iobase, PVSCSI_CMD_ADAPTER_RESET, NULL, 0);
|
|
309
|
-
|
|
310
|
-
struct pvscsi_ring_dsc_s *ring_dsc = NULL;
|
|
311
|
-
pvscsi_init_rings(iobase, &ring_dsc);
|
|
312
|
-
int i;
|
|
313
|
-
for (i = 0; i < 64; i++)
|
|
314
|
-
pvscsi_scan_target(pci, iobase, ring_dsc, i);
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
void
|
|
318
|
-
pvscsi_setup(void)
|
|
319
|
-
{
|
|
320
|
-
ASSERT32FLAT();
|
|
321
|
-
if (! CONFIG_PVSCSI)
|
|
322
|
-
return;
|
|
323
|
-
|
|
324
|
-
dprintf(3, "init pvscsi\n");
|
|
325
|
-
|
|
326
|
-
struct pci_device *pci;
|
|
327
|
-
foreachpci(pci) {
|
|
328
|
-
if (pci->vendor != PCI_VENDOR_ID_VMWARE
|
|
329
|
-
|| pci->device != PCI_DEVICE_ID_VMWARE_PVSCSI)
|
|
330
|
-
continue;
|
|
331
|
-
run_thread(init_pvscsi, pci);
|
|
332
|
-
}
|
|
333
|
-
}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
// Code for emulating a drive via high-memory accesses.
|
|
2
|
-
//
|
|
3
|
-
// Copyright (C) 2009 Kevin O'Connor <kevin@koconnor.net>
|
|
4
|
-
//
|
|
5
|
-
// This file may be distributed under the terms of the GNU LGPLv3 license.
|
|
6
|
-
|
|
7
|
-
#include "biosvar.h" // GET_GLOBALFLAT
|
|
8
|
-
#include "block.h" // struct drive_s
|
|
9
|
-
#include "bregs.h" // struct bregs
|
|
10
|
-
#include "e820map.h" // e820_add
|
|
11
|
-
#include "malloc.h" // memalign_tmphigh
|
|
12
|
-
#include "memmap.h" // PAGE_SIZE
|
|
13
|
-
#include "output.h" // dprintf
|
|
14
|
-
#include "romfile.h" // romfile_findprefix
|
|
15
|
-
#include "stacks.h" // call16_int
|
|
16
|
-
#include "std/disk.h" // DISK_RET_SUCCESS
|
|
17
|
-
#include "string.h" // memset
|
|
18
|
-
#include "util.h" // process_ramdisk_op
|
|
19
|
-
|
|
20
|
-
void
|
|
21
|
-
ramdisk_setup(void)
|
|
22
|
-
{
|
|
23
|
-
if (!CONFIG_FLASH_FLOPPY)
|
|
24
|
-
return;
|
|
25
|
-
|
|
26
|
-
// Find image.
|
|
27
|
-
struct romfile_s *file = romfile_findprefix("floppyimg/", NULL);
|
|
28
|
-
if (!file)
|
|
29
|
-
return;
|
|
30
|
-
const char *filename = file->name;
|
|
31
|
-
u32 size = file->size;
|
|
32
|
-
dprintf(3, "Found floppy file %s of size %d\n", filename, size);
|
|
33
|
-
int ftype = find_floppy_type(size);
|
|
34
|
-
if (ftype < 0) {
|
|
35
|
-
dprintf(3, "No floppy type found for ramdisk size\n");
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// Allocate ram for image.
|
|
40
|
-
void *pos = memalign_tmphigh(PAGE_SIZE, size);
|
|
41
|
-
if (!pos) {
|
|
42
|
-
warn_noalloc();
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
e820_add((u32)pos, size, E820_RESERVED);
|
|
46
|
-
|
|
47
|
-
// Copy image into ram.
|
|
48
|
-
int ret = file->copy(file, pos, size);
|
|
49
|
-
if (ret < 0)
|
|
50
|
-
return;
|
|
51
|
-
|
|
52
|
-
// Setup driver.
|
|
53
|
-
struct drive_s *drive = init_floppy((u32)pos, ftype);
|
|
54
|
-
if (!drive)
|
|
55
|
-
return;
|
|
56
|
-
drive->type = DTYPE_RAMDISK;
|
|
57
|
-
dprintf(1, "Mapping floppy %s to addr %p\n", filename, pos);
|
|
58
|
-
char *desc = znprintf(MAXDESCSIZE, "Ramdisk [%s]", &filename[10]);
|
|
59
|
-
boot_add_floppy(drive, desc, bootprio_find_named_rom(filename, 0));
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
static int
|
|
63
|
-
ramdisk_copy(struct disk_op_s *op, int iswrite)
|
|
64
|
-
{
|
|
65
|
-
u32 offset = GET_GLOBALFLAT(op->drive_fl->cntl_id);
|
|
66
|
-
offset += (u32)op->lba * DISK_SECTOR_SIZE;
|
|
67
|
-
u64 opd = GDT_DATA | GDT_LIMIT(0xfffff) | GDT_BASE((u32)op->buf_fl);
|
|
68
|
-
u64 ramd = GDT_DATA | GDT_LIMIT(0xfffff) | GDT_BASE(offset);
|
|
69
|
-
|
|
70
|
-
u64 gdt[6];
|
|
71
|
-
if (iswrite) {
|
|
72
|
-
gdt[2] = opd;
|
|
73
|
-
gdt[3] = ramd;
|
|
74
|
-
} else {
|
|
75
|
-
gdt[2] = ramd;
|
|
76
|
-
gdt[3] = opd;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
// Call int 1587 to copy data.
|
|
80
|
-
struct bregs br;
|
|
81
|
-
memset(&br, 0, sizeof(br));
|
|
82
|
-
br.flags = F_CF|F_IF;
|
|
83
|
-
br.ah = 0x87;
|
|
84
|
-
br.es = GET_SEG(SS);
|
|
85
|
-
br.si = (u32)gdt;
|
|
86
|
-
br.cx = op->count * DISK_SECTOR_SIZE / 2;
|
|
87
|
-
call16_int(0x15, &br);
|
|
88
|
-
|
|
89
|
-
if (br.flags & F_CF)
|
|
90
|
-
return DISK_RET_EBADTRACK;
|
|
91
|
-
return DISK_RET_SUCCESS;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
int
|
|
95
|
-
ramdisk_process_op(struct disk_op_s *op)
|
|
96
|
-
{
|
|
97
|
-
if (!CONFIG_FLASH_FLOPPY)
|
|
98
|
-
return 0;
|
|
99
|
-
|
|
100
|
-
switch (op->command) {
|
|
101
|
-
case CMD_READ:
|
|
102
|
-
return ramdisk_copy(op, 0);
|
|
103
|
-
case CMD_WRITE:
|
|
104
|
-
return ramdisk_copy(op, 1);
|
|
105
|
-
default:
|
|
106
|
-
return default_process_op(op);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
// Support for MC146818 Real Time Clock chip.
|
|
2
|
-
//
|
|
3
|
-
// Copyright (C) 2008-2013 Kevin O'Connor <kevin@koconnor.net>
|
|
4
|
-
// Copyright (C) 2002 MandrakeSoft S.A.
|
|
5
|
-
//
|
|
6
|
-
// This file may be distributed under the terms of the GNU LGPLv3 license.
|
|
7
|
-
|
|
8
|
-
#include "biosvar.h" // GET_LOW
|
|
9
|
-
#include "rtc.h" // rtc_read
|
|
10
|
-
#include "stacks.h" // yield
|
|
11
|
-
#include "util.h" // timer_calc
|
|
12
|
-
#include "x86.h" // inb
|
|
13
|
-
|
|
14
|
-
u8
|
|
15
|
-
rtc_read(u8 index)
|
|
16
|
-
{
|
|
17
|
-
index |= NMI_DISABLE_BIT;
|
|
18
|
-
outb(index, PORT_CMOS_INDEX);
|
|
19
|
-
return inb(PORT_CMOS_DATA);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
void
|
|
23
|
-
rtc_write(u8 index, u8 val)
|
|
24
|
-
{
|
|
25
|
-
index |= NMI_DISABLE_BIT;
|
|
26
|
-
outb(index, PORT_CMOS_INDEX);
|
|
27
|
-
outb(val, PORT_CMOS_DATA);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
void
|
|
31
|
-
rtc_mask(u8 index, u8 off, u8 on)
|
|
32
|
-
{
|
|
33
|
-
index |= NMI_DISABLE_BIT;
|
|
34
|
-
outb(index, PORT_CMOS_INDEX);
|
|
35
|
-
u8 val = inb(PORT_CMOS_DATA);
|
|
36
|
-
outb((val & ~off) | on, PORT_CMOS_DATA);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
int
|
|
40
|
-
rtc_updating(void)
|
|
41
|
-
{
|
|
42
|
-
// This function checks to see if the update-in-progress bit
|
|
43
|
-
// is set in CMOS Status Register A. If not, it returns 0.
|
|
44
|
-
// If it is set, it tries to wait until there is a transition
|
|
45
|
-
// to 0, and will return 0 if such a transition occurs. A -1
|
|
46
|
-
// is returned only after timing out. The maximum period
|
|
47
|
-
// that this bit should be set is constrained to (1984+244)
|
|
48
|
-
// useconds, but we wait for longer just to be sure.
|
|
49
|
-
|
|
50
|
-
if ((rtc_read(CMOS_STATUS_A) & RTC_A_UIP) == 0)
|
|
51
|
-
return 0;
|
|
52
|
-
u32 end = timer_calc(15);
|
|
53
|
-
for (;;) {
|
|
54
|
-
if ((rtc_read(CMOS_STATUS_A) & RTC_A_UIP) == 0)
|
|
55
|
-
return 0;
|
|
56
|
-
if (timer_check(end))
|
|
57
|
-
// update-in-progress never transitioned to 0
|
|
58
|
-
return -1;
|
|
59
|
-
yield();
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
void
|
|
64
|
-
rtc_setup(void)
|
|
65
|
-
{
|
|
66
|
-
if (!CONFIG_RTC_TIMER)
|
|
67
|
-
return;
|
|
68
|
-
rtc_write(CMOS_STATUS_A, 0x26); // 32,768Khz src, 976.5625us updates
|
|
69
|
-
rtc_mask(CMOS_STATUS_B, ~RTC_B_DSE, RTC_B_24HR);
|
|
70
|
-
rtc_read(CMOS_STATUS_C);
|
|
71
|
-
rtc_read(CMOS_STATUS_D);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
int RTCusers VARLOW;
|
|
75
|
-
|
|
76
|
-
void
|
|
77
|
-
rtc_use(void)
|
|
78
|
-
{
|
|
79
|
-
if (!CONFIG_RTC_TIMER)
|
|
80
|
-
return;
|
|
81
|
-
int count = GET_LOW(RTCusers);
|
|
82
|
-
SET_LOW(RTCusers, count+1);
|
|
83
|
-
if (count)
|
|
84
|
-
return;
|
|
85
|
-
// Turn on the Periodic Interrupt timer
|
|
86
|
-
rtc_mask(CMOS_STATUS_B, 0, RTC_B_PIE);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
void
|
|
90
|
-
rtc_release(void)
|
|
91
|
-
{
|
|
92
|
-
if (!CONFIG_RTC_TIMER)
|
|
93
|
-
return;
|
|
94
|
-
int count = GET_LOW(RTCusers);
|
|
95
|
-
SET_LOW(RTCusers, count-1);
|
|
96
|
-
if (count != 1)
|
|
97
|
-
return;
|
|
98
|
-
// Clear the Periodic Interrupt.
|
|
99
|
-
rtc_mask(CMOS_STATUS_B, RTC_B_PIE, 0);
|
|
100
|
-
}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
#ifndef __RTC_H
|
|
2
|
-
#define __RTC_H
|
|
3
|
-
|
|
4
|
-
#define PORT_CMOS_INDEX 0x0070
|
|
5
|
-
#define PORT_CMOS_DATA 0x0071
|
|
6
|
-
|
|
7
|
-
// PORT_CMOS_INDEX nmi disable bit
|
|
8
|
-
#define NMI_DISABLE_BIT 0x80
|
|
9
|
-
|
|
10
|
-
// Standard BIOS RTC chip entries
|
|
11
|
-
#define CMOS_RTC_SECONDS 0x00
|
|
12
|
-
#define CMOS_RTC_SECONDS_ALARM 0x01
|
|
13
|
-
#define CMOS_RTC_MINUTES 0x02
|
|
14
|
-
#define CMOS_RTC_MINUTES_ALARM 0x03
|
|
15
|
-
#define CMOS_RTC_HOURS 0x04
|
|
16
|
-
#define CMOS_RTC_HOURS_ALARM 0x05
|
|
17
|
-
#define CMOS_RTC_DAY_WEEK 0x06
|
|
18
|
-
#define CMOS_RTC_DAY_MONTH 0x07
|
|
19
|
-
#define CMOS_RTC_MONTH 0x08
|
|
20
|
-
#define CMOS_RTC_YEAR 0x09
|
|
21
|
-
#define CMOS_STATUS_A 0x0a
|
|
22
|
-
#define CMOS_STATUS_B 0x0b
|
|
23
|
-
#define CMOS_STATUS_C 0x0c
|
|
24
|
-
#define CMOS_STATUS_D 0x0d
|
|
25
|
-
#define CMOS_RESET_CODE 0x0f
|
|
26
|
-
|
|
27
|
-
// QEMU cmos config fields. DO NOT ADD MORE. (All new content should
|
|
28
|
-
// be passed via the fw_cfg "file" interface.)
|
|
29
|
-
#define CMOS_FLOPPY_DRIVE_TYPE 0x10
|
|
30
|
-
#define CMOS_DISK_DATA 0x12
|
|
31
|
-
#define CMOS_EQUIPMENT_INFO 0x14
|
|
32
|
-
#define CMOS_DISK_DRIVE1_TYPE 0x19
|
|
33
|
-
#define CMOS_DISK_DRIVE2_TYPE 0x1a
|
|
34
|
-
#define CMOS_DISK_DRIVE1_CYL 0x1b
|
|
35
|
-
#define CMOS_DISK_DRIVE2_CYL 0x24
|
|
36
|
-
#define CMOS_MEM_EXTMEM_LOW 0x30
|
|
37
|
-
#define CMOS_MEM_EXTMEM_HIGH 0x31
|
|
38
|
-
#define CMOS_CENTURY 0x32
|
|
39
|
-
#define CMOS_MEM_EXTMEM2_LOW 0x34
|
|
40
|
-
#define CMOS_MEM_EXTMEM2_HIGH 0x35
|
|
41
|
-
#define CMOS_BIOS_BOOTFLAG1 0x38
|
|
42
|
-
#define CMOS_BIOS_DISKTRANSFLAG 0x39
|
|
43
|
-
#define CMOS_BIOS_BOOTFLAG2 0x3d
|
|
44
|
-
#define CMOS_MEM_HIGHMEM_LOW 0x5b
|
|
45
|
-
#define CMOS_MEM_HIGHMEM_MID 0x5c
|
|
46
|
-
#define CMOS_MEM_HIGHMEM_HIGH 0x5d
|
|
47
|
-
#define CMOS_BIOS_SMP_COUNT 0x5f
|
|
48
|
-
|
|
49
|
-
// RTC register flags
|
|
50
|
-
#define RTC_A_UIP 0x80
|
|
51
|
-
|
|
52
|
-
#define RTC_B_SET 0x80
|
|
53
|
-
#define RTC_B_PIE 0x40
|
|
54
|
-
#define RTC_B_AIE 0x20
|
|
55
|
-
#define RTC_B_UIE 0x10
|
|
56
|
-
#define RTC_B_BIN 0x04
|
|
57
|
-
#define RTC_B_24HR 0x02
|
|
58
|
-
#define RTC_B_DSE 0x01
|
|
59
|
-
|
|
60
|
-
#ifndef __ASSEMBLY__
|
|
61
|
-
|
|
62
|
-
#include "types.h" // u8
|
|
63
|
-
|
|
64
|
-
// rtc.c
|
|
65
|
-
u8 rtc_read(u8 index);
|
|
66
|
-
void rtc_write(u8 index, u8 val);
|
|
67
|
-
void rtc_mask(u8 index, u8 off, u8 on);
|
|
68
|
-
int rtc_updating(void);
|
|
69
|
-
void rtc_setup(void);
|
|
70
|
-
void rtc_use(void);
|
|
71
|
-
void rtc_release(void);
|
|
72
|
-
|
|
73
|
-
#endif // !__ASSEMBLY__
|
|
74
|
-
|
|
75
|
-
#endif // rtc.h
|