[patch][rfa] -opcode-slots: Handling of short insns
Dave Brolley
brolley@redhat.com
Wed Jan 28 19:34:00 GMT 2004
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 <brolley@redhat.com>
>
> * 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 <brolley@redhat.com>
>
> * 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 <brolley@redhat.com>
>
> * 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 <brolley@redhat.com>
>
> * 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 <brolley@redhat.com>
>
> * mepcfgtool.c (generate_simulator_script): Generate
> --timer-channel-bitw
>
>
>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: decode.patch.txt
URL: <http://sourceware.org/pipermail/cgen/attachments/20040128/e2121112/attachment.txt>
More information about the Cgen
mailing list