From 6d896ff1cb89aa29830a6da0678a10d777f13021 Mon Sep 17 00:00:00 2001 From: rsun3 Date: Mon, 2 Jul 2012 10:38:24 +0000 Subject: EdkCompatibilityPkg MpServicesOnFrameworkMpServicesThunk: Update .S files to be consistent with corresponding .asm files. Signed-off-by: Sun Rui Reviewed-by: Tian Feng git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13481 6f19259b-4bc3-4df7-8a09-765794883524 --- .../MpServicesOnFrameworkMpServicesThunk/IA32/MpFuncs.S | 16 +++++++++++++--- .../MpServicesOnFrameworkMpServicesThunk/X64/MpFuncs.S | 14 ++++++++++++-- 2 files changed, 25 insertions(+), 5 deletions(-) (limited to 'EdkCompatibilityPkg') diff --git a/EdkCompatibilityPkg/Compatibility/MpServicesOnFrameworkMpServicesThunk/IA32/MpFuncs.S b/EdkCompatibilityPkg/Compatibility/MpServicesOnFrameworkMpServicesThunk/IA32/MpFuncs.S index 6fd2c1d8f2..84fd473292 100644 --- a/EdkCompatibilityPkg/Compatibility/MpServicesOnFrameworkMpServicesThunk/IA32/MpFuncs.S +++ b/EdkCompatibilityPkg/Compatibility/MpServicesOnFrameworkMpServicesThunk/IA32/MpFuncs.S @@ -1,7 +1,7 @@ #------------------------------------------------------------------------------ # IA32 assembly file for AP startup vector. # -# Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.
+# Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.
# This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License # which accompanies this distribution. The full text of the license may be found at @@ -100,11 +100,21 @@ ProtectedModeStart: # protected mode entry point # movl $0x1b, %ecx rdmsr + + btl $10, %eax # Check for x2apic mode + jnc LegacyApicMode + movl $0x802, %ecx # Read APIC_ID + rdmsr + movl %eax, %ebx # ebx == apicid + jmp GetCpuNumber + +LegacyApicMode: andl $0xfffff000, %eax addl $0x20, %eax movl (%eax), %ebx - shrl $24, %ebx - + shrl $24, %ebx # ebx == apicid + +GetCpuNumber: xorl %ecx, %ecx movl %esi,%edi addl $ProcessorNumber, %edi diff --git a/EdkCompatibilityPkg/Compatibility/MpServicesOnFrameworkMpServicesThunk/X64/MpFuncs.S b/EdkCompatibilityPkg/Compatibility/MpServicesOnFrameworkMpServicesThunk/X64/MpFuncs.S index 6ea0f3e690..9585d32241 100644 --- a/EdkCompatibilityPkg/Compatibility/MpServicesOnFrameworkMpServicesThunk/X64/MpFuncs.S +++ b/EdkCompatibilityPkg/Compatibility/MpServicesOnFrameworkMpServicesThunk/X64/MpFuncs.S @@ -1,7 +1,7 @@ #------------------------------------------------------------------------------ # X64 assembly file for AP startup vector. # -# Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.
+# Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.
# This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License # which accompanies this distribution. The full text of the license may be found at @@ -134,11 +134,21 @@ LongModeStart: # movl $0x1b, %ecx rdmsr + + btl $10, %eax # Check for x2apic mode + jnc LegacyApicMode + movl $0x802, %ecx # Read APIC_ID + rdmsr + movl %eax, %ebx # ebx == apicid + jmp GetCpuNumber + +LegacyApicMode: andl $0xfffff000, %eax addl $0x20, %eax movl (%eax), %ebx - shrl $24, %ebx + shrl $24, %ebx # ebx == apicid +GetCpuNumber: xorq %rcx, %rcx movl %esi,%edi addl $ProcessorNumberLocation, %edi -- cgit v1.2.3