Deleted Added
sdiff udiff text old ( 5241:a6602acdd046 ) new ( 5291:5d38610cff05 )
full compact
1// -*- mode:c++ -*-
2
3// Copyright (c) 2007 The Hewlett-Packard Development Company
4// All rights reserved.
5//
6// Redistribution and use of this software in source and binary forms,
7// with or without modification, are permitted provided that the
8// following conditions are met:

--- 66 unchanged lines hidden (view full) ---

75 # Add in symbols for the microcode registers
76 for num in range(15):
77 assembler.symbols["t%d" % num] = "NUM_INTREGS+%d" % num
78 for num in range(7):
79 assembler.symbols["ufp%d" % num] = "FLOATREG_MICROFP(%d)" % num
80 # Add in symbols for the segment descriptor registers
81 for letter in ("C", "D", "E", "F", "G", "S"):
82 assembler.symbols["%ss" % letter.lower()] = "SEGMENT_REG_%sS" % letter
83 # Miscellaneous symbols
84 symbols = {
85 "reg" : "env.reg",
86 "xmml" : "FLOATREG_XMM_LOW(env.reg)",
87 "xmmh" : "FLOATREG_XMM_HIGH(env.reg)",
88 "regm" : "env.regm",
89 "xmmlm" : "FLOATREG_XMM_LOW(env.regm)",
90 "xmmhm" : "FLOATREG_XMM_HIGH(env.regm)",

--- 42 unchanged lines hidden (view full) ---

133
134 # Code literal which forces a default 64 bit operand size in 64 bit mode.
135 assembler.symbols["oszIn64Override"] = '''
136 if (machInst.mode.submode == SixtyFourBitMode &&
137 env.dataSize == 4)
138 env.dataSize = 8;
139 '''
140
141 def trimImm(width):
142 return "adjustedImm = adjustedImm & mask(%s);" % width
143
144 assembler.symbols["trimImm"] = trimImm
145
146 def labeler(labelStr):
147 return "label_%s" % labelStr
148
149 assembler.symbols["label"] = labeler
150
151 def stack_index(index):
152 return "(NUM_FLOATREGS + (((%s) + 8) %% 8))" % index
153
154 assembler.symbols["st"] = stack_index
155
156 macroopDict = assembler.assemble(microcode)
157}};