Adding new register
Paul Brook
paul@codesourcery.com
Thu Jan 6 15:42:00 GMT 2005
On Thursday 06 January 2005 06:52, Petar Penchev wrote:
> Hello All,
> The GCC port I am working on now supports two versions of a same CPU core.
> The differences were only few instructions.
> Then a new regoster had been added to the second version of CPU. The main
> problem is that this register is 40 bits wide and th CPU has PUSH and
> POP instructions for it, as well as some move instructions. It is also
> availible in 32,16 and 8 bit mode, however PUSH / POP instructions store /
> load 40 bits. I in defined my_target-modes.def new mode EDI with
> following line
> INT_MODE(EDI,5);. I have defined 'pushedi' and 'popedi' patterns but I
> still cann't make GCC to push/pop this register. GCC uses it as a one
> level stack.
>
> What else should I do to make GCC to store/load this 40 bit register
> to/from stack ?
You way want to look at how other ports generate function epilogue and
prologue. For example the Arm port uses special instructions to save/restore
floating point registers in their raw format.
N.B. The arm port still uses text epilogues, so may not be a good example. The
prologue is correctly generated as RTL though.
Paul
More information about the Gcc
mailing list