v86 0.4.0 → 0.5.10

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.
Files changed (386) hide show
  1. package/Readme.md +56 -111
  2. package/build/libv86-debug.js +12677 -0
  3. package/build/libv86-debug.mjs +732 -0
  4. package/build/libv86.js +710 -0
  5. package/build/libv86.mjs +636 -0
  6. package/build/v86-debug.wasm +0 -0
  7. package/build/v86-fallback.wasm +0 -0
  8. package/build/v86.wasm +0 -0
  9. package/package.json +12 -35
  10. package/bios/.gitignore +0 -1
  11. package/bios/COPYING.LESSER +0 -165
  12. package/bios/bochs-bios.bin +0 -0
  13. package/bios/bochs-vgabios.bin +0 -0
  14. package/bios/fetch-and-build-seabios.sh +0 -13
  15. package/bios/seabios/.config +0 -113
  16. package/bios/seabios/.config.old +0 -114
  17. package/bios/seabios/.gitignore +0 -4
  18. package/bios/seabios/COPYING +0 -674
  19. package/bios/seabios/COPYING.LESSER +0 -165
  20. package/bios/seabios/Makefile +0 -286
  21. package/bios/seabios/README +0 -17
  22. package/bios/seabios/docs/Build_overview.md +0 -104
  23. package/bios/seabios/docs/Contributing.md +0 -20
  24. package/bios/seabios/docs/Debugging.md +0 -111
  25. package/bios/seabios/docs/Developer_Documentation.md +0 -25
  26. package/bios/seabios/docs/Developer_links.md +0 -86
  27. package/bios/seabios/docs/Download.md +0 -27
  28. package/bios/seabios/docs/Execution_and_code_flow.md +0 -178
  29. package/bios/seabios/docs/Linking_overview.md +0 -160
  30. package/bios/seabios/docs/Mailinglist.md +0 -8
  31. package/bios/seabios/docs/Memory_Model.md +0 -253
  32. package/bios/seabios/docs/README +0 -5
  33. package/bios/seabios/docs/Releases.md +0 -482
  34. package/bios/seabios/docs/Runtime_config.md +0 -193
  35. package/bios/seabios/docs/SeaBIOS.md +0 -17
  36. package/bios/seabios/docs/SeaVGABIOS.md +0 -39
  37. package/bios/seabios/out/autoconf.h +0 -117
  38. package/bios/seabios/out/include/config/acpi/dsdt.h +0 -0
  39. package/bios/seabios/out/include/config/acpi.h +0 -0
  40. package/bios/seabios/out/include/config/ahci.h +0 -0
  41. package/bios/seabios/out/include/config/apmbios.h +0 -0
  42. package/bios/seabios/out/include/config/ata/dma.h +0 -0
  43. package/bios/seabios/out/include/config/ata/pio32.h +0 -0
  44. package/bios/seabios/out/include/config/ata.h +0 -0
  45. package/bios/seabios/out/include/config/auto.conf +0 -69
  46. package/bios/seabios/out/include/config/auto.conf.cmd +0 -9
  47. package/bios/seabios/out/include/config/boot.h +0 -0
  48. package/bios/seabios/out/include/config/bootorder.h +0 -0
  49. package/bios/seabios/out/include/config/build/vgabios.h +0 -0
  50. package/bios/seabios/out/include/config/call32/smm.h +0 -0
  51. package/bios/seabios/out/include/config/cdrom/boot.h +0 -0
  52. package/bios/seabios/out/include/config/cdrom/emu.h +0 -0
  53. package/bios/seabios/out/include/config/debug/level.h +0 -0
  54. package/bios/seabios/out/include/config/drives.h +0 -0
  55. package/bios/seabios/out/include/config/entry/extrastack.h +0 -0
  56. package/bios/seabios/out/include/config/esp/scsi.h +0 -0
  57. package/bios/seabios/out/include/config/flash/floppy.h +0 -0
  58. package/bios/seabios/out/include/config/floppy.h +0 -0
  59. package/bios/seabios/out/include/config/fw/romfile/load.h +0 -0
  60. package/bios/seabios/out/include/config/hardware/irq.h +0 -0
  61. package/bios/seabios/out/include/config/kbd/call/int15/4f.h +0 -0
  62. package/bios/seabios/out/include/config/keyboard.h +0 -0
  63. package/bios/seabios/out/include/config/lpt.h +0 -0
  64. package/bios/seabios/out/include/config/lsi/scsi.h +0 -0
  65. package/bios/seabios/out/include/config/malloc/uppermemory.h +0 -0
  66. package/bios/seabios/out/include/config/megasas.h +0 -0
  67. package/bios/seabios/out/include/config/mouse.h +0 -0
  68. package/bios/seabios/out/include/config/mpt/scsi.h +0 -0
  69. package/bios/seabios/out/include/config/mptable.h +0 -0
  70. package/bios/seabios/out/include/config/mtrr/init.h +0 -0
  71. package/bios/seabios/out/include/config/optionroms.h +0 -0
  72. package/bios/seabios/out/include/config/override/pci/id.h +0 -0
  73. package/bios/seabios/out/include/config/pcibios.h +0 -0
  74. package/bios/seabios/out/include/config/pirtable.h +0 -0
  75. package/bios/seabios/out/include/config/pmm.h +0 -0
  76. package/bios/seabios/out/include/config/pmtimer.h +0 -0
  77. package/bios/seabios/out/include/config/pnpbios.h +0 -0
  78. package/bios/seabios/out/include/config/ps2port.h +0 -0
  79. package/bios/seabios/out/include/config/pvscsi.h +0 -0
  80. package/bios/seabios/out/include/config/qemu/hardware.h +0 -0
  81. package/bios/seabios/out/include/config/qemu.h +0 -0
  82. package/bios/seabios/out/include/config/rom/size.h +0 -0
  83. package/bios/seabios/out/include/config/rtc/timer.h +0 -0
  84. package/bios/seabios/out/include/config/s3/resume.h +0 -0
  85. package/bios/seabios/out/include/config/sdcard.h +0 -0
  86. package/bios/seabios/out/include/config/serial.h +0 -0
  87. package/bios/seabios/out/include/config/tcgbios.h +0 -0
  88. package/bios/seabios/out/include/config/threads.h +0 -0
  89. package/bios/seabios/out/include/config/tristate.conf +0 -4
  90. package/bios/seabios/out/include/config/tsc/timer.h +0 -0
  91. package/bios/seabios/out/include/config/use/smm.h +0 -0
  92. package/bios/seabios/out/include/config/vga/allocate/extra/stack.h +0 -0
  93. package/bios/seabios/out/include/config/vga/bochs/stdvga.h +0 -0
  94. package/bios/seabios/out/include/config/vga/bochs.h +0 -0
  95. package/bios/seabios/out/include/config/vga/did.h +0 -0
  96. package/bios/seabios/out/include/config/vga/extra/stack/size.h +0 -0
  97. package/bios/seabios/out/include/config/vga/fixup/asm.h +0 -0
  98. package/bios/seabios/out/include/config/vga/pci.h +0 -0
  99. package/bios/seabios/out/include/config/vga/stdvga/ports.h +0 -0
  100. package/bios/seabios/out/include/config/vga/vbe.h +0 -0
  101. package/bios/seabios/out/include/config/vga/vid.h +0 -0
  102. package/bios/seabios/out/include/config/vgahooks.h +0 -0
  103. package/bios/seabios/out/include/config/virtio/blk.h +0 -0
  104. package/bios/seabios/out/include/config/virtio/scsi.h +0 -0
  105. package/bios/seabios/out/include/config/xen.h +0 -0
  106. package/bios/seabios/out/scripts/kconfig/conf +0 -0
  107. package/bios/seabios/out/scripts/kconfig/conf.o +0 -0
  108. package/bios/seabios/out/scripts/kconfig/zconf.hash.c +0 -289
  109. package/bios/seabios/out/scripts/kconfig/zconf.lex.c +0 -2420
  110. package/bios/seabios/out/scripts/kconfig/zconf.tab.c +0 -2538
  111. package/bios/seabios/out/scripts/kconfig/zconf.tab.o +0 -0
  112. package/bios/seabios/scripts/acpi_extract.py +0 -366
  113. package/bios/seabios/scripts/acpi_extract_preprocess.py +0 -41
  114. package/bios/seabios/scripts/buildrom.py +0 -56
  115. package/bios/seabios/scripts/buildversion.py +0 -134
  116. package/bios/seabios/scripts/checkrom.py +0 -95
  117. package/bios/seabios/scripts/checkstack.py +0 -226
  118. package/bios/seabios/scripts/checksum.py +0 -16
  119. package/bios/seabios/scripts/encodeint.py +0 -21
  120. package/bios/seabios/scripts/gen-offsets.sh +0 -17
  121. package/bios/seabios/scripts/kconfig/.gitignore +0 -22
  122. package/bios/seabios/scripts/kconfig/Makefile +0 -331
  123. package/bios/seabios/scripts/kconfig/POTFILES.in +0 -12
  124. package/bios/seabios/scripts/kconfig/check.sh +0 -13
  125. package/bios/seabios/scripts/kconfig/conf.c +0 -718
  126. package/bios/seabios/scripts/kconfig/confdata.c +0 -1250
  127. package/bios/seabios/scripts/kconfig/expr.c +0 -1168
  128. package/bios/seabios/scripts/kconfig/expr.h +0 -241
  129. package/bios/seabios/scripts/kconfig/gconf.c +0 -1542
  130. package/bios/seabios/scripts/kconfig/gconf.glade +0 -661
  131. package/bios/seabios/scripts/kconfig/images.c +0 -326
  132. package/bios/seabios/scripts/kconfig/kxgettext.c +0 -235
  133. package/bios/seabios/scripts/kconfig/lex.zconf.c +0 -2430
  134. package/bios/seabios/scripts/kconfig/list.h +0 -131
  135. package/bios/seabios/scripts/kconfig/lkc.h +0 -200
  136. package/bios/seabios/scripts/kconfig/lkc_proto.h +0 -57
  137. package/bios/seabios/scripts/kconfig/lxdialog/.gitignore +0 -4
  138. package/bios/seabios/scripts/kconfig/lxdialog/BIG.FAT.WARNING +0 -4
  139. package/bios/seabios/scripts/kconfig/lxdialog/check-lxdialog.sh +0 -87
  140. package/bios/seabios/scripts/kconfig/lxdialog/checklist.c +0 -332
  141. package/bios/seabios/scripts/kconfig/lxdialog/dialog.h +0 -257
  142. package/bios/seabios/scripts/kconfig/lxdialog/inputbox.c +0 -301
  143. package/bios/seabios/scripts/kconfig/lxdialog/menubox.c +0 -437
  144. package/bios/seabios/scripts/kconfig/lxdialog/textbox.c +0 -408
  145. package/bios/seabios/scripts/kconfig/lxdialog/util.c +0 -713
  146. package/bios/seabios/scripts/kconfig/lxdialog/yesno.c +0 -114
  147. package/bios/seabios/scripts/kconfig/mconf.c +0 -1036
  148. package/bios/seabios/scripts/kconfig/menu.c +0 -697
  149. package/bios/seabios/scripts/kconfig/merge_config.sh +0 -150
  150. package/bios/seabios/scripts/kconfig/nconf.c +0 -1556
  151. package/bios/seabios/scripts/kconfig/nconf.gui.c +0 -656
  152. package/bios/seabios/scripts/kconfig/nconf.h +0 -96
  153. package/bios/seabios/scripts/kconfig/qconf.cc +0 -1795
  154. package/bios/seabios/scripts/kconfig/qconf.h +0 -338
  155. package/bios/seabios/scripts/kconfig/streamline_config.pl +0 -647
  156. package/bios/seabios/scripts/kconfig/symbol.c +0 -1373
  157. package/bios/seabios/scripts/kconfig/util.c +0 -157
  158. package/bios/seabios/scripts/kconfig/zconf.gperf +0 -48
  159. package/bios/seabios/scripts/kconfig/zconf.hash.c_shipped +0 -289
  160. package/bios/seabios/scripts/kconfig/zconf.l +0 -363
  161. package/bios/seabios/scripts/kconfig/zconf.lex.c_shipped +0 -2420
  162. package/bios/seabios/scripts/kconfig/zconf.tab.c_shipped +0 -2538
  163. package/bios/seabios/scripts/kconfig/zconf.y +0 -733
  164. package/bios/seabios/scripts/layoutrom.py +0 -705
  165. package/bios/seabios/scripts/python23compat.py +0 -14
  166. package/bios/seabios/scripts/readserial.py +0 -190
  167. package/bios/seabios/scripts/tarball.sh +0 -36
  168. package/bios/seabios/scripts/test-build.sh +0 -90
  169. package/bios/seabios/scripts/transdump.py +0 -53
  170. package/bios/seabios/scripts/vgafixup.py +0 -96
  171. package/bios/seabios/src/Kconfig +0 -579
  172. package/bios/seabios/src/apm.c +0 -215
  173. package/bios/seabios/src/asm-offsets.c +0 -23
  174. package/bios/seabios/src/biosvar.h +0 -130
  175. package/bios/seabios/src/block.c +0 -623
  176. package/bios/seabios/src/block.h +0 -121
  177. package/bios/seabios/src/bmp.c +0 -117
  178. package/bios/seabios/src/boot.c +0 -793
  179. package/bios/seabios/src/bootsplash.c +0 -255
  180. package/bios/seabios/src/bregs.h +0 -80
  181. package/bios/seabios/src/byteorder.h +0 -71
  182. package/bios/seabios/src/cdrom.c +0 -322
  183. package/bios/seabios/src/clock.c +0 -506
  184. package/bios/seabios/src/code16gcc.s +0 -1
  185. package/bios/seabios/src/config.h +0 -108
  186. package/bios/seabios/src/cp437.c +0 -275
  187. package/bios/seabios/src/cp437.h +0 -1
  188. package/bios/seabios/src/disk.c +0 -779
  189. package/bios/seabios/src/e820map.c +0 -152
  190. package/bios/seabios/src/e820map.h +0 -26
  191. package/bios/seabios/src/entryfuncs.S +0 -165
  192. package/bios/seabios/src/farptr.h +0 -208
  193. package/bios/seabios/src/font.c +0 -139
  194. package/bios/seabios/src/fw/acpi-dsdt-cpu-hotplug.dsl +0 -78
  195. package/bios/seabios/src/fw/acpi-dsdt-dbug.dsl +0 -26
  196. package/bios/seabios/src/fw/acpi-dsdt-hpet.dsl +0 -36
  197. package/bios/seabios/src/fw/acpi-dsdt-isa.dsl +0 -102
  198. package/bios/seabios/src/fw/acpi-dsdt-pci-crs.dsl +0 -90
  199. package/bios/seabios/src/fw/acpi-dsdt.dsl +0 -342
  200. package/bios/seabios/src/fw/acpi-dsdt.hex +0 -554
  201. package/bios/seabios/src/fw/acpi.c +0 -685
  202. package/bios/seabios/src/fw/biostables.c +0 -491
  203. package/bios/seabios/src/fw/coreboot.c +0 -569
  204. package/bios/seabios/src/fw/csm.c +0 -347
  205. package/bios/seabios/src/fw/dev-pci.h +0 -52
  206. package/bios/seabios/src/fw/dev-piix.h +0 -29
  207. package/bios/seabios/src/fw/dev-q35.h +0 -52
  208. package/bios/seabios/src/fw/lzmadecode.c +0 -398
  209. package/bios/seabios/src/fw/lzmadecode.h +0 -67
  210. package/bios/seabios/src/fw/mptable.c +0 -197
  211. package/bios/seabios/src/fw/mtrr.c +0 -105
  212. package/bios/seabios/src/fw/multiboot.c +0 -111
  213. package/bios/seabios/src/fw/paravirt.c +0 -624
  214. package/bios/seabios/src/fw/paravirt.h +0 -63
  215. package/bios/seabios/src/fw/pciinit.c +0 -1187
  216. package/bios/seabios/src/fw/pirtable.c +0 -103
  217. package/bios/seabios/src/fw/q35-acpi-dsdt.dsl +0 -450
  218. package/bios/seabios/src/fw/romfile_loader.c +0 -259
  219. package/bios/seabios/src/fw/romfile_loader.h +0 -91
  220. package/bios/seabios/src/fw/shadow.c +0 -208
  221. package/bios/seabios/src/fw/smbios.c +0 -585
  222. package/bios/seabios/src/fw/smm.c +0 -269
  223. package/bios/seabios/src/fw/smp.c +0 -194
  224. package/bios/seabios/src/fw/ssdt-misc.dsl +0 -104
  225. package/bios/seabios/src/fw/ssdt-misc.hex +0 -88
  226. package/bios/seabios/src/fw/ssdt-pcihp.dsl +0 -36
  227. package/bios/seabios/src/fw/ssdt-pcihp.hex +0 -38
  228. package/bios/seabios/src/fw/ssdt-proc.dsl +0 -48
  229. package/bios/seabios/src/fw/ssdt-proc.hex +0 -35
  230. package/bios/seabios/src/fw/xen.c +0 -149
  231. package/bios/seabios/src/fw/xen.h +0 -125
  232. package/bios/seabios/src/gen-defs.h +0 -19
  233. package/bios/seabios/src/hw/ahci.c +0 -697
  234. package/bios/seabios/src/hw/ahci.h +0 -201
  235. package/bios/seabios/src/hw/ata.c +0 -1046
  236. package/bios/seabios/src/hw/ata.h +0 -163
  237. package/bios/seabios/src/hw/blockcmd.c +0 -372
  238. package/bios/seabios/src/hw/blockcmd.h +0 -114
  239. package/bios/seabios/src/hw/dma.c +0 -67
  240. package/bios/seabios/src/hw/esp-scsi.c +0 -241
  241. package/bios/seabios/src/hw/esp-scsi.h +0 -8
  242. package/bios/seabios/src/hw/floppy.c +0 -741
  243. package/bios/seabios/src/hw/lsi-scsi.c +0 -221
  244. package/bios/seabios/src/hw/lsi-scsi.h +0 -8
  245. package/bios/seabios/src/hw/megasas.c +0 -405
  246. package/bios/seabios/src/hw/megasas.h +0 -8
  247. package/bios/seabios/src/hw/mpt-scsi.c +0 -319
  248. package/bios/seabios/src/hw/mpt-scsi.h +0 -8
  249. package/bios/seabios/src/hw/nvme-int.h +0 -199
  250. package/bios/seabios/src/hw/nvme.c +0 -708
  251. package/bios/seabios/src/hw/nvme.h +0 -17
  252. package/bios/seabios/src/hw/pci.c +0 -133
  253. package/bios/seabios/src/hw/pci.h +0 -47
  254. package/bios/seabios/src/hw/pci_ids.h +0 -2632
  255. package/bios/seabios/src/hw/pci_regs.h +0 -556
  256. package/bios/seabios/src/hw/pcidevice.c +0 -192
  257. package/bios/seabios/src/hw/pcidevice.h +0 -76
  258. package/bios/seabios/src/hw/pic.c +0 -115
  259. package/bios/seabios/src/hw/pic.h +0 -60
  260. package/bios/seabios/src/hw/ps2port.c +0 -543
  261. package/bios/seabios/src/hw/ps2port.h +0 -67
  262. package/bios/seabios/src/hw/pvscsi.c +0 -333
  263. package/bios/seabios/src/hw/pvscsi.h +0 -8
  264. package/bios/seabios/src/hw/ramdisk.c +0 -108
  265. package/bios/seabios/src/hw/rtc.c +0 -100
  266. package/bios/seabios/src/hw/rtc.h +0 -75
  267. package/bios/seabios/src/hw/sdcard.c +0 -572
  268. package/bios/seabios/src/hw/serialio.c +0 -113
  269. package/bios/seabios/src/hw/serialio.h +0 -29
  270. package/bios/seabios/src/hw/timer.c +0 -259
  271. package/bios/seabios/src/hw/tpm_drivers.c +0 -636
  272. package/bios/seabios/src/hw/tpm_drivers.h +0 -127
  273. package/bios/seabios/src/hw/usb-ehci.c +0 -650
  274. package/bios/seabios/src/hw/usb-ehci.h +0 -177
  275. package/bios/seabios/src/hw/usb-hid.c +0 -442
  276. package/bios/seabios/src/hw/usb-hid.h +0 -29
  277. package/bios/seabios/src/hw/usb-hub.c +0 -205
  278. package/bios/seabios/src/hw/usb-hub.h +0 -64
  279. package/bios/seabios/src/hw/usb-msc.c +0 -222
  280. package/bios/seabios/src/hw/usb-msc.h +0 -10
  281. package/bios/seabios/src/hw/usb-ohci.c +0 -568
  282. package/bios/seabios/src/hw/usb-ohci.h +0 -144
  283. package/bios/seabios/src/hw/usb-uas.c +0 -289
  284. package/bios/seabios/src/hw/usb-uas.h +0 -9
  285. package/bios/seabios/src/hw/usb-uhci.c +0 -571
  286. package/bios/seabios/src/hw/usb-uhci.h +0 -128
  287. package/bios/seabios/src/hw/usb-xhci.c +0 -1161
  288. package/bios/seabios/src/hw/usb-xhci.h +0 -133
  289. package/bios/seabios/src/hw/usb.c +0 -499
  290. package/bios/seabios/src/hw/usb.h +0 -254
  291. package/bios/seabios/src/hw/virtio-blk.c +0 -211
  292. package/bios/seabios/src/hw/virtio-blk.h +0 -43
  293. package/bios/seabios/src/hw/virtio-pci.c +0 -501
  294. package/bios/seabios/src/hw/virtio-pci.h +0 -151
  295. package/bios/seabios/src/hw/virtio-ring.c +0 -147
  296. package/bios/seabios/src/hw/virtio-ring.h +0 -121
  297. package/bios/seabios/src/hw/virtio-scsi.c +0 -220
  298. package/bios/seabios/src/hw/virtio-scsi.h +0 -47
  299. package/bios/seabios/src/jpeg.c +0 -1055
  300. package/bios/seabios/src/kbd.c +0 -599
  301. package/bios/seabios/src/list.h +0 -91
  302. package/bios/seabios/src/malloc.c +0 -561
  303. package/bios/seabios/src/malloc.h +0 -70
  304. package/bios/seabios/src/memmap.h +0 -21
  305. package/bios/seabios/src/misc.c +0 -195
  306. package/bios/seabios/src/mouse.c +0 -342
  307. package/bios/seabios/src/optionroms.c +0 -475
  308. package/bios/seabios/src/output.c +0 -584
  309. package/bios/seabios/src/output.h +0 -68
  310. package/bios/seabios/src/pcibios.c +0 -241
  311. package/bios/seabios/src/pmm.c +0 -176
  312. package/bios/seabios/src/pnpbios.c +0 -88
  313. package/bios/seabios/src/post.c +0 -337
  314. package/bios/seabios/src/resume.c +0 -157
  315. package/bios/seabios/src/romfile.c +0 -146
  316. package/bios/seabios/src/romfile.h +0 -21
  317. package/bios/seabios/src/romlayout.S +0 -698
  318. package/bios/seabios/src/sercon.c +0 -677
  319. package/bios/seabios/src/serial.c +0 -317
  320. package/bios/seabios/src/sha1.c +0 -147
  321. package/bios/seabios/src/sha1.h +0 -8
  322. package/bios/seabios/src/stacks.c +0 -771
  323. package/bios/seabios/src/stacks.h +0 -68
  324. package/bios/seabios/src/std/LegacyBios.h +0 -985
  325. package/bios/seabios/src/std/acpi.h +0 -323
  326. package/bios/seabios/src/std/bda.h +0 -174
  327. package/bios/seabios/src/std/disk.h +0 -175
  328. package/bios/seabios/src/std/mptable.h +0 -77
  329. package/bios/seabios/src/std/multiboot.h +0 -260
  330. package/bios/seabios/src/std/optionrom.h +0 -59
  331. package/bios/seabios/src/std/pirtable.h +0 -35
  332. package/bios/seabios/src/std/pmm.h +0 -19
  333. package/bios/seabios/src/std/pnpbios.h +0 -24
  334. package/bios/seabios/src/std/smbios.h +0 -167
  335. package/bios/seabios/src/std/tcg.h +0 -554
  336. package/bios/seabios/src/std/vbe.h +0 -156
  337. package/bios/seabios/src/std/vga.h +0 -63
  338. package/bios/seabios/src/string.c +0 -251
  339. package/bios/seabios/src/string.h +0 -31
  340. package/bios/seabios/src/system.c +0 -357
  341. package/bios/seabios/src/tcgbios.c +0 -2014
  342. package/bios/seabios/src/tcgbios.h +0 -19
  343. package/bios/seabios/src/types.h +0 -156
  344. package/bios/seabios/src/util.h +0 -251
  345. package/bios/seabios/src/version.c +0 -5
  346. package/bios/seabios/src/vgahooks.c +0 -355
  347. package/bios/seabios/src/x86.c +0 -23
  348. package/bios/seabios/src/x86.h +0 -277
  349. package/bios/seabios/vgasrc/Kconfig +0 -211
  350. package/bios/seabios/vgasrc/bochsdisplay.c +0 -59
  351. package/bios/seabios/vgasrc/bochsvga.c +0 -447
  352. package/bios/seabios/vgasrc/bochsvga.h +0 -57
  353. package/bios/seabios/vgasrc/cbvga.c +0 -337
  354. package/bios/seabios/vgasrc/clext.c +0 -627
  355. package/bios/seabios/vgasrc/geodevga.c +0 -434
  356. package/bios/seabios/vgasrc/geodevga.h +0 -89
  357. package/bios/seabios/vgasrc/ramfb.c +0 -163
  358. package/bios/seabios/vgasrc/stdvga.c +0 -485
  359. package/bios/seabios/vgasrc/stdvga.h +0 -81
  360. package/bios/seabios/vgasrc/stdvgaio.c +0 -186
  361. package/bios/seabios/vgasrc/stdvgamodes.c +0 -534
  362. package/bios/seabios/vgasrc/swcursor.c +0 -96
  363. package/bios/seabios/vgasrc/vbe.c +0 -432
  364. package/bios/seabios/vgasrc/vgabios.c +0 -1131
  365. package/bios/seabios/vgasrc/vgabios.h +0 -88
  366. package/bios/seabios/vgasrc/vgaentry.S +0 -161
  367. package/bios/seabios/vgasrc/vgafb.c +0 -661
  368. package/bios/seabios/vgasrc/vgafb.h +0 -42
  369. package/bios/seabios/vgasrc/vgafonts.c +0 -785
  370. package/bios/seabios/vgasrc/vgahw.h +0 -152
  371. package/bios/seabios/vgasrc/vgainit.c +0 -202
  372. package/bios/seabios/vgasrc/vgalayout.lds.S +0 -23
  373. package/bios/seabios/vgasrc/vgautil.h +0 -103
  374. package/bios/seabios/vgasrc/vgaversion.c +0 -6
  375. package/bios/seabios-debug.bin +0 -0
  376. package/bios/seabios-debug.config +0 -117
  377. package/bios/seabios.bin +0 -0
  378. package/bios/seabios.config +0 -114
  379. package/bios/vgabios-debug.bin +0 -0
  380. package/bios/vgabios.bin +0 -0
  381. package/build/binaries.js +0 -1
  382. package/build/index-debug.cjs +0 -1
  383. package/build/index-debug.js +0 -1
  384. package/build/index.cjs +0 -1
  385. package/build/index.js +0 -1
  386. 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,8 +0,0 @@
1
- #ifndef _PVSCSI_H_
2
- #define _PVSCSI_H_
3
-
4
- struct disk_op_s;
5
- int pvscsi_process_op(struct disk_op_s *op);
6
- void pvscsi_setup(void);
7
-
8
- #endif /* _PVSCSI_H_ */
@@ -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