Attached the wrong file..... Dave Brolley wrote: > Hi, > > This patch fixes a problem I ran across while working on an internal > port. Incorrect opcodes and masks were sometimes being generated for > the short insns of variable length ISAs because of two problems in > -opcode-slots: > > 1) The test of bit positions against the insn-length was off by one. > Thjs could lead to incorrect opcode bits being generated. > > 2) While the 'compute' function correctly generated zeroes for the > extra bits when computing 'opcode', it was also generating zeroes for > these bits when computing 'opcode-mask', thus rendering these bits > irrelevent. This could lead to the generation of numerous unreachable > cases in the generated decoder switch. > > The patch corrects the comparison of bit position against the > insn-length and also allows the caller of 'compute' to specify the > default bit value which should be generated bits beyond the length of > a short insn. This allows 0 to be specified when computing 'opcode' > and 1 to be specified when computing opcode-mask. The patch also > changes some of the logit calls to print values in hex which is more > appropriate when examining bitmasks > > This patch corrects the problem encountered with my internal port. I > know of no other port which is affected by this bug. I have tested it > against frv and xstormy16 and verified no changes to the generated > decoders. > > OK to commit? > > Dave > >------------------------------------------------------------------------ > >2004-01-28 Dave Brolley > > * decode.scm (-opcode-slots): For short insns, generate 'opcode' with > zeroes in the extra bit positions and generate 'opcode-mask' with ones > in the extra bit positions. > > > >------------------------------------------------------------------------ > >cgen/ChangeLog: >2004-01-26 Dave Brolley > > * decode.scm (-opcode-slots): For short insns, generate 'opcode' with > zeroes in the extra bit positions and generate 'opcode-mask' with ones > in the extra bit positions. > >cgen/cpu/ChangeLog.RedHat: >2004-01-26 Dave Brolley > > * mep.opc (OPTION_MASK): Remove dangerous whitspace following a > backslash intended as a line continuation. > >sid/main/dynamic/ChangeLog.RedHat: >2004-01-26 Dave Brolley > > * mepCfg.h (allocate_timer, configure_timer): New methods of MepBoardCfg. > (set_opt_timer_channel_bitw): New method of MepBoardCfg. > (timer_channel_bitw): New member of MepBoardCfg. > * mepCfg.cxx (MepBoardCfg): Initialize timer_channel_bitw. > (set_dmem_bank_num): Allow dmem_bank_num to be set to zero. > (map_imem_dmem): Correct fmem_base_address for case of no dmem. > Initialize dmem_base[0]. > (MepBoardCfg::write_config): Call configure_timer. Move setup of timer > interrupt pins to configure_timer. Handle case where dmem_bank_num is > zero. > (add_timer): Move allocation, scheduling and connection of timer to > allocate_timer and configure_timer. > (allocate_timer, configure_timer): New methods of MepBoardCfg. > (configure_dmac): Use timer_channel_bitw. > (set_opt_timer_channel_bitw): New method of MepBoardCfg. > * mainDynamic.cxx (usage): Document --timer-channel-bitw. > (option_num): Add opt_timer_channel_bitw. > (long_options): Add timer-channel-bitw. > (main): Handle opt_timer_channel_bitw. > * commonCfg.h (set_opt_timer_channel_bitw): New prototype. > >utils/mep/ChangeLog: >2004-01-26 Dave Brolley > > * mepcfgtool.c (generate_simulator_script): Generate > --timer-channel-bitw > > >