[Libre-soc-isa] [Bug 529] scheme for supporting 16/48-bit instructions on PowerPC LE with full backward compatibility

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Sun Nov 22 20:15:10 GMT 2020


https://bugs.libre-soc.org/show_bug.cgi?id=529

--- Comment #10 from Alexandre Oliva <oliva at gnu.org> ---
Uhh, sorry, the comment above was really meant for bug 238.  I'll copy it
there.  There were elements of the proposal to use odd addresses that would be
relevant here, but that I haven't elaborated on.

Specifically, we could make that work for both BE and LE: in 32-bit mode, the
most significant byte (regardless of code endianness) is the one that might
hold the 8-bit nop-ish insn to switch to 16-bit mode, since that's where the
EXT bits are.

As for 16-bit mode, the 4n+1 address would be one of the two bytes of the insn
full-contained in the word, and 4n+2 would be the other, regardless of
endianness.

At 4n+3 addresses, we'd have to go for the least significant byte of the word
at 4n for the first half of the 16-bit insn, again the one holding the opcode,
so that we can tell whether it's a mode-switching nop or we are to fetch the
second half from the next word.

If we're using misaligned 32-bit addresses, again we ought to use the LSB half
of the lower-address word as the MSB of the insn, to recognize the opcode
(possibly an 8-bit nop), and the MSB half of the higher-address word for the
remaining bits of the 32-bit insn split across two words.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Libre-SOC-ISA mailing list