diff options
Diffstat (limited to 'sim/ppc/ppc-opcode-flat')
-rw-r--r-- | sim/ppc/ppc-opcode-flat | 86 |
1 files changed, 10 insertions, 76 deletions
diff --git a/sim/ppc/ppc-opcode-flat b/sim/ppc/ppc-opcode-flat index 21079f8..54a8433 100644 --- a/sim/ppc/ppc-opcode-flat +++ b/sim/ppc/ppc-opcode-flat @@ -17,79 +17,13 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # -# Instruction decode: -# -# The table that follows is used by gen to construct a decision tree -# that can identify each possible instruction. Gen then outputs this -# decision tree as (according to config) a table or switch statement -# as the function idecode. -# -# In parallel to this, as mentioned above, WITH_EXPANDED_SEMANTICS -# determines of the semantic functions themselves should be expanded -# in a similar way. -# -# The table contains the following entries: -# -# <valid> -# -# Must be 1 for the entry to be considered. The last entry must be -# zero. -# -# <first> -# <last> -# -# Range of bits (within the instruction) that should be searched for -# an instruction field. Within such ranges, gen looks for opcodes -# (constants), registers (strings) and reserved bits (slash) and -# according to the rules that follows includes or excludes them from -# a possible instruction field. -# -# <force_first> -# <force_last> -# -# If an instructioin field was found, enlarge the field size so that -# it is forced to at least include bits starting from <force_first> -# (<force_last>). To stop this occuring, use <force_first> = <last> -# + 1 and <force_last> = <first> - 1. -# -# <force_slash> -# -# Treat `/' fields as a constant instead of variable when looking for -# an instruction field. -# -# <force_expansion> -# -# Treat any contained register (string) fields as constant when -# determining the instruction field. For the instruction decode (and -# controled by IDECODE_EXPAND_SEMANTICS) this forces the expansion of -# what would otherwize be non constant bits of an instruction. -# -# <use_switch> -# -# Should this table be expanded using a switch statement (val 1) and -# if so, should it be padded with entries so as to force the compiler -# to generate a jump table (val 2). -# -# <special_mask> -# <special_value> -# <special_rule> -# -# Special rule to fine tune how specific (or groups) of instructions -# are expanded. The applicability of the rule is determined by -# -# <special_mask> != 0 && (instruction> & <special_mask>) == <special_value> -# -# Where <instruction> is obtained by looking only at constant fields -# with in an instructions spec. When determining an expansion, the -# rule is only considered when a node contains a single instruction. -# <special_rule> can be any of: -# -# 0: for this instruction, expand by earlier rules -# 1: expand bits <force_low> .. <force_hi> only -# 2: boolean expansion of only zero/non-zero cases -# - 0: 5: 0: 5:0:: 2:0x00000000:0x00000000:0 -21:31:32:-1:0:OE,LR,AA,Rc,LK:1:0x00000000:0x00000000:0 - 6: 9: 6: 9:0:BO: 1:0xfc000000:0x40000000:1 -11:15:11:15:0:RA: 1:0xfc000000:0x38000000:2 -11:15:11:15:0:RA: 1:0xfc000000:0x3c000000:2 +# sed < ppc-opcode-complex > ppc-opcode-flat -e 's/array/switch/' +# +padded-switch,normal: 0: 5: 0: 5: +padded-switch,normal: 21:31:32:-1:OE,LR,AA,Rc,LK: +padded-switch,expand-forced: 6: 9: 6: 9:BO: 0xfc000000:0x40000000 +switch,boolean: 11:15:11:15:0RA: 0xfc000000:0x38000000:0 +switch,boolean: 11:15:11:15:RA: 0xfc000000:0x3c000000:0 +# BLR instruction +switch,boolean: 11:20:11:20:SPR: 0xfc0007ff:0x7c0003a6:0x100 +switch,boolean: 11:20:11:20:SPR: 0xfc0007ff:0x7c0002a6:0x100 |