diff options
-rw-r--r-- | sys/arch/amd64/stand/boot/conf.c | 4 | ||||
-rw-r--r-- | sys/arch/amd64/stand/cdboot/conf.c | 4 | ||||
-rw-r--r-- | sys/arch/amd64/stand/libsa/memprobe.c | 44 | ||||
-rw-r--r-- | sys/arch/amd64/stand/pxeboot/conf.c | 4 |
4 files changed, 46 insertions, 10 deletions
diff --git a/sys/arch/amd64/stand/boot/conf.c b/sys/arch/amd64/stand/boot/conf.c index 49e06f6a877..8759b7ba036 100644 --- a/sys/arch/amd64/stand/boot/conf.c +++ b/sys/arch/amd64/stand/boot/conf.c @@ -1,4 +1,4 @@ -/* $OpenBSD: conf.c,v 1.6 2005/05/03 13:18:05 tom Exp $ */ +/* $OpenBSD: conf.c,v 1.7 2005/05/28 05:47:33 weingart Exp $ */ /* * Copyright (c) 1996 Michael Shalayeff @@ -42,7 +42,7 @@ #include <biosdev.h> #include <dev/cons.h> -const char version[] = "2.10"; +const char version[] = "2.11"; int debug = 1; diff --git a/sys/arch/amd64/stand/cdboot/conf.c b/sys/arch/amd64/stand/cdboot/conf.c index c106ed59413..4913b62ab00 100644 --- a/sys/arch/amd64/stand/cdboot/conf.c +++ b/sys/arch/amd64/stand/cdboot/conf.c @@ -1,4 +1,4 @@ -/* $OpenBSD: conf.c,v 1.5 2005/05/03 13:18:05 tom Exp $ */ +/* $OpenBSD: conf.c,v 1.6 2005/05/28 05:47:33 weingart Exp $ */ /* * Copyright (c) 2004 Tom Cosgrove @@ -42,7 +42,7 @@ #include <biosdev.h> #include <dev/cons.h> -const char version[] = "1.04"; +const char version[] = "1.05"; int debug = 1; diff --git a/sys/arch/amd64/stand/libsa/memprobe.c b/sys/arch/amd64/stand/libsa/memprobe.c index 58084c5f7d9..a8a81d14a18 100644 --- a/sys/arch/amd64/stand/libsa/memprobe.c +++ b/sys/arch/amd64/stand/libsa/memprobe.c @@ -1,4 +1,4 @@ -/* $OpenBSD: memprobe.c,v 1.3 2005/05/03 13:18:05 tom Exp $ */ +/* $OpenBSD: memprobe.c,v 1.4 2005/05/28 05:47:33 weingart Exp $ */ /* * Copyright (c) 1997-1999 Michael Shalayeff @@ -344,16 +344,51 @@ memprobe(void) if(im->addr < IOM_BEGIN) cnvmem = max(cnvmem, im->addr + im->size) / 1024; - if(im->addr >= IOM_END) + if(im->addr >= IOM_END + && (im->addr/1024) == (extmem + 1024)) { extmem += im->size / 1024; + } } } + /* Adjust extmem to be no more than 4G (which it usually is not + * anyways). In order for an x86 type machine (amd64/etc) to use + * more than 4GB of memory, it will need to grok and use the bios + * memory map we pass it. Note that above we only count CONTIGUOUS + * memory from the 1MB boundary on for extmem (think I/O holes). + * + * extmem is in KB, and we have 4GB - 1MB (base/io hole) worth of it. + */ + if(extmem > 4*1024*1024 - 1024) + extmem = 4*1024*1024 - 1024; + /* Check if gate A20 is on */ printf("a20=o%s] ", checkA20()? "n" : "ff!"); } #endif +/* + * XXX - A hack until libgcc has the appropriate div/mod functions so + * that we can use -DLIBSA_LONGLONG_PRINTF and simply print out the + * 64-bit vars directly. + */ +static const char * +int64_str(u_int64_t num) +{ + static char buf[17], *p; + u_int32_t i; + + buf[16] = '\0'; + for(p = buf + 15, i = 0; i < 16; p--,i++) { + *p = "0123456789abcdef"[num & 0xF]; + num >>= 4; + if(num == 0) + break; + } + + return p; +} + void dump_biosmem(bios_memmap_t *tm) { @@ -369,8 +404,9 @@ dump_biosmem(bios_memmap_t *tm) * If/when we do, libsa may need to be updated some... */ for(p = tm; p->type != BIOS_MAP_END; p++) { - printf("Region %ld: type %u at 0x%x for %uKB\n", - (long)(p - tm), p->type, (u_int)p->addr, + printf("Region %ld: type %u at 0x%s for %uKB\n", + (long)(p - tm), p->type, + int64_str(p->addr), (u_int)(p->size / 1024)); if(p->type == BIOS_MAP_FREE) diff --git a/sys/arch/amd64/stand/pxeboot/conf.c b/sys/arch/amd64/stand/pxeboot/conf.c index 3bd457cbefb..345a607072f 100644 --- a/sys/arch/amd64/stand/pxeboot/conf.c +++ b/sys/arch/amd64/stand/pxeboot/conf.c @@ -1,4 +1,4 @@ -/* $OpenBSD: conf.c,v 1.7 2005/05/03 13:18:05 tom Exp $ */ +/* $OpenBSD: conf.c,v 1.8 2005/05/28 05:47:33 weingart Exp $ */ /* * Copyright (c) 2004 Tom Cosgrove @@ -45,7 +45,7 @@ #include "pxeboot.h" #include "pxe_net.h" -const char version[] = "1.06"; +const char version[] = "1.07"; int debug = 0; #undef _TEST |