[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