
From: john stultz <johnstul@us.ibm.com>

This patch fixes a circular dependency (a function in mach_apic.h requires
hard_smp_processor_id() and hard_smp_processor_id() requires macros from
mach_apic.h) that has been in the subarch code for a bit, but was hacked
around with some #ifdefs.  

With the inclusion of the generic-subarch the hack was dropped and bigsmp
and summit promptly broke.  So this makes things compile again.  



 include/asm-i386/mach-bigsmp/mach_apic.h |   17 +++++++++--------
 include/asm-i386/mach-summit/mach_apic.h |   17 +++++++++--------
 2 files changed, 18 insertions(+), 16 deletions(-)

diff -puN include/asm-i386/mach-bigsmp/mach_apic.h~subarch-circular-dependency-fix include/asm-i386/mach-bigsmp/mach_apic.h
--- 25/include/asm-i386/mach-bigsmp/mach_apic.h~subarch-circular-dependency-fix	2003-05-14 20:29:32.000000000 -0700
+++ 25-akpm/include/asm-i386/mach-bigsmp/mach_apic.h	2003-05-14 20:29:32.000000000 -0700
@@ -40,10 +40,18 @@ static inline unsigned long check_apicid
 
 #define apicid_cluster(apicid) (apicid & 0xF0)
 
+static inline unsigned get_apic_id(unsigned long x) 
+{ 
+	return (((x)>>24)&0x0F);
+} 
+
+#define		GET_APIC_ID(x)	get_apic_id(x)
+
 static inline unsigned long calculate_ldr(unsigned long old)
 {
 	unsigned long id;
-	id = xapic_phys_to_log_apicid(hard_smp_processor_id());
+	id = xapic_phys_to_log_apicid(
+			GET_APIC_LOGICAL_ID(*(unsigned long *)(APIC_BASE+APIC_LDR)));
 	return ((old & ~APIC_LDR_MASK) | SET_APIC_LOGICAL_ID(id));
 }
 
@@ -129,13 +137,6 @@ static inline int check_phys_apicid_pres
 
 #define		APIC_ID_MASK		(0x0F<<24)
 
-static inline unsigned get_apic_id(unsigned long x) 
-{ 
-	return (((x)>>24)&0x0F);
-} 
-
-#define		GET_APIC_ID(x)	get_apic_id(x)
-
 static inline unsigned int cpu_mask_to_apicid (unsigned long cpumask)
 {
 	int num_bits_set;
diff -puN include/asm-i386/mach-summit/mach_apic.h~subarch-circular-dependency-fix include/asm-i386/mach-summit/mach_apic.h
--- 25/include/asm-i386/mach-summit/mach_apic.h~subarch-circular-dependency-fix	2003-05-14 20:29:32.000000000 -0700
+++ 25-akpm/include/asm-i386/mach-summit/mach_apic.h	2003-05-14 20:29:32.000000000 -0700
@@ -48,12 +48,20 @@ static inline unsigned long check_apicid
 
 extern u8 bios_cpu_apicid[];
 
+static inline unsigned get_apic_id(unsigned long x) 
+{ 
+	return (((x)>>24)&0xFF);
+} 
+
+#define		GET_APIC_ID(x)	get_apic_id(x)
+
 static inline void init_apic_ldr(void)
 {
 	unsigned long val, id;
 
 	if (x86_summit)
-		id = xapic_phys_to_log_apicid(hard_smp_processor_id());
+		id = xapic_phys_to_log_apicid(
+			GET_APIC_ID(*(unsigned long *)(APIC_BASE+APIC_ID)));
 	else
 		id = 1UL << smp_processor_id();
 	apic_write_around(APIC_DFR, APIC_DFR_VALUE);
@@ -137,13 +145,6 @@ static inline int check_phys_apicid_pres
 
 #define		APIC_ID_MASK		(0xFF<<24)
 
-static inline unsigned get_apic_id(unsigned long x) 
-{ 
-	return (((x)>>24)&0xFF);
-} 
-
-#define		GET_APIC_ID(x)	get_apic_id(x)
-
 static inline unsigned int cpu_mask_to_apicid (unsigned long cpumask)
 {
 	int num_bits_set;

_
