X86: Impelement the HLT instruction and fix the "halt" microop.

--HG--
extra : convert_revision : 932e5bb5bf3644f8468dba92177fb87cc54b891a
This commit is contained in:
Gabe Black 2007-10-19 15:11:15 -07:00
parent f69a463b4b
commit 35a8bc56cd
5 changed files with 66 additions and 4 deletions

View file

@ -178,6 +178,7 @@ if env['TARGET_ISA'] == 'x86':
'general_purpose/string/store_string.py',
'general_purpose/system_calls.py',
'system/__init__.py',
'system/halt.py',
'system/undefined_operation.py',
'system/msrs.py',
'simd128/__init__.py',

View file

@ -504,7 +504,7 @@
{{"Tried to execute the repne prefix!"}});
0x3: M5InternalError::error(
{{"Tried to execute the rep/repe prefix!"}});
0x4: WarnUnimpl::hlt();
0x4: HLT();
0x5: CMC();
//0x6: group3_Eb();
0x6: decode MODRM_REG {

View file

@ -53,7 +53,8 @@
#
# Authors: Gabe Black
categories = ["undefined_operation",
categories = ["halt",
"undefined_operation",
"msrs"]
microcode = ""

View file

@ -0,0 +1,60 @@
# Copyright (c) 2007 The Hewlett-Packard Development Company
# All rights reserved.
#
# Redistribution and use of this software in source and binary forms,
# with or without modification, are permitted provided that the
# following conditions are met:
#
# The software must be used only for Non-Commercial Use which means any
# use which is NOT directed to receiving any direct monetary
# compensation for, or commercial advantage from such use. Illustrative
# examples of non-commercial use are academic research, personal study,
# teaching, education and corporate research & development.
# Illustrative examples of commercial use are distributing products for
# commercial advantage and providing services using the software for
# commercial advantage.
#
# If you wish to use this software or functionality therein that may be
# covered by patents for commercial use, please contact:
# Director of Intellectual Property Licensing
# Office of Strategy and Technology
# Hewlett-Packard Company
# 1501 Page Mill Road
# Palo Alto, California 94304
#
# 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
# the COPYRIGHT HOLDER(s), HEWLETT-PACKARD COMPANY, nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission. No right of
# sublicense is granted herewith. Derivatives of the software and
# output created using the software may be prepared, but only for
# Non-Commercial Uses. Derivatives of the software may be shared with
# others provided: (i) the others agree to abide by the list of
# conditions herein which includes the Non-Commercial Use restrictions;
# and (ii) such Derivatives of the software include the above copyright
# notice to acknowledge the contribution from this software where
# applicable, this list of conditions and the disclaimer below.
#
# 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 THE COPYRIGHT
# OWNER OR CONTRIBUTORS 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.
#
# Authors: Gabe Black
microcode = '''
def macroop HLT {
halt
};
'''

View file

@ -135,7 +135,7 @@ output exec {{
MicroHalt::execute(%(CPU_exec_context)s *xc,
Trace::InstRecord * traceData) const
{
xc->suspend();
xc->tcBase()->suspend();
return NoFault;
}
}};
@ -244,7 +244,7 @@ let {{
pass
def getAllocator(self, *microFlags):
return "new MicroHalt(machInst, mnemonic %(flags)s)" % \
return "new MicroHalt(machInst, mnemonic %s)" % \
self.microFlagsText(microFlags)
microopClasses["halt"] = Halt