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,323 @@
1
+ #ifndef __ACPI_H
2
+ #define __ACPI_H
3
+
4
+ #include "types.h" // u32
5
+
6
+ /*
7
+ * ACPI 2.0 Generic Address Space definition.
8
+ */
9
+ struct acpi_20_generic_address {
10
+ u8 address_space_id;
11
+ u8 register_bit_width;
12
+ u8 register_bit_offset;
13
+ u8 reserved;
14
+ u64 address;
15
+ } PACKED;
16
+
17
+ #define RSDP_SIGNATURE 0x2052545020445352LL // "RSD PTR "
18
+
19
+ struct rsdp_descriptor { /* Root System Descriptor Pointer */
20
+ u64 signature; /* ACPI signature, contains "RSD PTR " */
21
+ u8 checksum; /* To make sum of struct == 0 */
22
+ u8 oem_id [6]; /* OEM identification */
23
+ u8 revision; /* Must be 0 for 1.0, 2 for 2.0 */
24
+ u32 rsdt_physical_address; /* 32-bit physical address of RSDT */
25
+ u32 length; /* XSDT Length in bytes including hdr */
26
+ u64 xsdt_physical_address; /* 64-bit physical address of XSDT */
27
+ u8 extended_checksum; /* Checksum of entire table */
28
+ u8 reserved [3]; /* Reserved field must be 0 */
29
+ };
30
+
31
+ /* Table structure from Linux kernel (the ACPI tables are under the
32
+ BSD license) */
33
+
34
+ #define ACPI_TABLE_HEADER_DEF /* ACPI common table header */ \
35
+ u32 signature; /* ACPI signature (4 ASCII characters) */ \
36
+ u32 length; /* Length of table, in bytes, including header */ \
37
+ u8 revision; /* ACPI Specification minor version # */ \
38
+ u8 checksum; /* To make sum of entire table == 0 */ \
39
+ u8 oem_id [6]; /* OEM identification */ \
40
+ u8 oem_table_id [8]; /* OEM table identification */ \
41
+ u32 oem_revision; /* OEM revision number */ \
42
+ u8 asl_compiler_id [4]; /* ASL compiler vendor ID */ \
43
+ u32 asl_compiler_revision; /* ASL compiler revision number */
44
+
45
+ /*
46
+ * Fixed ACPI Description Table Fixed Feature Flags
47
+ */
48
+ #define ACPI_FADT_F_WBINVD (1 << 0)
49
+ #define ACPI_FADT_F_WBINVD_FLUSH (1 << 1)
50
+ #define ACPI_FADT_F_PROC_C1 (1 << 2)
51
+ #define ACPI_FADT_F_P_LVL2_UP (1 << 3)
52
+ #define ACPI_FADT_F_PWR_BUTTON (1 << 4)
53
+ #define ACPI_FADT_F_SLP_BUTTON (1 << 5)
54
+ #define ACPI_FADT_F_FIX_RTC (1 << 6)
55
+ #define ACPI_FADT_F_RTC_S4 (1 << 7)
56
+ #define ACPI_FADT_F_TMR_VAL_EXT (1 << 8)
57
+ #define ACPI_FADT_F_DCK_CAP (1 << 9)
58
+ #define ACPI_FADT_F_RESET_REG_SUP (1 << 10)
59
+ #define ACPI_FADT_F_SEALED_CASE (1 << 11)
60
+ #define ACPI_FADT_F_HEADLESS (1 << 12)
61
+ #define ACPI_FADT_F_CPU_SW_SLP (1 << 13)
62
+ #define ACPI_FADT_F_PCI_EXP_WAK (1 << 14)
63
+ #define ACPI_FADT_F_USE_PLATFORM_CLOCK (1 << 15)
64
+ #define ACPI_FADT_F_S4_RTC_STS_VALID (1 << 16)
65
+ #define ACPI_FADT_F_REMOTE_POWER_ON_CAPABLE (1 << 17)
66
+ #define ACPI_FADT_F_FORCE_APIC_CLUSTER_MODEL (1 << 18)
67
+ #define ACPI_FADT_F_FORCE_APIC_PHYSICAL_DESTINATION_MODE (1 << 19)
68
+ #define ACPI_FADT_F_HW_REDUCED_ACPI (1 << 20)
69
+ #define ACPI_FADT_F_LOW_POWER_S0_IDLE_CAPABLE (1 << 21)
70
+
71
+ /*
72
+ * ACPI 1.0 Fixed ACPI Description Table (FADT)
73
+ */
74
+ #define FACP_SIGNATURE 0x50434146 // FACP
75
+ struct fadt_descriptor_rev1
76
+ {
77
+ ACPI_TABLE_HEADER_DEF /* ACPI common table header */
78
+ u32 firmware_ctrl; /* Physical address of FACS */
79
+ u32 dsdt; /* Physical address of DSDT */
80
+ u8 model; /* System Interrupt Model */
81
+ u8 reserved1; /* Reserved */
82
+ u16 sci_int; /* System vector of SCI interrupt */
83
+ u32 smi_cmd; /* Port address of SMI command port */
84
+ u8 acpi_enable; /* Value to write to smi_cmd to enable ACPI */
85
+ u8 acpi_disable; /* Value to write to smi_cmd to disable ACPI */
86
+ u8 S4bios_req; /* Value to write to SMI CMD to enter S4BIOS state */
87
+ u8 reserved2; /* Reserved - must be zero */
88
+ u32 pm1a_evt_blk; /* Port address of Power Mgt 1a acpi_event Reg Blk */
89
+ u32 pm1b_evt_blk; /* Port address of Power Mgt 1b acpi_event Reg Blk */
90
+ u32 pm1a_cnt_blk; /* Port address of Power Mgt 1a Control Reg Blk */
91
+ u32 pm1b_cnt_blk; /* Port address of Power Mgt 1b Control Reg Blk */
92
+ u32 pm2_cnt_blk; /* Port address of Power Mgt 2 Control Reg Blk */
93
+ u32 pm_tmr_blk; /* Port address of Power Mgt Timer Ctrl Reg Blk */
94
+ u32 gpe0_blk; /* Port addr of General Purpose acpi_event 0 Reg Blk */
95
+ u32 gpe1_blk; /* Port addr of General Purpose acpi_event 1 Reg Blk */
96
+ u8 pm1_evt_len; /* Byte length of ports at pm1_x_evt_blk */
97
+ u8 pm1_cnt_len; /* Byte length of ports at pm1_x_cnt_blk */
98
+ u8 pm2_cnt_len; /* Byte Length of ports at pm2_cnt_blk */
99
+ u8 pm_tmr_len; /* Byte Length of ports at pm_tm_blk */
100
+ u8 gpe0_blk_len; /* Byte Length of ports at gpe0_blk */
101
+ u8 gpe1_blk_len; /* Byte Length of ports at gpe1_blk */
102
+ u8 gpe1_base; /* Offset in gpe model where gpe1 events start */
103
+ u8 reserved3; /* Reserved */
104
+ u16 plvl2_lat; /* Worst case HW latency to enter/exit C2 state */
105
+ u16 plvl3_lat; /* Worst case HW latency to enter/exit C3 state */
106
+ u16 flush_size; /* Size of area read to flush caches */
107
+ u16 flush_stride; /* Stride used in flushing caches */
108
+ u8 duty_offset; /* Bit location of duty cycle field in p_cnt reg */
109
+ u8 duty_width; /* Bit width of duty cycle field in p_cnt reg */
110
+ u8 day_alrm; /* Index to day-of-month alarm in RTC CMOS RAM */
111
+ u8 mon_alrm; /* Index to month-of-year alarm in RTC CMOS RAM */
112
+ u8 century; /* Index to century in RTC CMOS RAM */
113
+ u8 reserved4; /* Reserved */
114
+ u8 reserved4a; /* Reserved */
115
+ u8 reserved4b; /* Reserved */
116
+ u32 flags;
117
+ } PACKED;
118
+
119
+ struct acpi_table_header /* ACPI common table header */
120
+ {
121
+ ACPI_TABLE_HEADER_DEF
122
+ } PACKED;
123
+
124
+ /*
125
+ * ACPI 1.0 Root System Description Table (RSDT)
126
+ */
127
+ #define RSDT_SIGNATURE 0x54445352 // RSDT
128
+ struct rsdt_descriptor_rev1
129
+ {
130
+ ACPI_TABLE_HEADER_DEF /* ACPI common table header */
131
+ u32 table_offset_entry[0]; /* Array of pointers to other */
132
+ /* ACPI tables */
133
+ } PACKED;
134
+
135
+ /*
136
+ * ACPI 1.0 Firmware ACPI Control Structure (FACS)
137
+ */
138
+ #define FACS_SIGNATURE 0x53434146 // FACS
139
+ struct facs_descriptor_rev1
140
+ {
141
+ u32 signature; /* ACPI Signature */
142
+ u32 length; /* Length of structure, in bytes */
143
+ u32 hardware_signature; /* Hardware configuration signature */
144
+ u32 firmware_waking_vector; /* ACPI OS waking vector */
145
+ u32 global_lock; /* Global Lock */
146
+ u32 flags;
147
+ u8 resverved3 [40]; /* Reserved - must be zero */
148
+ } PACKED;
149
+
150
+ /*
151
+ * Differentiated System Description Table (DSDT)
152
+ */
153
+ #define DSDT_SIGNATURE 0x54445344 // DSDT
154
+
155
+ /*
156
+ * MADT values and structures
157
+ */
158
+
159
+ /* Values for MADT PCATCompat */
160
+
161
+ #define DUAL_PIC 0
162
+ #define MULTIPLE_APIC 1
163
+
164
+ /* Master MADT */
165
+
166
+ #define APIC_SIGNATURE 0x43495041 // APIC
167
+ struct multiple_apic_table
168
+ {
169
+ ACPI_TABLE_HEADER_DEF /* ACPI common table header */
170
+ u32 local_apic_address; /* Physical address of local APIC */
171
+ u32 flags;
172
+ } PACKED;
173
+
174
+ /* Values for Type in APIC sub-headers */
175
+
176
+ #define APIC_PROCESSOR 0
177
+ #define APIC_IO 1
178
+ #define APIC_XRUPT_OVERRIDE 2
179
+ #define APIC_NMI 3
180
+ #define APIC_LOCAL_NMI 4
181
+ #define APIC_ADDRESS_OVERRIDE 5
182
+ #define APIC_IO_SAPIC 6
183
+ #define APIC_LOCAL_SAPIC 7
184
+ #define APIC_XRUPT_SOURCE 8
185
+ #define APIC_RESERVED 9 /* 9 and greater are reserved */
186
+
187
+ /*
188
+ * MADT sub-structures (Follow MULTIPLE_APIC_DESCRIPTION_TABLE)
189
+ */
190
+ #define ACPI_SUB_HEADER_DEF /* Common ACPI sub-structure header */\
191
+ u8 type; \
192
+ u8 length;
193
+
194
+ /* Sub-structures for MADT */
195
+
196
+ struct madt_processor_apic
197
+ {
198
+ ACPI_SUB_HEADER_DEF
199
+ u8 processor_id; /* ACPI processor id */
200
+ u8 local_apic_id; /* Processor's local APIC id */
201
+ u32 flags;
202
+ } PACKED;
203
+
204
+ struct madt_io_apic
205
+ {
206
+ ACPI_SUB_HEADER_DEF
207
+ u8 io_apic_id; /* I/O APIC ID */
208
+ u8 reserved; /* Reserved - must be zero */
209
+ u32 address; /* APIC physical address */
210
+ u32 interrupt; /* Global system interrupt where INTI
211
+ * lines start */
212
+ } PACKED;
213
+
214
+ struct madt_intsrcovr {
215
+ ACPI_SUB_HEADER_DEF
216
+ u8 bus;
217
+ u8 source;
218
+ u32 gsi;
219
+ u16 flags;
220
+ } PACKED;
221
+
222
+ struct madt_local_nmi {
223
+ ACPI_SUB_HEADER_DEF
224
+ u8 processor_id; /* ACPI processor id */
225
+ u16 flags; /* MPS INTI flags */
226
+ u8 lint; /* Local APIC LINT# */
227
+ } PACKED;
228
+
229
+ /*
230
+ * HPET Description Table
231
+ */
232
+ #define HPET_SIGNATURE 0x54455048 // HPET
233
+ struct acpi_20_hpet {
234
+ ACPI_TABLE_HEADER_DEF /* ACPI common table header */
235
+ u32 timer_block_id;
236
+ struct acpi_20_generic_address addr;
237
+ u8 hpet_number;
238
+ u16 min_tick;
239
+ u8 page_protect;
240
+ } PACKED;
241
+
242
+ /*
243
+ * SRAT (NUMA topology description) table
244
+ */
245
+
246
+ #define SRAT_SIGNATURE 0x54415253 // SRAT
247
+ struct system_resource_affinity_table
248
+ {
249
+ ACPI_TABLE_HEADER_DEF
250
+ u32 reserved1;
251
+ u32 reserved2[2];
252
+ } PACKED;
253
+
254
+ #define SRAT_PROCESSOR 0
255
+ #define SRAT_MEMORY 1
256
+
257
+ struct srat_processor_affinity
258
+ {
259
+ ACPI_SUB_HEADER_DEF
260
+ u8 proximity_lo;
261
+ u8 local_apic_id;
262
+ u32 flags;
263
+ u8 local_sapic_eid;
264
+ u8 proximity_hi[3];
265
+ u32 reserved;
266
+ } PACKED;
267
+
268
+ struct srat_memory_affinity
269
+ {
270
+ ACPI_SUB_HEADER_DEF
271
+ u8 proximity[4];
272
+ u16 reserved1;
273
+ u64 base_addr;
274
+ u64 range_length;
275
+ u32 reserved2;
276
+ u32 flags;
277
+ u32 reserved3[2];
278
+ } PACKED;
279
+
280
+ /* PCI fw r3.0 MCFG table. */
281
+ /* Subtable */
282
+ struct acpi_mcfg_allocation {
283
+ u64 address; /* Base address, processor-relative */
284
+ u16 pci_segment; /* PCI segment group number */
285
+ u8 start_bus_number; /* Starting PCI Bus number */
286
+ u8 end_bus_number; /* Final PCI Bus number */
287
+ u32 reserved;
288
+ } PACKED;
289
+
290
+ #define MCFG_SIGNATURE 0x4746434d // MCFG
291
+ struct acpi_table_mcfg {
292
+ ACPI_TABLE_HEADER_DEF;
293
+ u8 reserved[8];
294
+ struct acpi_mcfg_allocation allocation[0];
295
+ } PACKED;
296
+
297
+ #define TCPA_SIGNATURE 0x41504354
298
+ struct tcpa_descriptor_rev2
299
+ {
300
+ ACPI_TABLE_HEADER_DEF
301
+ u16 platform_class;
302
+ u32 log_area_minimum_length;
303
+ u64 log_area_start_address;
304
+ } PACKED;
305
+
306
+ /* TCPA ACPI definitions */
307
+ #define TCPA_ACPI_CLASS_CLIENT 0
308
+ #define TCPA_ACPI_CLASS_SERVER 1
309
+
310
+ #define TPM2_SIGNATURE 0x324D5054
311
+ struct tpm2_descriptor_rev2
312
+ {
313
+ ACPI_TABLE_HEADER_DEF
314
+ u16 platform_class;
315
+ u16 reserved;
316
+ u64 address_of_control_area;
317
+ u32 start_method;
318
+ u8 start_method_params[12];
319
+ u32 log_area_minimum_length;
320
+ u64 log_area_start_address;
321
+ } PACKED;
322
+
323
+ #endif // acpi.h
@@ -0,0 +1,174 @@
1
+ // BIOS Data Area (and similar) definitions
2
+ #ifndef __BDA_H
3
+ #define __BDA_H
4
+
5
+ #include "disk.h" // struct fdpt_s
6
+ #include "types.h" // u8
7
+
8
+
9
+ /****************************************************************
10
+ * Interrupt vector table
11
+ ****************************************************************/
12
+
13
+ struct rmode_IVT {
14
+ struct segoff_s ivec[256];
15
+ };
16
+
17
+
18
+ /****************************************************************
19
+ * Bios Data Area (BDA)
20
+ ****************************************************************/
21
+
22
+ struct bios_data_area_s {
23
+ // 40:00
24
+ u16 port_com[4];
25
+ u16 port_lpt[3];
26
+ u16 ebda_seg;
27
+ // 40:10
28
+ u16 equipment_list_flags;
29
+ u8 pad1;
30
+ u16 mem_size_kb;
31
+ u8 pad2;
32
+ u8 ps2_ctrl_flag;
33
+ u16 kbd_flag0;
34
+ u8 alt_keypad;
35
+ u16 kbd_buf_head;
36
+ u16 kbd_buf_tail;
37
+ // 40:1e
38
+ u8 kbd_buf[32];
39
+ u8 floppy_recalibration_status;
40
+ u8 floppy_motor_status;
41
+ // 40:40
42
+ u8 floppy_motor_counter;
43
+ u8 floppy_last_status;
44
+ u8 floppy_return_status[7];
45
+ u8 video_mode;
46
+ u16 video_cols;
47
+ u16 video_pagesize;
48
+ u16 video_pagestart;
49
+ // 40:50
50
+ u16 cursor_pos[8];
51
+ // 40:60
52
+ u16 cursor_type;
53
+ u8 video_page;
54
+ u16 crtc_address;
55
+ u8 video_msr;
56
+ u8 video_pal;
57
+ struct segoff_s jump;
58
+ u8 other_6b;
59
+ u32 timer_counter;
60
+ // 40:70
61
+ u8 timer_rollover;
62
+ u8 break_flag;
63
+ u16 soft_reset_flag;
64
+ u8 disk_last_status;
65
+ u8 hdcount;
66
+ u8 disk_control_byte;
67
+ u8 port_disk;
68
+ u8 lpt_timeout[4];
69
+ u8 com_timeout[4];
70
+ // 40:80
71
+ u16 kbd_buf_start_offset;
72
+ u16 kbd_buf_end_offset;
73
+ u8 video_rows;
74
+ u16 char_height;
75
+ u8 video_ctl;
76
+ u8 video_switches;
77
+ u8 modeset_ctl;
78
+ u8 dcc_index;
79
+ u8 floppy_last_data_rate;
80
+ u8 disk_status_controller;
81
+ u8 disk_error_controller;
82
+ u8 disk_interrupt_flag;
83
+ u8 floppy_harddisk_info;
84
+ // 40:90
85
+ u8 floppy_media_state[4];
86
+ u8 floppy_track[2];
87
+ u8 kbd_flag1;
88
+ u8 kbd_led;
89
+ struct segoff_s user_wait_complete_flag;
90
+ u32 user_wait_timeout;
91
+ // 40:A0
92
+ u8 rtc_wait_flag;
93
+ u8 other_a1[7];
94
+ struct segoff_s video_savetable;
95
+ u8 other_ac[4];
96
+ // 40:B0
97
+ u8 other_b0[5*16];
98
+ } PACKED;
99
+
100
+ // BDA floppy_recalibration_status bitdefs
101
+ #define FRS_IRQ (1<<7)
102
+
103
+ // BDA rtc_wait_flag bitdefs
104
+ #define RWS_WAIT_PENDING (1<<0)
105
+ #define RWS_WAIT_ELAPSED (1<<7)
106
+
107
+ // BDA floppy_media_state bitdefs
108
+ #define FMS_DRIVE_STATE_MASK (0x07)
109
+ #define FMS_MEDIA_DRIVE_ESTABLISHED (1<<4)
110
+ #define FMS_DOUBLE_STEPPING (1<<5)
111
+ #define FMS_DATA_RATE_MASK (0xc0)
112
+
113
+ // BDA kbd_flag[01] bitdefs
114
+ #define KF0_RSHIFT (1<<0)
115
+ #define KF0_LSHIFT (1<<1)
116
+ #define KF0_CTRLACTIVE (1<<2)
117
+ #define KF0_ALTACTIVE (1<<3)
118
+ #define KF0_SCROLLACTIVE (1<<4)
119
+ #define KF0_NUMACTIVE (1<<5)
120
+ #define KF0_CAPSACTIVE (1<<6)
121
+ #define KF0_LCTRL (1<<8)
122
+ #define KF0_LALT (1<<9)
123
+ #define KF0_PAUSEACTIVE (1<<11)
124
+ #define KF0_SCROLL (1<<12)
125
+ #define KF0_NUM (1<<13)
126
+ #define KF0_CAPS (1<<14)
127
+
128
+ #define KF1_LAST_E1 (1<<0)
129
+ #define KF1_LAST_E0 (1<<1)
130
+ #define KF1_RCTRL (1<<2)
131
+ #define KF1_RALT (1<<3)
132
+ #define KF1_101KBD (1<<4)
133
+
134
+ // Limit of BDA timer_counter field
135
+ #define TICKS_PER_DAY 1573040
136
+
137
+
138
+ /****************************************************************
139
+ * Extended Bios Data Area (EBDA)
140
+ ****************************************************************/
141
+
142
+ struct extended_bios_data_area_s {
143
+ u8 size;
144
+ u8 reserved1[0x21];
145
+ struct segoff_s far_call_pointer;
146
+ u8 mouse_flag1;
147
+ u8 mouse_flag2;
148
+ u8 mouse_data[0x08];
149
+ // 0x30
150
+ u8 other1[0x0d];
151
+
152
+ // 0x3d
153
+ struct fdpt_s fdpt[2];
154
+
155
+ // 0x5d
156
+ u8 other2[0xC4];
157
+
158
+ // 0x121 - Begin custom storage.
159
+ } PACKED;
160
+
161
+
162
+ /****************************************************************
163
+ * Bios Config Table
164
+ ****************************************************************/
165
+
166
+ struct bios_config_table_s {
167
+ u16 size;
168
+ u8 model;
169
+ u8 submodel;
170
+ u8 biosrev;
171
+ u8 feature1, feature2, feature3, feature4, feature5;
172
+ } PACKED;
173
+
174
+ #endif // bda.h
@@ -0,0 +1,175 @@
1
+ // Standard disk BIOS definitions.
2
+ #ifndef __DISK_H
3
+ #define __DISK_H
4
+
5
+ #include "types.h" // u8
6
+
7
+ #define DISK_RET_SUCCESS 0x00
8
+ #define DISK_RET_EPARAM 0x01
9
+ #define DISK_RET_EADDRNOTFOUND 0x02
10
+ #define DISK_RET_EWRITEPROTECT 0x03
11
+ #define DISK_RET_ECHANGED 0x06
12
+ #define DISK_RET_EBOUNDARY 0x09
13
+ #define DISK_RET_EBADTRACK 0x0c
14
+ #define DISK_RET_ECONTROLLER 0x20
15
+ #define DISK_RET_ETIMEOUT 0x80
16
+ #define DISK_RET_ENOTLOCKED 0xb0
17
+ #define DISK_RET_ELOCKED 0xb1
18
+ #define DISK_RET_ENOTREMOVABLE 0xb2
19
+ #define DISK_RET_ETOOMANYLOCKS 0xb4
20
+ #define DISK_RET_EMEDIA 0xC0
21
+ #define DISK_RET_ENOTREADY 0xAA
22
+
23
+
24
+ /****************************************************************
25
+ * Interface structs
26
+ ****************************************************************/
27
+
28
+ // Bios disk structures.
29
+ struct int13ext_s {
30
+ u8 size;
31
+ u8 reserved;
32
+ u16 count;
33
+ struct segoff_s data;
34
+ u64 lba;
35
+ } PACKED;
36
+
37
+ // DPTE definition
38
+ struct dpte_s {
39
+ u16 iobase1;
40
+ u16 iobase2;
41
+ u8 prefix;
42
+ u8 unused;
43
+ u8 irq;
44
+ u8 blkcount;
45
+ u8 dma;
46
+ u8 pio;
47
+ u16 options;
48
+ u16 reserved;
49
+ u8 revision;
50
+ u8 checksum;
51
+ };
52
+
53
+ // Disk Physical Table definition
54
+ struct int13dpt_s {
55
+ u16 size;
56
+ u16 infos;
57
+ u32 cylinders;
58
+ u32 heads;
59
+ u32 spt;
60
+ u64 sector_count;
61
+ u16 blksize;
62
+ struct segoff_s dpte;
63
+ u16 key;
64
+ u8 dpi_length;
65
+ u8 reserved1;
66
+ u16 reserved2;
67
+ u8 host_bus[4];
68
+ u8 iface_type[8];
69
+ u64 iface_path;
70
+ union {
71
+ struct {
72
+ u64 device_path;
73
+ u8 reserved3;
74
+ u8 checksum;
75
+ } phoenix;
76
+ struct {
77
+ u64 device_path[2];
78
+ u8 reserved3;
79
+ u8 checksum;
80
+ } t13;
81
+ };
82
+ } PACKED;
83
+
84
+ // Floppy info
85
+ struct fdpt_s {
86
+ u16 cylinders;
87
+ u8 heads;
88
+ u8 a0h_signature;
89
+ u8 phys_sectors;
90
+ u16 precompensation;
91
+ u8 reserved;
92
+ u8 drive_control_byte;
93
+ u16 phys_cylinders;
94
+ u8 phys_heads;
95
+ u16 landing_zone;
96
+ u8 sectors;
97
+ u8 checksum;
98
+ } PACKED;
99
+
100
+ // Floppy "Disk Base Table"
101
+ struct floppy_dbt_s {
102
+ u8 specify1;
103
+ u8 specify2;
104
+ u8 shutoff_ticks;
105
+ u8 bps_code;
106
+ u8 sectors;
107
+ u8 interblock_len;
108
+ u8 data_len;
109
+ u8 gap_len;
110
+ u8 fill_byte;
111
+ u8 settle_time;
112
+ u8 startup_time;
113
+ } PACKED;
114
+
115
+ struct floppy_ext_dbt_s {
116
+ struct floppy_dbt_s dbt;
117
+ // Extra fields
118
+ u8 max_track;
119
+ u8 data_rate;
120
+ u8 drive_type;
121
+ } PACKED;
122
+
123
+
124
+ /****************************************************************
125
+ * Master boot record
126
+ ****************************************************************/
127
+
128
+ struct packed_chs_s {
129
+ u8 heads;
130
+ u8 sptcyl;
131
+ u8 cyllow;
132
+ } PACKED;
133
+
134
+ struct partition_s {
135
+ u8 status;
136
+ struct packed_chs_s first;
137
+ u8 type;
138
+ struct packed_chs_s last;
139
+ u32 lba;
140
+ u32 count;
141
+ } PACKED;
142
+
143
+ struct mbr_s {
144
+ u8 code[440];
145
+ // 0x01b8
146
+ u32 diskseg;
147
+ // 0x01bc
148
+ u16 null;
149
+ // 0x01be
150
+ struct partition_s partitions[4];
151
+ // 0x01fe
152
+ u16 signature;
153
+ } PACKED;
154
+
155
+ #define MBR_SIGNATURE 0xaa55
156
+
157
+
158
+ /****************************************************************
159
+ * ElTorito CDROM interface
160
+ ****************************************************************/
161
+
162
+ struct eltorito_s {
163
+ u8 size;
164
+ u8 media;
165
+ u8 emulated_drive;
166
+ u8 controller_index;
167
+ u32 ilba;
168
+ u16 device_spec;
169
+ u16 buffer_segment;
170
+ u16 load_segment;
171
+ u16 sector_count;
172
+ struct packed_chs_s chs;
173
+ } PACKED;
174
+
175
+ #endif // disk.h