-
- u32 msize = e820_count * sizeof(e820_list[0]);
- if (bios_table_cur_addr + msize > bios_table_end_addr) {
- dprintf(1, "No room for e820 map!\n");
- return;
- }
- memcpy((void*)bios_table_cur_addr, e820_list, msize);
- SET_EBDA(e820_loc, bios_table_cur_addr);
- SET_EBDA(e820_count, e820_count);
- bios_table_cur_addr += msize;
-
- dprintf(1, "final bios_table_addr: 0x%08x (used %d%%)\n"
- , bios_table_cur_addr
- , (100 * (bios_table_cur_addr - (u32)&freespace2_start)
- / ((u32)&freespace2_end - (u32)&freespace2_start)));
- if (bios_table_cur_addr > bios_table_end_addr)
- BX_PANIC("bios_table_end_addr overflow!\n");