- Timestamp:
- Jul 20, 2023 7:43:52 AM (19 months ago)
- svn:sync-xref-src-repo-rev:
- 158496
- Location:
- trunk/src
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Config.kmk
r98410 r100658 58 58 # 59 59 # Disabled linker warnings: 60 # W1014: ?61 # W1023: ?62 # W2120: ?60 # W1014: stack segment not found 61 # W1023: no starting address found, using xxx 62 # W2120: application too large to run under DOS 63 63 # W1080: file F:\tinderbox\win-rel\out\win.amd64\release\obj\VBoxVgaBios386\vberom.obj is a 32-bit object file 64 64 TEMPLATE_VBoxBios = ROM … … 85 85 $(QUIET)$(SED_EXT) -n -f $(VBOX_PATH_DEVICES_SRC)/BiosCommonCode/biosorg_check.sed $(outbase).map \ 86 86 && $(MV_EXT) -f $(out) $(out).tmp \ 87 && $(VBOX_BIOSSUMS) $(out).tmp $(out) \87 && $(VBOX_BIOSSUMS) -s $(out).tmp $(out) \ 88 88 && $(RM_EXT) -f $(out).tmp 89 89 -
trunk/src/VBox/Devices/PC/BIOS/Makefile.kmk
r98410 r100658 35 35 # VBoxPcBios - The PC BIOS. 36 36 # 37 MISCBINS += VBoxPcBios386 38 VBoxPcBios386_TEMPLATE = VBoxBios39 VBoxPcBios 386_BLD_TYPE = release40 VBoxPcBios 386_CFLAGS = -341 VBoxPcBios 386_DEFS = \37 38 # Generic flags/modules for 8088/286/386 variants 39 VBoxPcBiosAll_TEMPLATE = VBoxBios 40 VBoxPcBiosAll_BLD_TYPE = release 41 VBoxPcBiosAll_DEFS = \ 42 42 VBOX_PC_BIOS \ 43 VBOX_LANBOOT_SEG=0xE200 \ 44 VBOX_WITH_SCSI \ 45 VBOX_WITH_AHCI \ 46 VBOX_WITH_VIRTIO_SCSI \ 47 VBOX_BIOS_CPU=80386 48 #VBoxPcBios386_DEFS.debug = DEBUG_ATA DEBUG_POST DEBUG_INT13 49 VBoxPcBios386_LDFLAGS = \ 43 VBOX_LANBOOT_SEG=0xE200 44 #VBoxPcBiosAll_DEFS.debug = DEBUG_ATA DEBUG_POST DEBUG_INT13 45 VBoxPcBiosAll_LDFLAGS = \ 50 46 output raw offset=0xF0000 \ 51 47 order \ … … 56 52 segment BIOS32 segaddr=0xF000 offset=0xDA00 \ 57 53 segment BIOSSEG segaddr=0xF000 offset=0xE000 58 VBoxPcBios 386_SOURCES = \54 VBoxPcBiosAll_SOURCES = \ 59 55 post.c \ 60 56 bios.c \ … … 74 70 parallel.c \ 75 71 logo.c \ 76 scsi.c \77 ahci.c \78 virtio.c \79 buslogic.c \80 lsilogic.c \81 72 apm.c \ 82 pcibios.c \83 pciutil.c \84 vds.c \85 73 ../../BiosCommonCode/__U4M.asm \ 86 74 ../../BiosCommonCode/__U4D.asm \ … … 89 77 ../../BiosCommonCode/fmemset.asm \ 90 78 ../../BiosCommonCode/fmemcpy.asm \ 91 pcibio32.asm \92 apm_pm.asm \93 $(VBoxPcBios32_0_OUTDIR)/VBoxPcBios32.lib \94 79 orgs.asm 95 80 … … 104 89 ../../BiosCommonCode/DoUInt32Div.c_CFLAGS = -mc # asm.h and uint32.h both require far data pointers by default. 105 90 91 MISCBINS += VBoxPcBios386 92 VBoxPcBios386_EXTENDS = VBoxPcBiosAll 93 VBoxPcBios386_CFLAGS = -3 94 VBoxPcBios386_BSFLAGS = -3 -p -s 95 VBoxPcBios386_DEFS = $(VBoxPcBiosAll_DEFS) VBOX_BIOS_CPU=80386 \ 96 VBOX_WITH_AHCI \ 97 VBOX_WITH_SCSI \ 98 VBOX_WITH_VIRTIO_SCSI 99 VBoxPcBios386_SOURCES = $(VBoxPcBiosAll_SOURCES) \ 100 pcibios.c \ 101 pciutil.c \ 102 ahci.c \ 103 scsi.c \ 104 buslogic.c \ 105 lsilogic.c \ 106 virtio.c \ 107 vds.c \ 108 apm_pm.asm \ 109 pcibio32.asm \ 110 $(VBoxPcBios32_0_OUTDIR)/VBoxPcBios32.lib 111 106 112 MISCBINS += VBoxPcBios286 107 VBoxPcBios286_EXTENDS = VBoxPcBios 386113 VBoxPcBios286_EXTENDS = VBoxPcBiosAll 108 114 VBoxPcBios286_CFLAGS = -2 109 VBoxPcBios286_DEFS = $(filter-out VBOX_BIOS_CPU=80386,$(VBoxPcBios386_DEFS)) VBOX_BIOS_CPU=80286 110 VBoxPcBios286_SOURCES = $(VBoxPcBios386_SOURCES) \ 115 VBoxPcBios286_DEFS = $(VBoxPcBiosAll_DEFS) VBOX_BIOS_CPU=80286 116 VBoxPcBios286_SOURCES = $(VBoxPcBiosAll_SOURCES) \ 117 apm_pm.asm \ 111 118 ../../BiosCommonCode/DoUInt32Div.c \ 112 119 ../../BiosCommonCode/ASMBitLastSetU16.asm 113 120 114 121 MISCBINS += VBoxPcBios8086 115 VBoxPcBios8086_EXTENDS = VBoxPcBios 386122 VBoxPcBios8086_EXTENDS = VBoxPcBiosAll 116 123 VBoxPcBios8086_CFLAGS = -0 117 VBoxPcBios8086_DEFS = $(filter-out VBOX_BIOS_CPU=80386,$(VBoxPcBios386_DEFS)) VBOX_BIOS_CPU=8086 118 VBoxPcBios8086_SOURCES = $(VBoxPcBios386_SOURCES) \ 124 VBoxPcBios8086_DEFS = $(VBoxPcBiosAll_DEFS) VBOX_BIOS_CPU=8086 125 VBoxPcBios8086_BSFLAGS = -3 -p -s 126 VBoxPcBios8086_SOURCES = $(VBoxPcBiosAll_SOURCES) \ 119 127 ../../BiosCommonCode/DoUInt32Div.c \ 120 128 ../../BiosCommonCode/ASMBitLastSetU16.asm -
trunk/src/VBox/Devices/PC/BIOS/apm_pm.asm
r100458 r100658 97 97 mov si, offset hlt_string 98 98 mov cx,8 99 .286 ; build fix; @todo remove100 99 rep outsb 101 100 -
trunk/src/VBox/Devices/PC/BIOS/ebda.h
r98103 r100658 86 86 #else 87 87 #define BX_MAX_SCSI_DEVICES 0 88 #define VBOX_IS_SCSI_DEVICE(device_id) (1 == 0) 88 89 #endif 89 90 -
trunk/src/VBox/Devices/PC/BIOS/invop.c
r98103 r100658 252 252 /* LOCK prefix - skip over it and try again. */ 253 253 ++ra.ip; 254 #if VBOX_BIOS_CPU >= 80386 254 255 } else if (*(uint16_t __far *)ins == 0x050F) { 255 256 /* 286 LOADALL. NB: Same opcode as SYSCALL. */ … … 351 352 ldal3_finish(); 352 353 #endif 354 #endif 353 355 } else { 354 356 /* There isn't much point in executing the invalid opcode handler -
trunk/src/VBox/Devices/PC/BIOS/orgs.asm
r98103 r100658 138 138 extrn _int19_function:near 139 139 extrn _int1a_function:near 140 extrn _pci16_function:near141 140 extrn _int70_function:near 142 141 extrn _int74_function:near 143 142 extrn _apm_function:near 144 143 extrn _ata_init:near 144 ifdef VBOX_WITH_SCSI 145 145 extrn _scsi_init:near 146 endif 146 147 extrn _ata_detect:near 147 148 extrn _cdemu_init:near 148 149 extrn _keyboard_init:near 149 150 extrn _print_bios_banner:near 150 extrn _inv_op_handler:near151 151 extrn rom_scan_:near 152 152 ifdef VBOX_WITH_AHCI … … 155 155 if VBOX_BIOS_CPU ge 80286 156 156 extrn _int15_blkmove:near 157 extrn _inv_op_handler:near 157 158 endif 158 159 if VBOX_BIOS_CPU ge 80386 159 160 extrn _int15_function32:near 160 161 extrn _apic_setup:near 162 extrn _pci16_function:near 161 163 endif 162 164 … … 470 472 ;; set up various service vectors 471 473 ;; TODO: This should use the table at FEF3h instead 474 if VBOX_BIOS_CPU ge 80286 472 475 SET_INT_VECTOR 06h, BIOSSEG, int06_handler 476 endif 473 477 SET_INT_VECTOR 11h, BIOSSEG, int11_handler 474 478 SET_INT_VECTOR 12h, BIOSSEG, int12_handler … … 1073 1077 1074 1078 1079 if VBOX_BIOS_CPU ge 80286 1080 1075 1081 ;; -------------------------------------------------------- 1076 1082 ;; INT 06h handler - Invalid Opcode Exception … … 1087 1093 DO_popa 1088 1094 iret 1095 1096 endif 1089 1097 1090 1098 ;; -------------------------------------------------------- … … 1200 1208 jb int13_notcdrom 1201 1209 1202 ;; ebx may be modified, save here1203 ;; TODO: check/review 32-bit register use1204 ;; @todo figure if 80286/8086 variant is applicable.1205 .3861206 shr ebx, 161207 push bx1208 1210 call _int13_cdrom 1209 pop bx1210 shl ebx, 161211 SET_DEFAULT_CPU_2861212 1211 jmp int13_out 1213 1212 … … 1709 1708 iret ; beam me up scotty 1710 1709 1710 if VBOX_BIOS_CPU ge 80386 1711 1711 1712 ;; PCI BIOS 1712 1713 1713 1714 include pcibios.inc 1714 1715 include pirq.inc 1716 1717 endif 1715 1718 1716 1719 if 0 ; Sample VPD table -
trunk/src/bldprogs/biossums.c
r98103 r100658 127 127 FILE *pIn, *pOut; 128 128 size_t cbIn, cbOut; 129 int fAdapterBios = 0; 129 int fAdapterBios = 0; 130 int fPIRQRequired = 0; 131 int fBIOS32Required = 0; 132 int fSMBIOSRequired = 0; 130 133 131 134 g_argv0 = argv[0]; 135 136 while ((argc > 1) && (argv[1][0] == '-')) 137 { 138 if (!strcmp(argv[1], "-3")) 139 fBIOS32Required = 1; 140 else if (!strcmp(argv[1], "-p")) 141 fPIRQRequired = 1; 142 else if (!strcmp(argv[1], "-s")) 143 fSMBIOSRequired = 1; 144 else 145 return fatal("Invalid parameter: %s\n", argv[1]); 146 147 argc--; 148 argv++; 149 } 132 150 133 151 if (argc != 3) … … 179 197 { 180 198 case 0: 181 return fatal("No BIOS32 header not found!\n"); 199 if (fBIOS32Required) 200 return fatal("No BIOS32 header found!\n"); 201 else 202 break; 182 203 case 2: 183 204 return fatal("More than one BIOS32 header found!\n"); … … 194 215 { 195 216 case 0: 196 return fatal("No PCI IRQ routing table found!\n"); 217 if (fPIRQRequired) 218 return fatal("No PCI IRQ routing table found!\n"); 219 else 220 break; 197 221 case 2: 198 222 return fatal("More than one PCI IRQ routing table found!\n"); … … 209 233 { 210 234 case 0: 211 return fatal("No SMBIOS header found!\n"); 235 if (fBIOS32Required) 236 return fatal("No SMBIOS header found!\n"); 237 else 238 break; 212 239 case 2: 213 240 return fatal("More than one SMBIOS header found!\n");
Note:
See TracChangeset
for help on using the changeset viewer.