cgen bug with larger-than-normal instructions?

matthew green mrg@cygnus.com
Thu Sep 14 19:19:00 GMT 2000


   matthew green writes:
    > i am doing a sim port for an architecture that has 16 bit insns for
    > all but the 16-bit & 32-bit immediately load insns, which are 32-bits
    > & 48-bits long each, with the immediate value placed after the insn.
    > 
    > currently, cgen produces code that fails to compile:
    > 
    > decode.cxx:1457: implicit declaration of function `int GETIMEMUHI(...)'
    > 
    > this function is currently missing from cgen-cpu.h, but even after i
    > add it there, the problem persists.  i believe the generate code is
    > wrong, and (with an insight from bje) i have developed the following
    > patch.  it makes two changes to cgen itself:
    > 
    > 	- call GETIMEM* as "current_cpu->GETIMEM*"
   
   This is a sid-ism and as such doesn't belong in utils-cgen.scm.

yes, now you point that out i agree.

   How do the other sid ports invoke GETIMEM?

i can't find anything else that actually uses this in generated code, only
in hand written code....
   
    > 	- first argument of GETIMEM*() is "pc"
    > 
    > this allows my decoder to build, but i haven't tested that it works
    > yet (i have now pages of errors for sem.cxx to deal with).
   
   I don't quite follow why adding "pc" is necessary.

well, the function is defined as:

	inline UHI GETIMEMUHI(PCADDR pc, IADDR addr) const

so replacing `current_cpu' with `pc' seemed the right thing to do.


i don't know what the right way to do this is.


More information about the Cgen mailing list