priv.isa (2646:c5f20661d9f3) | priv.isa (2938:afa2dcabf2ae) |
---|---|
1// Copyright (c) 2006 The Regents of The University of Michigan 2// All rights reserved. 3// 4// Redistribution and use in source and binary forms, with or without 5// modification, are permitted provided that the following conditions are 6// met: redistributions of source code must retain the above copyright 7// notice, this list of conditions and the following disclaimer; 8// redistributions in binary form must reproduce the above copyright --- 73 unchanged lines hidden (view full) --- 82 { 83 %(op_decl)s; 84 %(op_rd)s; 85 86 //If the processor isn't in privileged mode, fault out right away 87 if(%(check)s) 88 return new PrivilegedAction; 89 | 1// Copyright (c) 2006 The Regents of The University of Michigan 2// All rights reserved. 3// 4// Redistribution and use in source and binary forms, with or without 5// modification, are permitted provided that the following conditions are 6// met: redistributions of source code must retain the above copyright 7// notice, this list of conditions and the following disclaimer; 8// redistributions in binary form must reproduce the above copyright --- 73 unchanged lines hidden (view full) --- 82 { 83 %(op_decl)s; 84 %(op_rd)s; 85 86 //If the processor isn't in privileged mode, fault out right away 87 if(%(check)s) 88 return new PrivilegedAction; 89 |
90 Fault fault = NoFault; |
|
90 %(code)s; 91 %(op_wb)s; | 91 %(code)s; 92 %(op_wb)s; |
92 return NoFault; | 93 return fault; |
93 } 94}}; 95 96let {{ 97 def doPrivFormat(code, checkCode, name, Name, opt_flags): 98 (usesImm, code, immCode, 99 rString, iString) = splitOutImm(code) 100 iop = InstObjParams(name, Name, 'Priv', code, --- 10 unchanged lines hidden (view full) --- 111 decode_block = ROrImmDecode.subst(iop) 112 else: 113 decode_block = BasicDecode.subst(iop) 114 return (header_output, decoder_output, exec_output, decode_block) 115}}; 116 117// Primary format for integer operate instructions: 118def format Priv(code, *opt_flags) {{ | 94 } 95}}; 96 97let {{ 98 def doPrivFormat(code, checkCode, name, Name, opt_flags): 99 (usesImm, code, immCode, 100 rString, iString) = splitOutImm(code) 101 iop = InstObjParams(name, Name, 'Priv', code, --- 10 unchanged lines hidden (view full) --- 112 decode_block = ROrImmDecode.subst(iop) 113 else: 114 decode_block = BasicDecode.subst(iop) 115 return (header_output, decoder_output, exec_output, decode_block) 116}}; 117 118// Primary format for integer operate instructions: 119def format Priv(code, *opt_flags) {{ |
119 checkCode = "((xc->readMiscReg(PrStart + MISCREG_PSTATE))<2:2>)" | 120 checkCode = '''((xc->readMiscReg(PrStart + MISCREG_PSTATE))<2:2>) || 121 ((xc->readMiscReg(HprStart + MISCREG_HPSTATE))<2:2>)''' |
120 (header_output, decoder_output, 121 exec_output, decode_block) = doPrivFormat(code, 122 checkCode, name, Name, opt_flags) 123}}; 124 | 122 (header_output, decoder_output, 123 exec_output, decode_block) = doPrivFormat(code, 124 checkCode, name, Name, opt_flags) 125}}; 126 |
127def format HPriv(code, *opt_flags) {{ 128 checkCode = "((xc->readMiscReg(HprStart + MISCREG_HPSTATE))<2:2>)" 129 (header_output, decoder_output, 130 exec_output, decode_block) = doPrivFormat(code, 131 checkCode, name, Name, opt_flags) 132}}; |
|
125 | 133 |