Andrew D. Ball
2006-Aug-11 22:07 UTC
[Xen-devel] [PATCH] [5/5] SMBIOS -- pick up SMBIOS entry point in ROMBIOS
Pick up SMBIOS entry point in the ROMBIOS. Signed-off-by: Andrew D. Ball <aball@us.ibm.com> diff -r 1d817bfc5ed9 tools/firmware/rombios/rombios.c --- a/tools/firmware/rombios/rombios.c Fri Aug 11 14:22:54 2006 +0100 +++ b/tools/firmware/rombios/rombios.c Fri Aug 11 14:55:22 2006 -0400 @@ -9443,6 +9443,43 @@ rom_scan_increment: mov ds, ax ret +#ifdef HVMASSIST + +; Copy the SMBIOS entry point over from 0x9f000, where hvmloader left it. +; The entry point must be somewhere in 0xf0000-0xfffff on a 16-byte boundary, +; but the tables themeselves can be elsewhere. +smbios_init: + push ax + push cx + push es + push ds + push di + push si + + mov cx, #0x001f ; 0x1f bytes to copy + mov ax, #0xf000 + mov es, ax ; destination segment is 0xf0000 + mov di, smbios_entry_point ; destination offset + mov ax, #0x9f00 + mov ds, ax ; source segment is 0x9f000 + mov si, #0x0000 ; source offset is 0 + cld + rep + movsb + + pop si + pop di + pop ds + pop es + pop cx + pop ax + + ret + +#endif + + + ;; for ''C'' strings and other data, insert them here with ;; a the following hack: ;; DATA_SEG_DEFS_HERE @@ -9724,6 +9761,7 @@ post_default_ints: #ifdef HVMASSIST call _copy_e820_table + call smbios_init #endif call rom_scan @@ -10538,6 +10576,13 @@ dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;; 768 bytes dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;; 832 bytes dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;; 896 bytes + +.align 16 +smbios_entry_point: +db 0,0,0,0,0,0,0,0 ; 8 bytes +db 0,0,0,0,0,0,0,0 ; 16 bytes +db 0,0,0,0,0,0,0,0 ; 24 bytes +db 0,0,0,0,0,0,0 ; 31 bytes ASM_END #else // !HVMASSIST _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel