diff --git a/arch/x86/archtables.c b/arch/x86/archtables.c index 2f3709bf66..b807601fa4 100644 --- a/arch/x86/archtables.c +++ b/arch/x86/archtables.c @@ -41,6 +41,7 @@ struct gdtarg { unsigned int base; } __attribute__((packed)); +#if 0 // Copy GDT to new location and reload it // 2003-07 by SONE Takeshi // Ported from Etherboot to LinuxBIOS 2005-08 by Steve Magnani @@ -56,10 +57,15 @@ void move_gdt(unsigned long newgdt) __asm__ __volatile__ ("lgdt %0\n\t" : : "m" (gdtarg)); printk(BIOS_DEBUG,"ok\n"); } - -struct lb_memory *write_tables(void) +#endif +struct lb_memory *arch_write_tables(void) { - unsigned long low_table_start, low_table_end, new_low_table_end; +#if 0 +#if HAVE_MP_TABLE==1 + unsigned long new_low_table_end; +#endif +#endif + unsigned long low_table_start, low_table_end; unsigned long rom_table_start, rom_table_end; rom_table_start = 0xf0000; @@ -123,10 +129,12 @@ struct lb_memory *write_tables(void) low_table_end = 0x500; } +#warning "Move the move_gdt to somewhere else ... not table writing!" +#if 0 // Relocate the GDT to reserved memory, so it won't get clobbered move_gdt(low_table_end); low_table_end += &gdt_end - &gdt; - +#endif /* The linuxbios table must be in 0-4K or 960K-1M */ write_linuxbios_table( low_table_start, low_table_end, diff --git a/arch/x86/linuxbios_table.c b/arch/x86/linuxbios_table.c index c63166c5f5..c0975247ba 100644 --- a/arch/x86/linuxbios_table.c +++ b/arch/x86/linuxbios_table.c @@ -28,6 +28,7 @@ //#include //#include //#include +#include #include @@ -149,7 +150,7 @@ void lb_strings(struct lb_header *header) u32 tag; const u8 *string; } strings[] = { - { LB_TAG_VERSION, "3 -- FIXME", }, + { LB_TAG_VERSION, (u8 *) "3 -- FIXME", }, /* { LB_TAG_VERSION, linuxbios_version, }, { LB_TAG_EXTRA_VERSION, linuxbios_extra_version, }, @@ -168,7 +169,7 @@ void lb_strings(struct lb_header *header) struct lb_string *rec; size_t len; rec = (struct lb_string *)lb_new_record(header); - len = strlen(strings[i].string); + len = strlen((char *)strings[i].string); rec->tag = strings[i].tag; rec->size = (sizeof(*rec) + len + 1 + 3) & ~3; memcpy(rec->string, strings[i].string, len+1); @@ -382,7 +383,6 @@ unsigned long write_linuxbios_table( unsigned long low_table_start, unsigned long low_table_end, unsigned long rom_table_start, unsigned long rom_table_end) { - unsigned long table_size; struct lb_header *head; struct lb_memory *mem; diff --git a/include/tables.h b/include/tables.h index ee712688de..eaff149a10 100644 --- a/include/tables.h +++ b/include/tables.h @@ -234,6 +234,7 @@ struct cmos_checksum { #define CHECKSUM_PCBIOS 1 }; +struct lb_memory *arch_write_tables(void); unsigned long write_linuxbios_table( unsigned long low_table_start, unsigned long low_table_end, unsigned long rom_table_start, unsigned long rom_table_end); diff --git a/lib/mem.c b/lib/mem.c index 43ff1baa8c..159bc6f3f6 100644 --- a/lib/mem.c +++ b/lib/mem.c @@ -31,6 +31,15 @@ void memcpy(void *dest, const void *src, int len) *d++ = *s++; } +/* seperate function in case we decide to use the built-in -- not sure yet. */ +void memmove(void *dest, const void *src, int len) +{ + unsigned char *d = dest; + const unsigned char *s = src; + while (len--) + *d++ = *s++; +} + void memset(void *v, unsigned char a, int len) { unsigned char *cp = v; diff --git a/lib/tables.c b/lib/tables.c index d9552c5eb5..6a024881b8 100644 --- a/lib/tables.c +++ b/lib/tables.c @@ -20,28 +20,12 @@ */ #include -#include +//#include +#include #include -#include struct lb_memory * write_tables(void) { - unsigned long low_table_start, low_table_end; - unsigned long rom_table_start, rom_table_end; - - rom_table_start = 0xf0000; - rom_table_end = 0xf0000; - /* Start low addr at 16 bytes instead of 0 because of a buglet - * in the generic linux unzip code, as it tests for the a20 line. - */ - low_table_start = 0; - low_table_end = 16; - - /* The linuxbios table must be in 0-4K or 960K-1M */ - write_linuxbios_table( - low_table_start, low_table_end, - rom_table_start, rom_table_end); - - return get_lb_mem(); + return arch_write_tables(); }