Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add big-endian support #172

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open

Add big-endian support #172

wants to merge 2 commits into from

Conversation

zeldin
Copy link

@zeldin zeldin commented Aug 2, 2020

This PR adds an option to picorv32 to build it in big endian mode.
The instruction stream format mandated by UCB for big endian systems can be enabled with a separate option. If this option is not enabled, an instruction stream generated for LE can be used (but note that sub-word rodata, such as string literals, will not be correct) in lieu of a big endian tool chain.

Tested on iCE40 HX8K hardware, including compressed instruction streams in the big endian format.

Signed-off-by: Marcus Comstedt <marcus@mc.pp.se>
@zeldin
Copy link
Author

zeldin commented Aug 16, 2020

Note: I have also updated binutils and gcc to support big endian code generation, here and here.

Between draft-20181101-ebe1ca4 and draft-20190622-6993896 of the
RISC-V Instruction Set Manual, the wording was changed from requiring
"natural endianness" of instruction parcels to require them to be
little endian.

Update the big endian instruction pipe to reflect the newer requirement.

Signed-off-by: Marcus Comstedt <marcus@mc.pp.se>
@zeldin
Copy link
Author

zeldin commented Oct 20, 2020

I updated the code to follow the latest version of the RISC-V specification which calls for fully little-endian instruction encoding on big-endian RISC-V.

Updated toolchains are here:
https://github.com/zeldin/riscv-binutils-gdb/commits/big-endian
https://github.com/zeldin/riscv-gcc/commits/big-endian

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant