[PATCH] Add Octeon CP0 names to the disassembler

David Daney david.daney@cavium.com
Wed Dec 7 17:13:00 GMT 2011


On 12/06/2011 04:01 PM, Andrew Pinski wrote:
> Hi,
>    This patch adds the CP0 names to the disassembler just like there
> are ones for XLR.
> OK?  Tested for mips64-linux-gnu with no regressions.
>
> Thanks,
> Andrew Pinski
>
> gas/testsuite/ChangeLog:
> * gas/mips/cp0-names-octeon.d: New file
> * gas/mips/cp0sel-names-octeon.d: Likewise.
> * gas/mips/mips.exp: Run cp0-names-octeon and cp0sel-names-octeon.
>
> opcodes/ChangeLog:
> * mips-dis.c (mips_cp0_names_octeon): Define.
> (mips_cp0sel_names_octeon): Define.
> (mips_arch_choices): Change Octeon and Octeon+ to use
> mips_cp0_names_octeon and mips_cp0sel_names_octeon.
>
>
[...]
>
> +/* Octeon cop0 register names.  */
> +static const char * const mips_cp0_names_octeon[32] = {
> +  "c0_index",     "c0_random",    "c0_entrylo0",  "c0_entrylo1",
> +  "c0_context",   "c0_pagemask",  "c0_wired",     "c0_hwrena",
> +  "c0_badvaddr",  "c0_count",     "c0_entryhi",   "c0_compare",
> +  "c0_status",    "c0_cause",     "c0_epc",       "c0_prid",
> +  "c0_config",    "$17",          "c0_watchlo",   "c0_watchhi",
> +  "c0_xcontext",  "$21",          "c0_mdebug",    "c0_debug",
> +  "c0_depc",      "c0_perfctl0",   "$26",         "c0_cacheerri",
> +  "c0_tagloi",    "c0_taghii",     "c0_errorepc",  "c0_desave",
> +};
> +
> +/* Octeon's CP0 Select Registers.  */
> +static const struct mips_cp0sel_name mips_cp0sel_names_octeon[] = {
> +  { 5,  1, "c0_pagegrain"	},
> +  { 9,  6, "c0_cvmcount"	},
> +  { 9,  7, "c0_cvmctl"		},
> +  { 11, 7, "c0_cvmmemctl"	},
> +  { 12, 1, "c0_intctl"		},
> +  { 12, 2, "c0_srsctl"		},
> +  { 15, 1, "c0_ebase"		},
> +  { 16, 1, "c0_config1"		},
> +  { 16, 2, "c0_config2"		},
> +  { 16, 3, "c0_config3"		},
> +  { 18, 1, "c0_watchlo1"	},
> +  { 19, 1, "c0_watchhi1"	},
> +  { 25, 1, "c0_perfval0"	},
> +  { 25, 2, "c0_perfctl1"	},
> +  { 25, 3, "c0_perfval1"	},
> +  { 27, 1, "c0_cacheerrd"	},
> +  { 28, 1, "c0_dataloi"		},
> +  { 28, 2, "c0_taglod"		},
> +  { 28, 3, "c0_datalod"		},
> +  { 29, 1, "c0_datahii"		},
> +  { 29, 2, "c0_taghid"		},
> +  { 29, 3, "c0_datahid"		},
> +};
> +

The vast majority of these registers are defined in the mips{32,64}r3 
architecture reference manual.

It seems like we should find a way to factor out all the common things, 
and only supply overrides for register/select values that are 'Reserved 
for Implementations'

David Daney



More information about the Binutils mailing list