Commit Graph

116 Commits

Author SHA1 Message Date
Michael Kinney 6f7878a972 MdePkg/BaseLib: Preserve EBX register and fix stack offset to LinearAddress in AsmFlushCacheLine()
The value of EBX must be preserved to follow IA32 cdecl calling convention in the assembly 
implementation of AsmFlushCacheLine(). The CPUID instruction modifies the EBX register.
The EBX register value is saved onto the stack before CPUID and restored from the stack 
after CPUID.

The update to the inline assembly implementation of AsmFlushCacheLine() changed the location of the 
LinearAddress parameter value on the stack.  The hardcoded lookup using [esp + 4] is not correct.
Use the parameter name LinearAddress instead of the hard coded [esp + 4] stack location to prevent
this issue from occurring again if there are changes to the inline assembly in the future.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Michael Kinney <michael.d.kinney@intel.com>
Reviewed-by: Feng Tian <feng.tian@intel.com>


git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17279 6f19259b-4bc3-4df7-8a09-765794883524
2015-04-30 07:25:07 +00:00
Michael Kinney 88a75d260c MdePkg/BaseLib: Support IA32 processors without CMOVx
Remove use of CMOVx instruction from IA32 assembly files in BaseLib.  
This matches compiler flags for all supported C compilers.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Michael Kinney <michael.d.kinney@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17213 6f19259b-4bc3-4df7-8a09-765794883524
2015-04-27 19:38:39 +00:00
Michael Kinney 881813d7a9 MdePkg/BaseLib: Support IA32 processors without CLFLUSH
Use CPUID Leaf 01 to detect support for CLFLUSH instruction.  

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Michael Kinney <michael.d.kinney@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17212 6f19259b-4bc3-4df7-8a09-765794883524
2015-04-27 19:37:15 +00:00
Jordan Justen 15f8eef784 MdePkg NASM Thunk16: Add missing ASM_PFX for InternalAsmThunk16
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16059 6f19259b-4bc3-4df7-8a09-765794883524
2014-09-04 15:17:57 +00:00
Jordan Justen eabcdf3a34 MdePkg NASM Thunk16: Work around NASM 2.09.04 - 2.10rc1 bug
Without this change, NASM 2.09.04 will hang with OVMF+CSM on both IA32
and X64.

Tested on OVMF+CSM on GCC49 with NASM 2.07, 2.09.04 and 2.11.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16058 6f19259b-4bc3-4df7-8a09-765794883524
2014-09-04 15:17:48 +00:00
Jordan Justen 03e9db1575 MdePkg BaseLib NASM Thunk16: Initialize _16GdtrBase to 0
Previously we were setting it to the start of the GDT in the UEFI
driver's copy of BaseLib. This address is irrelavent, since the C code
will initialize it to the cooresponding address after the Thunk16 code
has been placed in low memory.

Additionally, initializing this was causing a link error for the
XCLANG toolchain.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16025 6f19259b-4bc3-4df7-8a09-765794883524
2014-09-01 17:24:08 +00:00
Jordan Justen 7458df400c MdePkg BaseLib NASM Thunk16: Remove remaining 'DB' code
Convert remaining 'DB' code to assembly code by:
* Move instruction immediate data labels to end of instruction
* Use strict keyword to make sure immediate data size is not optimized

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16024 6f19259b-4bc3-4df7-8a09-765794883524
2014-09-01 17:23:57 +00:00
Jordan Justen f6888eea46 MdePkg BaseLib NASM Thunk16: Use bits 16 for 16-bit code
By using 'bits 16', we can write code for 16-bit use the actual
assembly syntax rather than 'DB' and sometimes writing code with
seemingly incorrect operands because we know it will run correctly
when the processor is running in 16-bit mode.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16023 6f19259b-4bc3-4df7-8a09-765794883524
2014-09-01 17:23:51 +00:00
Jordan Justen a8458d6cb3 MdePkg BaseLib NASM Thunk16: Use NASM local labels
http://www.nasm.us/doc/nasmdoc3.html#section-3.9

A local label is a label beginning with the period, and it's actual
name is prefixed by the previous non-local label.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16022 6f19259b-4bc3-4df7-8a09-765794883524
2014-09-01 17:23:39 +00:00
Jordan Justen 6dab5c8a8a MdePkg BaseLib Thunk16: Replace IA32 GAS Thunk16 with NASM version
This is a translation of Ia32/Thunk16.asm to NASM.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16020 6f19259b-4bc3-4df7-8a09-765794883524
2014-09-01 17:23:22 +00:00
Gao, Liming 1be8039054 MdePkg: Fix Clang build failure
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Gao, Liming <liming.gao@intel.com>
Reviewed-by: Andrew Fish <afish@apple.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15784 6f19259b-4bc3-4df7-8a09-765794883524
2014-08-11 07:05:49 +00:00
Gao, Liming e837e22a94 Correct comment typo in AsmReadCr0() function.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Gao, Liming <liming.gao@intel.com>
Reviewed-by: Ni, Ruiyu <ruiyu.ni@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15581 6f19259b-4bc3-4df7-8a09-765794883524
2014-06-24 02:22:47 +00:00
David Woodhouse af8aa62d59 MdePkg: First instruction after clearing CR0.PE must be a far jmp.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15029 6f19259b-4bc3-4df7-8a09-765794883524
2013-12-30 01:14:13 +00:00
David Woodhouse 321c89c208 Clean up hard-coded offsets and other utter bogosity in Thunk16.S
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15028 6f19259b-4bc3-4df7-8a09-765794883524
2013-12-30 01:12:10 +00:00
niruiyu 4e6b101f3d Fix CpuIdEx.asm to return correct ECX/EDX value.
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14134 6f19259b-4bc3-4df7-8a09-765794883524
2013-02-17 06:35:08 +00:00
li-elvin 48c8b6a299 Current Thunk16.asm implementation clears reserved bits, which does not follow IA32 SDM. Now the fix is to only clear PAE and PSE bit of CR4 for real mode.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14037 6f19259b-4bc3-4df7-8a09-765794883524
2013-01-07 07:12:19 +00:00
niruiyu de74f0c286 Correct a bug in AsmCpuidEx() to return correct ECX and EDX.
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Jeff Fan <jeff.fan@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13359 6f19259b-4bc3-4df7-8a09-765794883524
2012-05-25 03:02:26 +00:00
lgao4 c8641de387 Roll back the previous change in MdePkg BaseLib Ia32 Thunk16.S and EcpPkg GlueLib BaseLib Ia32 Thunk16.S, and still use the hard code offset in them to avoid GCC compiler create the unexpected instruction.
Signed-off-by: lgao4
Reviewed-by: rsun3



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12898 6f19259b-4bc3-4df7-8a09-765794883524
2011-12-28 09:48:15 +00:00
lgao4 fe28761275 Clean up the hard code offset in MdePkg BaseLib Ia32 Thunk16.S and EcpPkg GlueLib BaseLib Ia32 Thunk16.S.
Signed-off-by: lgao4
Reviewed-by: rsun3

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12889 6f19259b-4bc3-4df7-8a09-765794883524
2011-12-20 09:50:19 +00:00
lgao4 c577049aaf Fix the issue to clear the high 16-bit of EAX before use it Thunk code.
This patch updates MdePkg BaseLib, EcpPkg EdkIIGlueLib BaseLib and ThunkLib.

Signed-off-by: lgao4
Reviewed-by: rsun3

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12876 6f19259b-4bc3-4df7-8a09-765794883524
2011-12-15 08:27:17 +00:00
hhtian 4223e4f4c9 Minor copyright format update
Signed-off-by: hhtian

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12334 6f19259b-4bc3-4df7-8a09-765794883524
2011-09-13 07:48:35 +00:00
andrewfish bab427db7d MdePkg: Fix X64 clang compile issues.
Fixed issues with X64 clang, and also make StackSwitch push a zero on the new stack to prevent a stack unwind into memory that is no longer valid.

signed-off-by: andrewfish
reviewed-by: lgao4
reviewed-by: mdkinney



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12007 6f19259b-4bc3-4df7-8a09-765794883524
2011-07-12 03:01:34 +00:00
jljusten dccf78f0a2 MdePkg: Fix GCC Thunk support for IA32
In r11047 Ia32/Thunk.S was modified.  However, the current
implemention of Ia32/Thunk.S has contant values in the code
which must be updated if the code is changed.

This change updates those constants for the r11047 change.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11121 6f19259b-4bc3-4df7-8a09-765794883524
2010-12-06 06:06:35 +00:00
li-elvin 4d4c535a32 Fix the issue that the high 16-bit of EAX may contain invalid data, which cause bad stack pointer, the change will ensure the high 16-bit of EAX is cleared.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11047 6f19259b-4bc3-4df7-8a09-765794883524
2010-11-12 07:47:27 +00:00
sfu5 f0b0ba3177 Refine code.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10793 6f19259b-4bc3-4df7-8a09-765794883524
2010-08-13 02:47:22 +00:00
myronporter 2fc59a003e Minor grammatical work--mostly adding periods. Items with ONLY period added did not have the heading date changed, but Items with content changes had heading copyright dates updated. Sending separately a list of files missing Doxygen @param and @return information. (PENDING)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10604 6f19259b-4bc3-4df7-8a09-765794883524
2010-06-25 21:56:02 +00:00
MyronPorter e4a34497b4 Minor grammatical work--mostly adding periods. Items with ONLY period added did not have the heading date changed, but Items with content changes had heading copyright dates updated. Sending separately a list of files missing Doxygen @param and @return information. (PENDING)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10593 6f19259b-4bc3-4df7-8a09-765794883524
2010-06-22 22:59:38 +00:00
myronporter 35a1715411 Minor grammatical work--mostly adding periods. Sending separately a list of files missing Doxygen @param and @return information.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10572 6f19259b-4bc3-4df7-8a09-765794883524
2010-06-11 00:02:51 +00:00
geekboy15a 2bd78c92c6 Fixed issue with InternalX86ReadIdtr referencing LDT read and not IDT read operation.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10559 6f19259b-4bc3-4df7-8a09-765794883524
2010-06-01 22:46:53 +00:00
qhuang8 d01a90fb3e Fix some typos
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10521 6f19259b-4bc3-4df7-8a09-765794883524
2010-05-20 05:23:50 +00:00
hhtian c9b34b8cb3 Update copyright format
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10506 6f19259b-4bc3-4df7-8a09-765794883524
2010-05-18 11:40:39 +00:00
qhuang8 cf683fedc7 1. Restore the inline C implementation of GCC assembly files that was temporarily removed in Svn r10045.
2. Remove 139 GCC assembly files whose functionality have been covered in the inline C implementation.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10503 6f19259b-4bc3-4df7-8a09-765794883524
2010-05-18 05:37:58 +00:00
hhtian bb817c56c5 Update the copyright notice format
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10405 6f19259b-4bc3-4df7-8a09-765794883524
2010-04-23 16:00:47 +00:00
klu2 28b5f7c062 Disable interrupt when changing IDTR register.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10046 6f19259b-4bc3-4df7-8a09-765794883524
2010-02-23 07:32:20 +00:00
qhuang8 f18f2882e9 Temporarily remove the C implementation of some GCC assembly files in MdePkg. They are kept in repository and will be re-evaluate later.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10045 6f19259b-4bc3-4df7-8a09-765794883524
2010-02-23 04:56:55 +00:00
qhuang8 ea6898b902 Clean up MdePkg source to correct some coding style issues, etc.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9832 6f19259b-4bc3-4df7-8a09-765794883524
2010-01-27 03:25:28 +00:00
eric_tian 6741aad96b according to IA32 intel architecture spec, mwait instuction needs not the operands.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9527 6f19259b-4bc3-4df7-8a09-765794883524
2009-12-07 04:15:00 +00:00
klu2 6a8e44d9c6 Add ASM_PFX() for exposed symoble from assemble to C
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9435 6f19259b-4bc3-4df7-8a09-765794883524
2009-11-17 06:52:34 +00:00
mdkinney 7f22d35110 Fix file headers
Move stack alignment check from CPU specific files into common SwitchStack() function and add VA_END() to SwitchStack().
Fix incorrect syntax for ASM_FUNCTION_REMOVE_IF_UNREFERENCED






git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9193 6f19259b-4bc3-4df7-8a09-765794883524
2009-08-24 23:53:23 +00:00
qhuang8 ebd04fc2e5 Update to make end-of-line consistent for all source files in MdePkg. There are no other updates besides that change.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9141 6f19259b-4bc3-4df7-8a09-765794883524
2009-08-19 14:02:07 +00:00
mdkinney 64698eb841 Add ARM support
Add C inline assembly files for IA32 and X64 GCC builds.


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9113 6f19259b-4bc3-4df7-8a09-765794883524
2009-08-18 21:04:14 +00:00
xli24 132f41f0a9 Replace .globl with ASM_GLOBAL
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8346 6f19259b-4bc3-4df7-8a09-765794883524
2009-05-20 10:22:09 +00:00
mdkinney bbc3c2d526 Split out Synchronization Library from Base Library
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7378 6f19259b-4bc3-4df7-8a09-765794883524
2009-01-30 00:47:57 +00:00
qhuang8 373ade0eb6 Update copyright for files modified in this year
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7148 6f19259b-4bc3-4df7-8a09-765794883524
2008-12-29 14:07:07 +00:00
gikidy 2fe241a290 Synchronize comment of BaseLib.h and it's implementation to match the Spec.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6929 6f19259b-4bc3-4df7-8a09-765794883524
2008-12-09 07:02:26 +00:00
qhuang8 030cd1a2e9 Update the text to use "x64" instead of "X64" in MdePkg.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6854 6f19259b-4bc3-4df7-8a09-765794883524
2008-12-05 03:23:13 +00:00
qhuang8 be5f161485 Add AsmEnableCache() and AsmDisableCache() as the IA32 & x64 specific BaseLib API.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6807 6f19259b-4bc3-4df7-8a09-765794883524
2008-12-03 02:19:49 +00:00
qhuang8 e73bf9f394 Use ".486" for the instruction of "wbinvd"
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6713 6f19259b-4bc3-4df7-8a09-765794883524
2008-11-25 00:05:41 +00:00
mdkinney 9f4f2f0e15 Add EnableCache() and DisableCache() implementations for IA32 and X64 to the BaseLib
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6705 6f19259b-4bc3-4df7-8a09-765794883524
2008-11-24 08:30:58 +00:00
qhuang8 6f890d5b40 Detab
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6639 6f19259b-4bc3-4df7-8a09-765794883524
2008-11-19 15:22:53 +00:00