Changeset 12239 in vbox for trunk/src/VBox/Devices/PC/BIOS/rombios.c
- Timestamp:
- Sep 8, 2008 5:02:19 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/PC/BIOS/rombios.c
r12233 r12239 4559 4559 write_word(ES, DI, start); 4560 4560 write_word(ES, DI+2, start >> 16); 4561 write_word(ES, DI+4, 0x00); 4561 write_word(ES, DI+4, 0x00); /** @todo r=bird: why write it twice? */ 4562 4562 write_word(ES, DI+4, extra_start); 4563 4563 write_word(ES, DI+6, 0x00); … … 4571 4571 write_word(ES, DI+12, 0x0001); 4572 4572 else 4573 / / XXX: nike - is it really correct? see QEMU BIOS patch4573 /** @todo XXX: nike - is it really correct? see QEMU BIOS patch */ 4574 4574 write_word(ES, DI+12, extra_end); 4575 4575 #else /* !VBOX */ … … 4588 4588 { 4589 4589 Bit32u extended_memory_size=0; // 64bits long 4590 #if 0 /* bird: later */ 4590 4591 Bit32u extra_lowbits_memory_size=0; 4592 #endif 4591 4593 Bit16u CX,DX; 4594 #if 0 /* bird: later */ 4592 4595 Bit8u extra_highbits_memory_size=0; 4596 #endif 4593 4597 4594 4598 BX_DEBUG_INT15("int15 AX=%04x\n",regs.u.r16.ax); … … 4664 4668 } 4665 4669 4670 #if 0 /* bird: later (btw. this ain't making sense complixity wise, unless its a AMI/AWARD/PHOENIX interface) */ 4666 4671 extra_lowbits_memory_size = inb_cmos(0x61); 4667 4672 extra_lowbits_memory_size <<= 8; … … 4670 4675 extra_lowbits_memory_size *= 1024; 4671 4676 extra_highbits_memory_size = inb_cmos(0x63); 4677 #endif 4672 4678 4673 4679 switch(regs.u.r16.bx) … … 4716 4722 set_e820_range(ES, regs.u.r16.di, 4717 4723 0x00100000L, 4718 extended_memory_size - ACPI_DATA_SIZE ,0, 0, 1);4724 extended_memory_size - ACPI_DATA_SIZE, 0, 0, 1); 4719 4725 regs.u.r32.ebx = 4; 4720 4726 regs.u.r32.eax = 0x534D4150; … … 4737 4743 set_e820_range(ES, regs.u.r16.di, 4738 4744 0xfffc0000L, 0x00000000L, 0, 0, 2); 4745 #if 0 /* bird: later */ 4739 4746 if (extra_highbits_memory_size || extra_lowbits_memory_size) 4740 4747 regs.u.r32.ebx = 6; 4741 4748 else 4749 #endif 4742 4750 regs.u.r32.ebx = 0; 4743 4751 regs.u.r32.eax = 0x534D4150; … … 4745 4753 CLEAR_CF(); 4746 4754 return; 4755 #if 0 /* bird: later */ 4747 4756 case 6: 4748 /* Map ing of memory above 4 GB */4749 set_e820_range(ES, regs.u.r16.di, 4750 0x00000000L, extra_lowbits_memory_size, 4757 /* Mapping of memory above 4 GB */ 4758 set_e820_range(ES, regs.u.r16.di, 4759 0x00000000L, extra_lowbits_memory_size, 4751 4760 1, extra_highbits_memory_size + 1, 1); 4752 4761 regs.u.r32.ebx = 0; … … 4755 4764 CLEAR_CF(); 4756 4765 return; 4766 #endif 4757 4767 default: /* AX=E820, DX=534D4150, BX unrecognized */ 4758 4768 goto int15_unimplemented; … … 8322 8332 // signature. In general, it is impossible to tell a valid bootsector 8323 8333 // from an invalid one. 8324 // NB: It is somewhat common for failed OS installs to have the 8325 // 0x55AA signature and a valid partition table but zeros in the 8334 // NB: It is somewhat common for failed OS installs to have the 8335 // 0x55AA signature and a valid partition table but zeros in the 8326 8336 // rest of the boot sector. We do a quick check by comparing the first 8327 8337 // two words of boot sector; if identical, the boot sector is
Note:
See TracChangeset
for help on using the changeset viewer.