;/** ; * @file ; * ; * Agesa pre-memory miscellaneous support, including ap halt loop. ; * ; * @xrefitem bom "File Content Label" "Release Content" ; * @e project: AGESA ; * @e sub-project: CPU ; * @e \$Revision: 10071 $ @e \$Date: 2008-12-16 18:03:04 -0600 (Tue, 16 Dec 2008) $ ; */ ;***************************************************************************** ; ; Copyright (c) 2011, Advanced Micro Devices, Inc. ; All rights reserved. ; ; Redistribution and use in source and binary forms, with or without ; modification, are permitted provided that the following conditions are met: ; * Redistributions of source code must retain the above copyright ; notice, this list of conditions and the following disclaimer. ; * Redistributions in binary form must reproduce the above copyright ; notice, this list of conditions and the following disclaimer in the ; documentation and/or other materials provided with the distribution. ; * Neither the name of Advanced Micro Devices, Inc. nor the names of ; its contributors may be used to endorse or promote products derived ; from this software without specific prior written permission. ; ; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ; DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY ; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; ; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ; ;***************************************************************************** text SEGMENT ;====================================================================== ; ExecuteFinalHltInstruction: Performs a hlt instruction. ; ; In: ; None ; ; Out: ; None ; ; Destroyed: ; eax, ebx, ecx, edx, esp ; ;====================================================================== ExecuteFinalHltInstruction PROC PUBLIC @@: cli hlt jmp @B ;ExecuteHltInstruction ExecuteFinalHltInstruction ENDP ;====================================================================== ; ExecuteHltInstruction: Performs a hlt instruction. ; ; In: ; None ; ; Out: ; None ; ; Destroyed: ; eax, ebx, ecx, edx, esp ; ;====================================================================== ExecuteHltInstruction PROC PUBLIC cli hlt ret ExecuteHltInstruction ENDP ;====================================================================== ; NmiHandler: Simply performs an IRET. ; ; In: ; None ; ; Out: ; None ; ; Destroyed: ; None ; ;====================================================================== NmiHandler PROC PUBLIC iretq NmiHandler ENDP ;====================================================================== ; GetCsSelector: Returns the current protected mode CS selector. ; ; In: ; None ; ; Out: ; None ; ; Destroyed: ; None ; ;====================================================================== GetCsSelector PROC PUBLIC ; This stub function is here to avoid compilation errors. ; At this time, there is no need to provide a 64 bit function. ret GetCsSelector ENDP ;====================================================================== ; SetIdtr: ; ; In: ; None ; ; Out: ; None ; ; Destroyed: ; none ; ; WARNING: This routine has a mirror routine in the PREMEM segment. ; These two routines MUST be sync'd for content. ;====================================================================== SetIdtr PROC PUBLIC ; This stub function is here to avoid compilation errors. ; At this time, there is no need to provide a 64 bit function. ret SetIdtr ENDP ;====================================================================== ; ExecuteWbinvdInstruction: Performs a wbinvd instruction. ; ; In: ; None ; ; Out: ; None ; ; Destroyed: ; None ; ;====================================================================== ExecuteWbinvdInstruction PROC PUBLIC wbinvd ; Write back the cache tag RAMs ret ExecuteWbinvdInstruction ENDP END