This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

best approach to move around registers bigger than word width?


Hi.

I am working on porting GCC to a processor that has 16-bit data registers and 32-bit address registers. The address registers can only be saved and restored through the data registers. ALU operations can be performed on any 16-bit register.

To load an address register, you assign it a pair of data registers, and to save an address register, you save into a pair of data registers.

The overall question is, how do I explain that to GCC?

What I have tried is in (define_expand "movhi" ...) is to split the moves into lower and upper halves of the move, and then output two qi moves. The problem is that I cannot split somethings (like SYMBOL_REFS) into subregs (or rather I don't know how, gen_lowpart aborts when passed SYMBOL_REFS).

Any help would be highly appreciated.

Jonah
ws@mars.drw.net



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]