diff options
author | Gwenolé Beauchesne <gbeauchesne@mandriva.org> | 2003-10-22 14:49:29 +0000 |
---|---|---|
committer | Gwenolé Beauchesne <gbeauchesne@mandriva.org> | 2003-10-22 14:49:29 +0000 |
commit | 3cd731f57f0ceeae077be16328d6ab3b4b280257 (patch) | |
tree | 2f9c9929647efb8b2eeea1fde360ee4becec6cad /perl-install/c | |
parent | 19eeb232b0a21ddb64fd6569af34f97680698480 (diff) | |
download | drakx-3cd731f57f0ceeae077be16328d6ab3b4b280257.tar drakx-3cd731f57f0ceeae077be16328d6ab3b4b280257.tar.gz drakx-3cd731f57f0ceeae077be16328d6ab3b4b280257.tar.bz2 drakx-3cd731f57f0ceeae077be16328d6ab3b4b280257.tar.xz drakx-3cd731f57f0ceeae077be16328d6ab3b4b280257.zip |
Fix SMP detection on AMD64
Diffstat (limited to 'perl-install/c')
-rw-r--r-- | perl-install/c/smp.c | 65 |
1 files changed, 35 insertions, 30 deletions
diff --git a/perl-install/c/smp.c b/perl-install/c/smp.c index 2438418bb..886321e06 100644 --- a/perl-install/c/smp.c +++ b/perl-install/c/smp.c @@ -152,6 +152,11 @@ typedef unsigned int vm_offset_t; #include <machine/types.h> #endif +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned int u32; +typedef vm_offset_t addr_t; + /* EBDA is @ 40:0e in real-mode terms */ #define EBDA_POINTER 0x040e /* location of EBDA pointer */ @@ -172,43 +177,43 @@ typedef unsigned int vm_offset_t; /* MP Floating Pointer Structure */ typedef struct MPFPS { char signature[ 4 ]; - void* pap; - u_char length; - u_char spec_rev; - u_char checksum; - u_char mpfb1; - u_char mpfb2; - u_char mpfb3; - u_char mpfb4; - u_char mpfb5; + addr_t pap; + u8 length; + u8 spec_rev; + u8 checksum; + u8 mpfb1; + u8 mpfb2; + u8 mpfb3; + u8 mpfb4; + u8 mpfb5; } mpfps_t; /* MP Configuration Table Header */ typedef struct MPCTH { char signature[ 4 ]; - u_short base_table_length; - u_char spec_rev; - u_char checksum; - u_char oem_id[ 8 ]; - u_char product_id[ 12 ]; - void* oem_table_pointer; - u_short oem_table_size; - u_short entry_count; - void* apic_address; - u_short extended_table_length; - u_char extended_table_checksum; - u_char reserved; + u16 base_table_length; + u8 spec_rev; + u8 checksum; + u8 oem_id[ 8 ]; + u8 product_id[ 12 ]; + addr_t oem_table_pointer; + u16 oem_table_size; + u16 entry_count; + addr_t apic_address; + u16 extended_table_length; + u8 extended_table_checksum; + u8 reserved; } mpcth_t; typedef struct PROCENTRY { - u_char type; - u_char apicID; - u_char apicVersion; - u_char cpuFlags; - u_long cpuSignature; - u_long featureFlags; - u_long reserved1; - u_long reserved2; + u8 type; + u8 apicID; + u8 apicVersion; + u8 cpuFlags; + u32 cpuSignature; + u32 featureFlags; + u32 reserved1; + u32 reserved2; } ProcEntry; #define PROCENTRY_FLAG_EN 0x01 @@ -274,7 +279,7 @@ static int intelDetectSMP_mptable(void) mpcth_t cth; int count, i; - paddr = (vm_offset_t) mpfps.pap; + paddr = mpfps.pap; seekEntry( paddr ); readEntry( &cth, sizeof( cth ) ); /* if we don't have any entries, the kernel sure |