v86 0.3.4 → 0.3.7

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 (369) hide show
  1. package/Readme.md +4 -4
  2. package/bios/seabios/.config +113 -0
  3. package/bios/seabios/.config.old +114 -0
  4. package/bios/seabios/.gitignore +4 -0
  5. package/bios/seabios/COPYING +674 -0
  6. package/bios/seabios/COPYING.LESSER +165 -0
  7. package/bios/seabios/Makefile +286 -0
  8. package/bios/seabios/README +17 -0
  9. package/bios/seabios/docs/Build_overview.md +104 -0
  10. package/bios/seabios/docs/Contributing.md +20 -0
  11. package/bios/seabios/docs/Debugging.md +111 -0
  12. package/bios/seabios/docs/Developer_Documentation.md +25 -0
  13. package/bios/seabios/docs/Developer_links.md +86 -0
  14. package/bios/seabios/docs/Download.md +27 -0
  15. package/bios/seabios/docs/Execution_and_code_flow.md +178 -0
  16. package/bios/seabios/docs/Linking_overview.md +160 -0
  17. package/bios/seabios/docs/Mailinglist.md +8 -0
  18. package/bios/seabios/docs/Memory_Model.md +253 -0
  19. package/bios/seabios/docs/README +5 -0
  20. package/bios/seabios/docs/Releases.md +482 -0
  21. package/bios/seabios/docs/Runtime_config.md +193 -0
  22. package/bios/seabios/docs/SeaBIOS.md +17 -0
  23. package/bios/seabios/docs/SeaVGABIOS.md +39 -0
  24. package/bios/seabios/out/autoconf.h +117 -0
  25. package/bios/seabios/out/include/config/acpi/dsdt.h +0 -0
  26. package/bios/seabios/out/include/config/acpi.h +0 -0
  27. package/bios/seabios/out/include/config/ahci.h +0 -0
  28. package/bios/seabios/out/include/config/apmbios.h +0 -0
  29. package/bios/seabios/out/include/config/ata/dma.h +0 -0
  30. package/bios/seabios/out/include/config/ata/pio32.h +0 -0
  31. package/bios/seabios/out/include/config/ata.h +0 -0
  32. package/bios/seabios/out/include/config/auto.conf +69 -0
  33. package/bios/seabios/out/include/config/auto.conf.cmd +9 -0
  34. package/bios/seabios/out/include/config/boot.h +0 -0
  35. package/bios/seabios/out/include/config/bootorder.h +0 -0
  36. package/bios/seabios/out/include/config/build/vgabios.h +0 -0
  37. package/bios/seabios/out/include/config/call32/smm.h +0 -0
  38. package/bios/seabios/out/include/config/cdrom/boot.h +0 -0
  39. package/bios/seabios/out/include/config/cdrom/emu.h +0 -0
  40. package/bios/seabios/out/include/config/debug/level.h +0 -0
  41. package/bios/seabios/out/include/config/drives.h +0 -0
  42. package/bios/seabios/out/include/config/entry/extrastack.h +0 -0
  43. package/bios/seabios/out/include/config/esp/scsi.h +0 -0
  44. package/bios/seabios/out/include/config/flash/floppy.h +0 -0
  45. package/bios/seabios/out/include/config/floppy.h +0 -0
  46. package/bios/seabios/out/include/config/fw/romfile/load.h +0 -0
  47. package/bios/seabios/out/include/config/hardware/irq.h +0 -0
  48. package/bios/seabios/out/include/config/kbd/call/int15/4f.h +0 -0
  49. package/bios/seabios/out/include/config/keyboard.h +0 -0
  50. package/bios/seabios/out/include/config/lpt.h +0 -0
  51. package/bios/seabios/out/include/config/lsi/scsi.h +0 -0
  52. package/bios/seabios/out/include/config/malloc/uppermemory.h +0 -0
  53. package/bios/seabios/out/include/config/megasas.h +0 -0
  54. package/bios/seabios/out/include/config/mouse.h +0 -0
  55. package/bios/seabios/out/include/config/mpt/scsi.h +0 -0
  56. package/bios/seabios/out/include/config/mptable.h +0 -0
  57. package/bios/seabios/out/include/config/mtrr/init.h +0 -0
  58. package/bios/seabios/out/include/config/optionroms.h +0 -0
  59. package/bios/seabios/out/include/config/override/pci/id.h +0 -0
  60. package/bios/seabios/out/include/config/pcibios.h +0 -0
  61. package/bios/seabios/out/include/config/pirtable.h +0 -0
  62. package/bios/seabios/out/include/config/pmm.h +0 -0
  63. package/bios/seabios/out/include/config/pmtimer.h +0 -0
  64. package/bios/seabios/out/include/config/pnpbios.h +0 -0
  65. package/bios/seabios/out/include/config/ps2port.h +0 -0
  66. package/bios/seabios/out/include/config/pvscsi.h +0 -0
  67. package/bios/seabios/out/include/config/qemu/hardware.h +0 -0
  68. package/bios/seabios/out/include/config/qemu.h +0 -0
  69. package/bios/seabios/out/include/config/rom/size.h +0 -0
  70. package/bios/seabios/out/include/config/rtc/timer.h +0 -0
  71. package/bios/seabios/out/include/config/s3/resume.h +0 -0
  72. package/bios/seabios/out/include/config/sdcard.h +0 -0
  73. package/bios/seabios/out/include/config/serial.h +0 -0
  74. package/bios/seabios/out/include/config/tcgbios.h +0 -0
  75. package/bios/seabios/out/include/config/threads.h +0 -0
  76. package/bios/seabios/out/include/config/tristate.conf +4 -0
  77. package/bios/seabios/out/include/config/tsc/timer.h +0 -0
  78. package/bios/seabios/out/include/config/use/smm.h +0 -0
  79. package/bios/seabios/out/include/config/vga/allocate/extra/stack.h +0 -0
  80. package/bios/seabios/out/include/config/vga/bochs/stdvga.h +0 -0
  81. package/bios/seabios/out/include/config/vga/bochs.h +0 -0
  82. package/bios/seabios/out/include/config/vga/did.h +0 -0
  83. package/bios/seabios/out/include/config/vga/extra/stack/size.h +0 -0
  84. package/bios/seabios/out/include/config/vga/fixup/asm.h +0 -0
  85. package/bios/seabios/out/include/config/vga/pci.h +0 -0
  86. package/bios/seabios/out/include/config/vga/stdvga/ports.h +0 -0
  87. package/bios/seabios/out/include/config/vga/vbe.h +0 -0
  88. package/bios/seabios/out/include/config/vga/vid.h +0 -0
  89. package/bios/seabios/out/include/config/vgahooks.h +0 -0
  90. package/bios/seabios/out/include/config/virtio/blk.h +0 -0
  91. package/bios/seabios/out/include/config/virtio/scsi.h +0 -0
  92. package/bios/seabios/out/include/config/xen.h +0 -0
  93. package/bios/seabios/out/scripts/kconfig/conf +0 -0
  94. package/bios/seabios/out/scripts/kconfig/conf.o +0 -0
  95. package/bios/seabios/out/scripts/kconfig/zconf.hash.c +289 -0
  96. package/bios/seabios/out/scripts/kconfig/zconf.lex.c +2420 -0
  97. package/bios/seabios/out/scripts/kconfig/zconf.tab.c +2538 -0
  98. package/bios/seabios/out/scripts/kconfig/zconf.tab.o +0 -0
  99. package/bios/seabios/scripts/acpi_extract.py +366 -0
  100. package/bios/seabios/scripts/acpi_extract_preprocess.py +41 -0
  101. package/bios/seabios/scripts/buildrom.py +56 -0
  102. package/bios/seabios/scripts/buildversion.py +134 -0
  103. package/bios/seabios/scripts/checkrom.py +95 -0
  104. package/bios/seabios/scripts/checkstack.py +226 -0
  105. package/bios/seabios/scripts/checksum.py +16 -0
  106. package/bios/seabios/scripts/encodeint.py +21 -0
  107. package/bios/seabios/scripts/gen-offsets.sh +17 -0
  108. package/bios/seabios/scripts/kconfig/.gitignore +22 -0
  109. package/bios/seabios/scripts/kconfig/Makefile +331 -0
  110. package/bios/seabios/scripts/kconfig/POTFILES.in +12 -0
  111. package/bios/seabios/scripts/kconfig/check.sh +13 -0
  112. package/bios/seabios/scripts/kconfig/conf.c +718 -0
  113. package/bios/seabios/scripts/kconfig/confdata.c +1250 -0
  114. package/bios/seabios/scripts/kconfig/expr.c +1168 -0
  115. package/bios/seabios/scripts/kconfig/expr.h +241 -0
  116. package/bios/seabios/scripts/kconfig/gconf.c +1542 -0
  117. package/bios/seabios/scripts/kconfig/gconf.glade +661 -0
  118. package/bios/seabios/scripts/kconfig/images.c +326 -0
  119. package/bios/seabios/scripts/kconfig/kxgettext.c +235 -0
  120. package/bios/seabios/scripts/kconfig/lex.zconf.c +2430 -0
  121. package/bios/seabios/scripts/kconfig/list.h +131 -0
  122. package/bios/seabios/scripts/kconfig/lkc.h +200 -0
  123. package/bios/seabios/scripts/kconfig/lkc_proto.h +57 -0
  124. package/bios/seabios/scripts/kconfig/lxdialog/.gitignore +4 -0
  125. package/bios/seabios/scripts/kconfig/lxdialog/BIG.FAT.WARNING +4 -0
  126. package/bios/seabios/scripts/kconfig/lxdialog/check-lxdialog.sh +87 -0
  127. package/bios/seabios/scripts/kconfig/lxdialog/checklist.c +332 -0
  128. package/bios/seabios/scripts/kconfig/lxdialog/dialog.h +257 -0
  129. package/bios/seabios/scripts/kconfig/lxdialog/inputbox.c +301 -0
  130. package/bios/seabios/scripts/kconfig/lxdialog/menubox.c +437 -0
  131. package/bios/seabios/scripts/kconfig/lxdialog/textbox.c +408 -0
  132. package/bios/seabios/scripts/kconfig/lxdialog/util.c +713 -0
  133. package/bios/seabios/scripts/kconfig/lxdialog/yesno.c +114 -0
  134. package/bios/seabios/scripts/kconfig/mconf.c +1036 -0
  135. package/bios/seabios/scripts/kconfig/menu.c +697 -0
  136. package/bios/seabios/scripts/kconfig/merge_config.sh +150 -0
  137. package/bios/seabios/scripts/kconfig/nconf.c +1556 -0
  138. package/bios/seabios/scripts/kconfig/nconf.gui.c +656 -0
  139. package/bios/seabios/scripts/kconfig/nconf.h +96 -0
  140. package/bios/seabios/scripts/kconfig/qconf.cc +1795 -0
  141. package/bios/seabios/scripts/kconfig/qconf.h +338 -0
  142. package/bios/seabios/scripts/kconfig/streamline_config.pl +647 -0
  143. package/bios/seabios/scripts/kconfig/symbol.c +1373 -0
  144. package/bios/seabios/scripts/kconfig/util.c +157 -0
  145. package/bios/seabios/scripts/kconfig/zconf.gperf +48 -0
  146. package/bios/seabios/scripts/kconfig/zconf.hash.c_shipped +289 -0
  147. package/bios/seabios/scripts/kconfig/zconf.l +363 -0
  148. package/bios/seabios/scripts/kconfig/zconf.lex.c_shipped +2420 -0
  149. package/bios/seabios/scripts/kconfig/zconf.tab.c_shipped +2538 -0
  150. package/bios/seabios/scripts/kconfig/zconf.y +733 -0
  151. package/bios/seabios/scripts/layoutrom.py +705 -0
  152. package/bios/seabios/scripts/python23compat.py +14 -0
  153. package/bios/seabios/scripts/readserial.py +190 -0
  154. package/bios/seabios/scripts/tarball.sh +36 -0
  155. package/bios/seabios/scripts/test-build.sh +90 -0
  156. package/bios/seabios/scripts/transdump.py +53 -0
  157. package/bios/seabios/scripts/vgafixup.py +96 -0
  158. package/bios/seabios/src/Kconfig +579 -0
  159. package/bios/seabios/src/apm.c +215 -0
  160. package/bios/seabios/src/asm-offsets.c +23 -0
  161. package/bios/seabios/src/biosvar.h +130 -0
  162. package/bios/seabios/src/block.c +623 -0
  163. package/bios/seabios/src/block.h +121 -0
  164. package/bios/seabios/src/bmp.c +117 -0
  165. package/bios/seabios/src/boot.c +793 -0
  166. package/bios/seabios/src/bootsplash.c +255 -0
  167. package/bios/seabios/src/bregs.h +80 -0
  168. package/bios/seabios/src/byteorder.h +71 -0
  169. package/bios/seabios/src/cdrom.c +322 -0
  170. package/bios/seabios/src/clock.c +506 -0
  171. package/bios/seabios/src/code16gcc.s +1 -0
  172. package/bios/seabios/src/config.h +108 -0
  173. package/bios/seabios/src/cp437.c +275 -0
  174. package/bios/seabios/src/cp437.h +1 -0
  175. package/bios/seabios/src/disk.c +779 -0
  176. package/bios/seabios/src/e820map.c +152 -0
  177. package/bios/seabios/src/e820map.h +26 -0
  178. package/bios/seabios/src/entryfuncs.S +165 -0
  179. package/bios/seabios/src/farptr.h +208 -0
  180. package/bios/seabios/src/font.c +139 -0
  181. package/bios/seabios/src/fw/acpi-dsdt-cpu-hotplug.dsl +78 -0
  182. package/bios/seabios/src/fw/acpi-dsdt-dbug.dsl +26 -0
  183. package/bios/seabios/src/fw/acpi-dsdt-hpet.dsl +36 -0
  184. package/bios/seabios/src/fw/acpi-dsdt-isa.dsl +102 -0
  185. package/bios/seabios/src/fw/acpi-dsdt-pci-crs.dsl +90 -0
  186. package/bios/seabios/src/fw/acpi-dsdt.dsl +342 -0
  187. package/bios/seabios/src/fw/acpi-dsdt.hex +554 -0
  188. package/bios/seabios/src/fw/acpi.c +685 -0
  189. package/bios/seabios/src/fw/biostables.c +491 -0
  190. package/bios/seabios/src/fw/coreboot.c +569 -0
  191. package/bios/seabios/src/fw/csm.c +347 -0
  192. package/bios/seabios/src/fw/dev-pci.h +52 -0
  193. package/bios/seabios/src/fw/dev-piix.h +29 -0
  194. package/bios/seabios/src/fw/dev-q35.h +52 -0
  195. package/bios/seabios/src/fw/lzmadecode.c +398 -0
  196. package/bios/seabios/src/fw/lzmadecode.h +67 -0
  197. package/bios/seabios/src/fw/mptable.c +197 -0
  198. package/bios/seabios/src/fw/mtrr.c +105 -0
  199. package/bios/seabios/src/fw/multiboot.c +111 -0
  200. package/bios/seabios/src/fw/paravirt.c +624 -0
  201. package/bios/seabios/src/fw/paravirt.h +63 -0
  202. package/bios/seabios/src/fw/pciinit.c +1187 -0
  203. package/bios/seabios/src/fw/pirtable.c +103 -0
  204. package/bios/seabios/src/fw/q35-acpi-dsdt.dsl +450 -0
  205. package/bios/seabios/src/fw/romfile_loader.c +259 -0
  206. package/bios/seabios/src/fw/romfile_loader.h +91 -0
  207. package/bios/seabios/src/fw/shadow.c +208 -0
  208. package/bios/seabios/src/fw/smbios.c +585 -0
  209. package/bios/seabios/src/fw/smm.c +269 -0
  210. package/bios/seabios/src/fw/smp.c +194 -0
  211. package/bios/seabios/src/fw/ssdt-misc.dsl +104 -0
  212. package/bios/seabios/src/fw/ssdt-misc.hex +88 -0
  213. package/bios/seabios/src/fw/ssdt-pcihp.dsl +36 -0
  214. package/bios/seabios/src/fw/ssdt-pcihp.hex +38 -0
  215. package/bios/seabios/src/fw/ssdt-proc.dsl +48 -0
  216. package/bios/seabios/src/fw/ssdt-proc.hex +35 -0
  217. package/bios/seabios/src/fw/xen.c +149 -0
  218. package/bios/seabios/src/fw/xen.h +125 -0
  219. package/bios/seabios/src/gen-defs.h +19 -0
  220. package/bios/seabios/src/hw/ahci.c +697 -0
  221. package/bios/seabios/src/hw/ahci.h +201 -0
  222. package/bios/seabios/src/hw/ata.c +1046 -0
  223. package/bios/seabios/src/hw/ata.h +163 -0
  224. package/bios/seabios/src/hw/blockcmd.c +372 -0
  225. package/bios/seabios/src/hw/blockcmd.h +114 -0
  226. package/bios/seabios/src/hw/dma.c +67 -0
  227. package/bios/seabios/src/hw/esp-scsi.c +241 -0
  228. package/bios/seabios/src/hw/esp-scsi.h +8 -0
  229. package/bios/seabios/src/hw/floppy.c +741 -0
  230. package/bios/seabios/src/hw/lsi-scsi.c +221 -0
  231. package/bios/seabios/src/hw/lsi-scsi.h +8 -0
  232. package/bios/seabios/src/hw/megasas.c +405 -0
  233. package/bios/seabios/src/hw/megasas.h +8 -0
  234. package/bios/seabios/src/hw/mpt-scsi.c +319 -0
  235. package/bios/seabios/src/hw/mpt-scsi.h +8 -0
  236. package/bios/seabios/src/hw/nvme-int.h +199 -0
  237. package/bios/seabios/src/hw/nvme.c +708 -0
  238. package/bios/seabios/src/hw/nvme.h +17 -0
  239. package/bios/seabios/src/hw/pci.c +133 -0
  240. package/bios/seabios/src/hw/pci.h +47 -0
  241. package/bios/seabios/src/hw/pci_ids.h +2632 -0
  242. package/bios/seabios/src/hw/pci_regs.h +556 -0
  243. package/bios/seabios/src/hw/pcidevice.c +192 -0
  244. package/bios/seabios/src/hw/pcidevice.h +76 -0
  245. package/bios/seabios/src/hw/pic.c +115 -0
  246. package/bios/seabios/src/hw/pic.h +60 -0
  247. package/bios/seabios/src/hw/ps2port.c +543 -0
  248. package/bios/seabios/src/hw/ps2port.h +67 -0
  249. package/bios/seabios/src/hw/pvscsi.c +333 -0
  250. package/bios/seabios/src/hw/pvscsi.h +8 -0
  251. package/bios/seabios/src/hw/ramdisk.c +108 -0
  252. package/bios/seabios/src/hw/rtc.c +100 -0
  253. package/bios/seabios/src/hw/rtc.h +75 -0
  254. package/bios/seabios/src/hw/sdcard.c +572 -0
  255. package/bios/seabios/src/hw/serialio.c +113 -0
  256. package/bios/seabios/src/hw/serialio.h +29 -0
  257. package/bios/seabios/src/hw/timer.c +259 -0
  258. package/bios/seabios/src/hw/tpm_drivers.c +636 -0
  259. package/bios/seabios/src/hw/tpm_drivers.h +127 -0
  260. package/bios/seabios/src/hw/usb-ehci.c +650 -0
  261. package/bios/seabios/src/hw/usb-ehci.h +177 -0
  262. package/bios/seabios/src/hw/usb-hid.c +442 -0
  263. package/bios/seabios/src/hw/usb-hid.h +29 -0
  264. package/bios/seabios/src/hw/usb-hub.c +205 -0
  265. package/bios/seabios/src/hw/usb-hub.h +64 -0
  266. package/bios/seabios/src/hw/usb-msc.c +222 -0
  267. package/bios/seabios/src/hw/usb-msc.h +10 -0
  268. package/bios/seabios/src/hw/usb-ohci.c +568 -0
  269. package/bios/seabios/src/hw/usb-ohci.h +144 -0
  270. package/bios/seabios/src/hw/usb-uas.c +289 -0
  271. package/bios/seabios/src/hw/usb-uas.h +9 -0
  272. package/bios/seabios/src/hw/usb-uhci.c +571 -0
  273. package/bios/seabios/src/hw/usb-uhci.h +128 -0
  274. package/bios/seabios/src/hw/usb-xhci.c +1161 -0
  275. package/bios/seabios/src/hw/usb-xhci.h +133 -0
  276. package/bios/seabios/src/hw/usb.c +499 -0
  277. package/bios/seabios/src/hw/usb.h +254 -0
  278. package/bios/seabios/src/hw/virtio-blk.c +211 -0
  279. package/bios/seabios/src/hw/virtio-blk.h +43 -0
  280. package/bios/seabios/src/hw/virtio-pci.c +501 -0
  281. package/bios/seabios/src/hw/virtio-pci.h +151 -0
  282. package/bios/seabios/src/hw/virtio-ring.c +147 -0
  283. package/bios/seabios/src/hw/virtio-ring.h +121 -0
  284. package/bios/seabios/src/hw/virtio-scsi.c +220 -0
  285. package/bios/seabios/src/hw/virtio-scsi.h +47 -0
  286. package/bios/seabios/src/jpeg.c +1055 -0
  287. package/bios/seabios/src/kbd.c +599 -0
  288. package/bios/seabios/src/list.h +91 -0
  289. package/bios/seabios/src/malloc.c +561 -0
  290. package/bios/seabios/src/malloc.h +70 -0
  291. package/bios/seabios/src/memmap.h +21 -0
  292. package/bios/seabios/src/misc.c +195 -0
  293. package/bios/seabios/src/mouse.c +342 -0
  294. package/bios/seabios/src/optionroms.c +475 -0
  295. package/bios/seabios/src/output.c +584 -0
  296. package/bios/seabios/src/output.h +68 -0
  297. package/bios/seabios/src/pcibios.c +241 -0
  298. package/bios/seabios/src/pmm.c +176 -0
  299. package/bios/seabios/src/pnpbios.c +88 -0
  300. package/bios/seabios/src/post.c +337 -0
  301. package/bios/seabios/src/resume.c +157 -0
  302. package/bios/seabios/src/romfile.c +146 -0
  303. package/bios/seabios/src/romfile.h +21 -0
  304. package/bios/seabios/src/romlayout.S +698 -0
  305. package/bios/seabios/src/sercon.c +677 -0
  306. package/bios/seabios/src/serial.c +317 -0
  307. package/bios/seabios/src/sha1.c +147 -0
  308. package/bios/seabios/src/sha1.h +8 -0
  309. package/bios/seabios/src/stacks.c +771 -0
  310. package/bios/seabios/src/stacks.h +68 -0
  311. package/bios/seabios/src/std/LegacyBios.h +985 -0
  312. package/bios/seabios/src/std/acpi.h +323 -0
  313. package/bios/seabios/src/std/bda.h +174 -0
  314. package/bios/seabios/src/std/disk.h +175 -0
  315. package/bios/seabios/src/std/mptable.h +77 -0
  316. package/bios/seabios/src/std/multiboot.h +260 -0
  317. package/bios/seabios/src/std/optionrom.h +59 -0
  318. package/bios/seabios/src/std/pirtable.h +35 -0
  319. package/bios/seabios/src/std/pmm.h +19 -0
  320. package/bios/seabios/src/std/pnpbios.h +24 -0
  321. package/bios/seabios/src/std/smbios.h +167 -0
  322. package/bios/seabios/src/std/tcg.h +554 -0
  323. package/bios/seabios/src/std/vbe.h +156 -0
  324. package/bios/seabios/src/std/vga.h +63 -0
  325. package/bios/seabios/src/string.c +251 -0
  326. package/bios/seabios/src/string.h +31 -0
  327. package/bios/seabios/src/system.c +357 -0
  328. package/bios/seabios/src/tcgbios.c +2014 -0
  329. package/bios/seabios/src/tcgbios.h +19 -0
  330. package/bios/seabios/src/types.h +156 -0
  331. package/bios/seabios/src/util.h +251 -0
  332. package/bios/seabios/src/version.c +5 -0
  333. package/bios/seabios/src/vgahooks.c +355 -0
  334. package/bios/seabios/src/x86.c +23 -0
  335. package/bios/seabios/src/x86.h +277 -0
  336. package/bios/seabios/vgasrc/Kconfig +211 -0
  337. package/bios/seabios/vgasrc/bochsdisplay.c +59 -0
  338. package/bios/seabios/vgasrc/bochsvga.c +447 -0
  339. package/bios/seabios/vgasrc/bochsvga.h +57 -0
  340. package/bios/seabios/vgasrc/cbvga.c +337 -0
  341. package/bios/seabios/vgasrc/clext.c +627 -0
  342. package/bios/seabios/vgasrc/geodevga.c +434 -0
  343. package/bios/seabios/vgasrc/geodevga.h +89 -0
  344. package/bios/seabios/vgasrc/ramfb.c +163 -0
  345. package/bios/seabios/vgasrc/stdvga.c +485 -0
  346. package/bios/seabios/vgasrc/stdvga.h +81 -0
  347. package/bios/seabios/vgasrc/stdvgaio.c +186 -0
  348. package/bios/seabios/vgasrc/stdvgamodes.c +534 -0
  349. package/bios/seabios/vgasrc/swcursor.c +96 -0
  350. package/bios/seabios/vgasrc/vbe.c +432 -0
  351. package/bios/seabios/vgasrc/vgabios.c +1131 -0
  352. package/bios/seabios/vgasrc/vgabios.h +88 -0
  353. package/bios/seabios/vgasrc/vgaentry.S +161 -0
  354. package/bios/seabios/vgasrc/vgafb.c +661 -0
  355. package/bios/seabios/vgasrc/vgafb.h +42 -0
  356. package/bios/seabios/vgasrc/vgafonts.c +785 -0
  357. package/bios/seabios/vgasrc/vgahw.h +152 -0
  358. package/bios/seabios/vgasrc/vgainit.c +202 -0
  359. package/bios/seabios/vgasrc/vgalayout.lds.S +23 -0
  360. package/bios/seabios/vgasrc/vgautil.h +103 -0
  361. package/bios/seabios/vgasrc/vgaversion.c +6 -0
  362. package/build/binaries.js +1 -1
  363. package/build/index-debug.cjs +1 -1
  364. package/build/index-debug.js +1 -1
  365. package/build/index.cjs +1 -1
  366. package/build/index.js +1 -1
  367. package/build/v86-debug.wasm +0 -0
  368. package/build/v86.wasm +0 -0
  369. package/package.json +1 -1
@@ -0,0 +1,147 @@
1
+ /* virtio-pci.c - virtio ring management
2
+ *
3
+ * (c) Copyright 2008 Bull S.A.S.
4
+ *
5
+ * Author: Laurent Vivier <Laurent.Vivier@bull.net>
6
+ *
7
+ * some parts from Linux Virtio Ring
8
+ *
9
+ * Copyright Rusty Russell IBM Corporation 2007
10
+ *
11
+ * Adopted for Seabios: Gleb Natapov <gleb@redhat.com>
12
+ *
13
+ * This work is licensed under the terms of the GNU LGPLv3
14
+ * See the COPYING file in the top-level directory.
15
+ *
16
+ *
17
+ */
18
+
19
+ #include "output.h" // panic
20
+ #include "virtio-ring.h"
21
+ #include "virtio-pci.h"
22
+
23
+ #define BUG() do { \
24
+ panic("BUG: failure at %d/%s()!\n", __LINE__, __func__); \
25
+ } while (0)
26
+ #define BUG_ON(condition) do { if (condition) BUG(); } while (0)
27
+
28
+ /*
29
+ * vring_more_used
30
+ *
31
+ * is there some used buffers ?
32
+ *
33
+ */
34
+
35
+ int vring_more_used(struct vring_virtqueue *vq)
36
+ {
37
+ struct vring_used *used = vq->vring.used;
38
+ int more = vq->last_used_idx != used->idx;
39
+ /* Make sure ring reads are done after idx read above. */
40
+ smp_rmb();
41
+ return more;
42
+ }
43
+
44
+ /*
45
+ * vring_free
46
+ *
47
+ * put at the begin of the free list the current desc[head]
48
+ */
49
+
50
+ void vring_detach(struct vring_virtqueue *vq, unsigned int head)
51
+ {
52
+ struct vring *vr = &vq->vring;
53
+ struct vring_desc *desc = GET_LOWFLAT(vr->desc);
54
+ unsigned int i;
55
+
56
+ /* find end of given descriptor */
57
+
58
+ i = head;
59
+ while (desc[i].flags & VRING_DESC_F_NEXT)
60
+ i = desc[i].next;
61
+
62
+ /* link it with free list and point to it */
63
+
64
+ desc[i].next = vq->free_head;
65
+ vq->free_head = head;
66
+ }
67
+
68
+ /*
69
+ * vring_get_buf
70
+ *
71
+ * get a buffer from the used list
72
+ *
73
+ */
74
+
75
+ int vring_get_buf(struct vring_virtqueue *vq, unsigned int *len)
76
+ {
77
+ struct vring *vr = &vq->vring;
78
+ struct vring_used_elem *elem;
79
+ struct vring_used *used = vq->vring.used;
80
+ u32 id;
81
+ int ret;
82
+
83
+ // BUG_ON(!vring_more_used(vq));
84
+
85
+ elem = &used->ring[vq->last_used_idx % vr->num];
86
+ id = elem->id;
87
+ if (len != NULL)
88
+ *len = elem->len;
89
+
90
+ ret = vq->vdata[id];
91
+
92
+ vring_detach(vq, id);
93
+
94
+ vq->last_used_idx = vq->last_used_idx + 1;
95
+
96
+ return ret;
97
+ }
98
+
99
+ void vring_add_buf(struct vring_virtqueue *vq,
100
+ struct vring_list list[],
101
+ unsigned int out, unsigned int in,
102
+ int index, int num_added)
103
+ {
104
+ struct vring *vr = &vq->vring;
105
+ int i, av, head, prev;
106
+ struct vring_desc *desc = vr->desc;
107
+ struct vring_avail *avail = vr->avail;
108
+
109
+ BUG_ON(out + in == 0);
110
+
111
+ prev = 0;
112
+ head = vq->free_head;
113
+ for (i = head; out; i = desc[i].next, out--) {
114
+ desc[i].flags = VRING_DESC_F_NEXT;
115
+ desc[i].addr = (u64)virt_to_phys(list->addr);
116
+ desc[i].len = list->length;
117
+ prev = i;
118
+ list++;
119
+ }
120
+ for ( ; in; i = desc[i].next, in--) {
121
+ desc[i].flags = VRING_DESC_F_NEXT|VRING_DESC_F_WRITE;
122
+ desc[i].addr = (u64)virt_to_phys(list->addr);
123
+ desc[i].len = list->length;
124
+ prev = i;
125
+ list++;
126
+ }
127
+ desc[prev].flags = desc[prev].flags & ~VRING_DESC_F_NEXT;
128
+
129
+ vq->free_head = i;
130
+
131
+ vq->vdata[head] = index;
132
+
133
+ av = (avail->idx + num_added) % vr->num;
134
+ avail->ring[av] = head;
135
+ }
136
+
137
+ void vring_kick(struct vp_device *vp, struct vring_virtqueue *vq, int num_added)
138
+ {
139
+ struct vring *vr = &vq->vring;
140
+ struct vring_avail *avail = vr->avail;
141
+
142
+ /* Make sure idx update is done after ring write. */
143
+ smp_wmb();
144
+ avail->idx = avail->idx + num_added;
145
+
146
+ vp_notify(vp, vq);
147
+ }
@@ -0,0 +1,121 @@
1
+ #ifndef _VIRTIO_RING_H
2
+ #define _VIRTIO_RING_H
3
+
4
+ #include "types.h" // u64
5
+ #include "memmap.h" // PAGE_SIZE
6
+
7
+ /* Status byte for guest to report progress, and synchronize features. */
8
+ /* We have seen device and processed generic fields (VIRTIO_CONFIG_F_VIRTIO) */
9
+ #define VIRTIO_CONFIG_S_ACKNOWLEDGE 1
10
+ /* We have found a driver for the device. */
11
+ #define VIRTIO_CONFIG_S_DRIVER 2
12
+ /* Driver has used its parts of the config, and is happy */
13
+ #define VIRTIO_CONFIG_S_DRIVER_OK 4
14
+ /* Driver has finished configuring features */
15
+ #define VIRTIO_CONFIG_S_FEATURES_OK 8
16
+ /* We've given up on this device. */
17
+ #define VIRTIO_CONFIG_S_FAILED 0x80
18
+
19
+ /* v1.0 compliant. */
20
+ #define VIRTIO_F_VERSION_1 32
21
+ #define VIRTIO_F_IOMMU_PLATFORM 33
22
+
23
+ #define MAX_QUEUE_NUM (128)
24
+
25
+ #define VRING_DESC_F_NEXT 1
26
+ #define VRING_DESC_F_WRITE 2
27
+
28
+ #define VRING_AVAIL_F_NO_INTERRUPT 1
29
+
30
+ #define VRING_USED_F_NO_NOTIFY 1
31
+
32
+ struct vring_desc
33
+ {
34
+ u64 addr;
35
+ u32 len;
36
+ u16 flags;
37
+ u16 next;
38
+ };
39
+
40
+ struct vring_avail
41
+ {
42
+ u16 flags;
43
+ u16 idx;
44
+ u16 ring[0];
45
+ };
46
+
47
+ struct vring_used_elem
48
+ {
49
+ u32 id;
50
+ u32 len;
51
+ };
52
+
53
+ struct vring_used
54
+ {
55
+ u16 flags;
56
+ u16 idx;
57
+ struct vring_used_elem ring[];
58
+ };
59
+
60
+ struct vring {
61
+ unsigned int num;
62
+ struct vring_desc *desc;
63
+ struct vring_avail *avail;
64
+ struct vring_used *used;
65
+ };
66
+
67
+ #define vring_size(num) \
68
+ (ALIGN(sizeof(struct vring_desc) * num + sizeof(struct vring_avail) \
69
+ + sizeof(u16) * num, PAGE_SIZE) \
70
+ + sizeof(struct vring_used) + sizeof(struct vring_used_elem) * num)
71
+
72
+ typedef unsigned char virtio_queue_t[vring_size(MAX_QUEUE_NUM)];
73
+
74
+ struct vring_virtqueue {
75
+ virtio_queue_t queue;
76
+ struct vring vring;
77
+ u16 free_head;
78
+ u16 last_used_idx;
79
+ u16 vdata[MAX_QUEUE_NUM];
80
+ /* PCI */
81
+ int queue_index;
82
+ int queue_notify_off;
83
+ };
84
+
85
+ struct vring_list {
86
+ char *addr;
87
+ unsigned int length;
88
+ };
89
+
90
+ static inline void
91
+ vring_init(struct vring *vr, unsigned int num, unsigned char *queue)
92
+ {
93
+ ASSERT32FLAT();
94
+ vr->num = num;
95
+
96
+ /* physical address of desc must be page aligned */
97
+ vr->desc = (void*)ALIGN((u32)queue, PAGE_SIZE);
98
+
99
+ vr->avail = (struct vring_avail *)&vr->desc[num];
100
+ /* disable interrupts */
101
+ vr->avail->flags |= VRING_AVAIL_F_NO_INTERRUPT;
102
+
103
+ /* physical address of used must be page aligned */
104
+ vr->used = (void*)ALIGN((u32)&vr->avail->ring[num], PAGE_SIZE);
105
+
106
+ int i;
107
+ for (i = 0; i < num - 1; i++)
108
+ vr->desc[i].next = i + 1;
109
+ vr->desc[i].next = 0;
110
+ }
111
+
112
+ struct vp_device;
113
+ int vring_more_used(struct vring_virtqueue *vq);
114
+ void vring_detach(struct vring_virtqueue *vq, unsigned int head);
115
+ int vring_get_buf(struct vring_virtqueue *vq, unsigned int *len);
116
+ void vring_add_buf(struct vring_virtqueue *vq, struct vring_list list[],
117
+ unsigned int out, unsigned int in,
118
+ int index, int num_added);
119
+ void vring_kick(struct vp_device *vp, struct vring_virtqueue *vq, int num_added);
120
+
121
+ #endif /* _VIRTIO_RING_H_ */
@@ -0,0 +1,220 @@
1
+ // Virtio SCSI boot support.
2
+ //
3
+ // Copyright (C) 2012 Red Hat Inc.
4
+ //
5
+ // Authors:
6
+ // Paolo Bonzini <pbonzini@redhat.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 "output.h" // dprintf
15
+ #include "pcidevice.h" // foreachpci
16
+ #include "pci_ids.h" // PCI_DEVICE_ID_VIRTIO_BLK
17
+ #include "pci_regs.h" // PCI_VENDOR_ID
18
+ #include "stacks.h" // run_thread
19
+ #include "std/disk.h" // DISK_RET_SUCCESS
20
+ #include "string.h" // memset
21
+ #include "util.h" // usleep
22
+ #include "virtio-pci.h"
23
+ #include "virtio-ring.h"
24
+ #include "virtio-scsi.h"
25
+
26
+ struct virtio_lun_s {
27
+ struct drive_s drive;
28
+ struct pci_device *pci;
29
+ struct vring_virtqueue *vq;
30
+ struct vp_device *vp;
31
+ u16 target;
32
+ u16 lun;
33
+ };
34
+
35
+ int
36
+ virtio_scsi_process_op(struct disk_op_s *op)
37
+ {
38
+ if (! CONFIG_VIRTIO_SCSI)
39
+ return 0;
40
+ struct virtio_lun_s *vlun =
41
+ container_of(op->drive_fl, struct virtio_lun_s, drive);
42
+ struct vp_device *vp = vlun->vp;
43
+ struct vring_virtqueue *vq = vlun->vq;
44
+ struct virtio_scsi_req_cmd req;
45
+ struct virtio_scsi_resp_cmd resp;
46
+ struct vring_list sg[3];
47
+
48
+ memset(&req, 0, sizeof(req));
49
+ int blocksize = scsi_fill_cmd(op, req.cdb, 16);
50
+ if (blocksize < 0)
51
+ return default_process_op(op);
52
+ req.lun[0] = 1;
53
+ req.lun[1] = vlun->target;
54
+ req.lun[2] = (vlun->lun >> 8) | 0x40;
55
+ req.lun[3] = (vlun->lun & 0xff);
56
+
57
+ u32 len = op->count * blocksize;
58
+ int datain = scsi_is_read(op);
59
+ int in_num = (datain ? 2 : 1);
60
+ int out_num = (len ? 3 : 2) - in_num;
61
+
62
+ sg[0].addr = (void*)(&req);
63
+ sg[0].length = sizeof(req);
64
+
65
+ sg[out_num].addr = (void*)(&resp);
66
+ sg[out_num].length = sizeof(resp);
67
+
68
+ if (len) {
69
+ int data_idx = (datain ? 2 : 1);
70
+ sg[data_idx].addr = op->buf_fl;
71
+ sg[data_idx].length = len;
72
+ }
73
+
74
+ /* Add to virtqueue and kick host */
75
+ vring_add_buf(vq, sg, out_num, in_num, 0, 0);
76
+ vring_kick(vp, vq, 1);
77
+
78
+ /* Wait for reply */
79
+ while (!vring_more_used(vq))
80
+ usleep(5);
81
+
82
+ /* Reclaim virtqueue element */
83
+ vring_get_buf(vq, NULL);
84
+
85
+ /* Clear interrupt status register. Avoid leaving interrupts stuck if
86
+ * VRING_AVAIL_F_NO_INTERRUPT was ignored and interrupts were raised.
87
+ */
88
+ vp_get_isr(vp);
89
+
90
+ if (resp.response == VIRTIO_SCSI_S_OK && resp.status == 0) {
91
+ return DISK_RET_SUCCESS;
92
+ }
93
+ return DISK_RET_EBADTRACK;
94
+ }
95
+
96
+ static void
97
+ virtio_scsi_init_lun(struct virtio_lun_s *vlun, struct pci_device *pci,
98
+ struct vp_device *vp, struct vring_virtqueue *vq,
99
+ u16 target, u16 lun)
100
+ {
101
+ memset(vlun, 0, sizeof(*vlun));
102
+ vlun->drive.type = DTYPE_VIRTIO_SCSI;
103
+ vlun->drive.cntl_id = pci->bdf;
104
+ vlun->pci = pci;
105
+ vlun->vp = vp;
106
+ vlun->vq = vq;
107
+ vlun->target = target;
108
+ vlun->lun = lun;
109
+ }
110
+
111
+ static int
112
+ virtio_scsi_add_lun(u32 lun, struct drive_s *tmpl_drv)
113
+ {
114
+ struct virtio_lun_s *tmpl_vlun =
115
+ container_of(tmpl_drv, struct virtio_lun_s, drive);
116
+ struct virtio_lun_s *vlun = malloc_low(sizeof(*vlun));
117
+ if (!vlun) {
118
+ warn_noalloc();
119
+ return -1;
120
+ }
121
+ virtio_scsi_init_lun(vlun, tmpl_vlun->pci, tmpl_vlun->vp, tmpl_vlun->vq,
122
+ tmpl_vlun->target, lun);
123
+
124
+ int prio = bootprio_find_scsi_device(vlun->pci, vlun->target, vlun->lun);
125
+ int ret = scsi_drive_setup(&vlun->drive, "virtio-scsi", prio);
126
+ if (ret)
127
+ goto fail;
128
+ return 0;
129
+
130
+ fail:
131
+ free(vlun);
132
+ return -1;
133
+ }
134
+
135
+ static int
136
+ virtio_scsi_scan_target(struct pci_device *pci, struct vp_device *vp,
137
+ struct vring_virtqueue *vq, u16 target)
138
+ {
139
+
140
+ struct virtio_lun_s vlun0;
141
+
142
+ virtio_scsi_init_lun(&vlun0, pci, vp, vq, target, 0);
143
+
144
+ int ret = scsi_rep_luns_scan(&vlun0.drive, virtio_scsi_add_lun);
145
+ return ret < 0 ? 0 : ret;
146
+ }
147
+
148
+ static void
149
+ init_virtio_scsi(void *data)
150
+ {
151
+ struct pci_device *pci = data;
152
+ dprintf(1, "found virtio-scsi at %pP\n", pci);
153
+ struct vring_virtqueue *vq = NULL;
154
+ struct vp_device *vp = malloc_high(sizeof(*vp));
155
+ if (!vp) {
156
+ warn_noalloc();
157
+ return;
158
+ }
159
+ vp_init_simple(vp, pci);
160
+ u8 status = VIRTIO_CONFIG_S_ACKNOWLEDGE | VIRTIO_CONFIG_S_DRIVER;
161
+
162
+ if (vp->use_modern) {
163
+ u64 features = vp_get_features(vp);
164
+ u64 version1 = 1ull << VIRTIO_F_VERSION_1;
165
+ u64 iommu_platform = 1ull << VIRTIO_F_IOMMU_PLATFORM;
166
+ if (!(features & version1)) {
167
+ dprintf(1, "modern device without virtio_1 feature bit: %pP\n", pci);
168
+ goto fail;
169
+ }
170
+
171
+ vp_set_features(vp, features & (version1 | iommu_platform));
172
+ status |= VIRTIO_CONFIG_S_FEATURES_OK;
173
+ vp_set_status(vp, status);
174
+ if (!(vp_get_status(vp) & VIRTIO_CONFIG_S_FEATURES_OK)) {
175
+ dprintf(1, "device didn't accept features: %pP\n", pci);
176
+ goto fail;
177
+ }
178
+ }
179
+
180
+ if (vp_find_vq(vp, 2, &vq) < 0 ) {
181
+ dprintf(1, "fail to find vq for virtio-scsi %pP\n", pci);
182
+ goto fail;
183
+ }
184
+
185
+ status |= VIRTIO_CONFIG_S_DRIVER_OK;
186
+ vp_set_status(vp, status);
187
+
188
+ int i, tot;
189
+ for (tot = 0, i = 0; i < 256; i++)
190
+ tot += virtio_scsi_scan_target(pci, vp, vq, i);
191
+
192
+ if (!tot)
193
+ goto fail;
194
+
195
+ return;
196
+
197
+ fail:
198
+ vp_reset(vp);
199
+ free(vp);
200
+ free(vq);
201
+ }
202
+
203
+ void
204
+ virtio_scsi_setup(void)
205
+ {
206
+ ASSERT32FLAT();
207
+ if (! CONFIG_VIRTIO_SCSI)
208
+ return;
209
+
210
+ dprintf(3, "init virtio-scsi\n");
211
+
212
+ struct pci_device *pci;
213
+ foreachpci(pci) {
214
+ if (pci->vendor != PCI_VENDOR_ID_REDHAT_QUMRANET ||
215
+ (pci->device != PCI_DEVICE_ID_VIRTIO_SCSI_09 &&
216
+ pci->device != PCI_DEVICE_ID_VIRTIO_SCSI_10))
217
+ continue;
218
+ run_thread(init_virtio_scsi, pci);
219
+ }
220
+ }
@@ -0,0 +1,47 @@
1
+ #ifndef _VIRTIO_SCSI_H
2
+ #define _VIRTIO_SCSI_H
3
+
4
+ #define VIRTIO_SCSI_CDB_SIZE 32
5
+ #define VIRTIO_SCSI_SENSE_SIZE 96
6
+
7
+ struct virtio_scsi_config
8
+ {
9
+ u32 num_queues;
10
+ u32 seg_max;
11
+ u32 max_sectors;
12
+ u32 cmd_per_lun;
13
+ u32 event_info_size;
14
+ u32 sense_size;
15
+ u32 cdb_size;
16
+ u16 max_channel;
17
+ u16 max_target;
18
+ u32 max_lun;
19
+ } __attribute__((packed));
20
+
21
+ /* This is the first element of the "out" scatter-gather list. */
22
+ struct virtio_scsi_req_cmd {
23
+ u8 lun[8];
24
+ u64 id;
25
+ u8 task_attr;
26
+ u8 prio;
27
+ u8 crn;
28
+ char cdb[VIRTIO_SCSI_CDB_SIZE];
29
+ } __attribute__((packed));
30
+
31
+ /* This is the first element of the "in" scatter-gather list. */
32
+ struct virtio_scsi_resp_cmd {
33
+ u32 sense_len;
34
+ u32 residual;
35
+ u16 status_qualifier;
36
+ u8 status;
37
+ u8 response;
38
+ u8 sense[VIRTIO_SCSI_SENSE_SIZE];
39
+ } __attribute__((packed));
40
+
41
+ #define VIRTIO_SCSI_S_OK 0
42
+
43
+ struct disk_op_s;
44
+ int virtio_scsi_process_op(struct disk_op_s *op);
45
+ void virtio_scsi_setup(void);
46
+
47
+ #endif /* _VIRTIO_SCSI_H */