From 18aa0e79d233862f5cbd39853ac062af59c9d47b Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Sun, 7 Sep 2008 21:38:19 +0100 Subject: [pcbios] Add extra debugging messages relating to the system memory map --- src/arch/i386/firmware/pcbios/hidemem.c | 10 ++++++++++ src/arch/i386/firmware/pcbios/memmap.c | 11 +++++++---- src/image/segment.c | 2 ++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/arch/i386/firmware/pcbios/hidemem.c b/src/arch/i386/firmware/pcbios/hidemem.c index fb60fa8b..2e74d3b0 100644 --- a/src/arch/i386/firmware/pcbios/hidemem.c +++ b/src/arch/i386/firmware/pcbios/hidemem.c @@ -20,6 +20,7 @@ #include #include #include +#include #include /** Alignment for hidden memory regions */ @@ -121,6 +122,11 @@ void hide_text ( void ) { * returned by the BIOS. */ static void hide_etherboot ( void ) { + struct memory_map memmap; + + /* Dump memory map before mangling */ + DBG ( "Hiding gPXE from system memory map\n" ); + get_memmap ( &memmap ); /* Initialise the hidden regions */ hide_basemem(); @@ -130,6 +136,10 @@ static void hide_etherboot ( void ) { /* Hook INT 15 */ hook_bios_interrupt ( 0x15, ( unsigned int ) int15, &int15_vector ); + + /* Dump memory map after mangling */ + DBG ( "Hidden gPXE from system memory map\n" ); + get_memmap ( &memmap ); } /** diff --git a/src/arch/i386/firmware/pcbios/memmap.c b/src/arch/i386/firmware/pcbios/memmap.c index 97d4861d..fc0d36ac 100644 --- a/src/arch/i386/firmware/pcbios/memmap.c +++ b/src/arch/i386/firmware/pcbios/memmap.c @@ -86,8 +86,9 @@ static unsigned int extmemsize_e801 ( void ) { } extmem = ( extmem_1m_to_16m_k + ( extmem_16m_plus_64k * 64 ) ); - DBG ( "INT 15,e801 extended memory size %d+64*%d=%d kB\n", - extmem_1m_to_16m_k, extmem_16m_plus_64k, extmem ); + DBG ( "INT 15,e801 extended memory size %d+64*%d=%d kB [100000,%x)\n", + extmem_1m_to_16m_k, extmem_16m_plus_64k, extmem, + ( 0x100000 + ( extmem * 1024 ) ) ); return extmem; } @@ -103,7 +104,8 @@ static unsigned int extmemsize_88 ( void ) { __asm__ __volatile__ ( REAL_CODE ( "int $0x15" ) : "=a" ( extmem ) : "a" ( 0x8800 ) ); - DBG ( "INT 15,88 extended memory size %d kB\n", extmem ); + DBG ( "INT 15,88 extended memory size %d kB [100000, %x)\n", + extmem, ( 0x100000 + ( extmem * 1024 ) ) ); return extmem; } @@ -203,7 +205,8 @@ void get_memmap ( struct memory_map *memmap ) { /* Get base and extended memory sizes */ basemem = basememsize(); - DBG ( "FBMS base memory size %d kB\n", basemem ); + DBG ( "FBMS base memory size %d kB [0,%x)\n", + basemem, ( basemem * 1024 ) ); extmem = extmemsize(); /* Try INT 15,e820 first */ diff --git a/src/image/segment.c b/src/image/segment.c index 8deaef79..9bd60f9c 100644 --- a/src/image/segment.c +++ b/src/image/segment.c @@ -43,6 +43,8 @@ int prep_segment ( userptr_t segment, size_t filesz, size_t memsz ) { physaddr_t end = user_to_phys ( segment, memsz ); unsigned int i; + DBG ( "Preparing segment [%lx,%lx,%lx)\n", start, mid, end ); + /* Sanity check */ if ( filesz > memsz ) { DBG ( "Insane segment [%lx,%lx,%lx)\n", start, mid, end ); -- cgit v1.2.3-55-g7522