OpenRISC port
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v4 Latest3 patches 0 repliesNew
- v33 patches 0 repliesSuperseded
- v23 patches 0 repliesSuperseded
Changes in v4 from the cover letter
- Fix tabs formatting pointed out by Segher
- Fix comment formatting and typos pointed out by Segher
- Fix for sign/zero extention login in md file from Richard
- Remove usages of ATTRIBUTE_UNUSED suggested by Segher
- Remove need for init/fini, removing crti/n.S files
- Add support for -static-pie in LINK_SPEC suggsted by Szabolcs
Patches in v4 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/3 | or1k: libgcc: initial support for openrisclibgcc/ libgcc/ libgcc/ +2 more | +397 | 0 replies | |
| 2/3 | or1k: testsuite: initial support for openriscgcc/ gcc/ gcc/ +26 more | +253 | 0 replies | |
| 3/3 | or1k: gcc: initial support for openriscgcc/ gcc/ gcc/ +17 more | +4113 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v4 yet.
Cover letter [OpenRISC] [PATCH v4 0/3] OpenRISC port
Hello,
As you can see this is v4 of the OpenRISC port patch series, I just want to mention that there are a few things pointed out during the v3 review that I have not fixed, and do not plan before pushing upstream. These are either because I didn't feel they made the code easier to read or they were things that could wait unil after upstreaming. These include:
(not changed)
- libgcc !cmov 1cyc improvements suggested by Richard
- gcc eliminations refactorings suggested by Segher
- leaving out empty constraint strings suggested by Segher
- implementing TARGET_ISNS_COST suggested by Segher
Please let me know if you have concerns; now onto the patches:
Changes Since v3:
- Fix tabs formatting pointed out by Segher
- Fix comment formatting and typos pointed out by Segher
- Fix for sign/zero extention login in md file from Richard
- Remove usages of ATTRIBUTE_UNUSED suggested by Segher
- Remove need for init/fini, removing crti/n.S files
- Add support for -static-pie in LINK_SPEC suggsted by Szabolcs
Changes Since v2:
- Add RTEMS patches from Joel Sherrill
- Disable t-softfp-excl as suggsted by Joseph Myers
- Add new architecture flags needed to run on real FPGA's found in testing
* -mror - enable l.ror (rotate right)
* -mshftimm - enable shift/rorate by immediate instructions
- Binutils requirements are now in upstream git
Changes Since v1:
- Document options in invoke.texi suggested by Joseph Myers
- Remove obsolete/incorrect macros suggested by Joseph Myers
- Documented or1k.c functions as requested by Jeff Law
- Add epilogue barriers suggested by Jeff Law
- Define SPECULATION_SAFE_VALUE suggested by Jeff Law
- Switch to init/fini array suggested by Richard Henderson
- Define and document multilib flags to enable disable instructions only available on some CPU cores as requested on OpenRISC mailing list.
Since February this year I have been working on an OpenRISC clean room rewrite.
http://stffrdhrn.github.io/software/embedded/openrisc/2018/02/03/openrisc_gcc_rewrite.html
As per the article, the old port had issues with some of the owners signing over FSF copyright. To get around this I discussed options with the group and in the end I opted for a clean room rewrite.
The new code base has been written by me with lots of help from Richard Henderson. I trust that both of us have our FSF GCC copyright's in place.
# Testing
We have been running the GCC testsuite with newlib and musl libc. The results are good. See results published in a test build/release here:
- https://github.com/stffrdhrn/gcc/releases/tag/or1k-9.0.0-20181106
# Building
To build this requires the latest binutils upstream master i.e. 2.31.52. Also, due to removing need for init and fini it requires the latest changes on newlib master.
-Stafford
Stafford Horne (3):
or1k: libgcc: initial support for openrisc
or1k: testsuite: initial support for openrisc
or1k: gcc: initial support for openrisc
gcc/common/config/or1k/or1k-common.c | 41 + gcc/config.gcc | 45 + gcc/config/or1k/constraints.md | 55 + gcc/config/or1k/elf.h | 42 + gcc/config/or1k/elf.opt | 33 + gcc/config/or1k/linux.h | 45 + gcc/config/or1k/or1k-protos.h | 38 + gcc/config/or1k/or1k.c | 2183 +++++++++++++++++ gcc/config/or1k/or1k.h | 392 +++ gcc/config/or1k/or1k.md | 897 +++++++ gcc/config/or1k/or1k.opt | 67 + gcc/config/or1k/predicates.md | 84 + gcc/config/or1k/rtems.h | 30 + gcc/config/or1k/t-or1k | 22 + gcc/config/or1k/t-rtems | 3 + gcc/configure | 12 + gcc/configure.ac | 12 + gcc/doc/install.texi | 19 + gcc/doc/invoke.texi | 68 + gcc/doc/md.texi | 25 + .../gcc.c-torture/execute/20101011-1.c | 3 + gcc/testsuite/gcc.dg/20020312-2.c | 2 + gcc/testsuite/gcc.dg/attr-alloc_size-11.c | 4 +- gcc/testsuite/gcc.dg/builtin-apply2.c | 2 +- gcc/testsuite/gcc.dg/nop.h | 2 + .../torture/stackalign/builtin-apply-2.c | 2 +- gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c | 2 +- gcc/testsuite/gcc.dg/tree-ssa/reassoc-33.c | 2 +- gcc/testsuite/gcc.dg/tree-ssa/reassoc-34.c | 2 +- gcc/testsuite/gcc.dg/tree-ssa/reassoc-35.c | 2 +- gcc/testsuite/gcc.dg/tree-ssa/reassoc-36.c | 2 +- gcc/testsuite/gcc.target/or1k/args-1.c | 19 + gcc/testsuite/gcc.target/or1k/args-2.c | 15 + gcc/testsuite/gcc.target/or1k/cmov-1.c | 8 + gcc/testsuite/gcc.target/or1k/cmov-2.c | 9 + gcc/testsuite/gcc.target/or1k/div-mul-1.c | 9 + gcc/testsuite/gcc.target/or1k/div-mul-2.c | 9 + gcc/testsuite/gcc.target/or1k/or1k.exp | 41 + gcc/testsuite/gcc.target/or1k/return-1.c | 10 + gcc/testsuite/gcc.target/or1k/return-2.c | 19 + gcc/testsuite/gcc.target/or1k/return-3.c | 19 + gcc/testsuite/gcc.target/or1k/return-4.c | 19 + gcc/testsuite/gcc.target/or1k/ror-1.c | 8 + gcc/testsuite/gcc.target/or1k/ror-2.c | 9 + gcc/testsuite/gcc.target/or1k/ror-3.c | 8 + gcc/testsuite/gcc.target/or1k/shftimm-1.c | 8 + gcc/testsuite/gcc.target/or1k/shftimm-2.c | 8 + gcc/testsuite/gcc.target/or1k/sibcall-1.c | 18 + gcc/testsuite/lib/target-supports.exp | 1 + libgcc/config.host | 12 + libgcc/config/or1k/lib1funcs.S | 222 ++ libgcc/config/or1k/linux-unwind.h | 87 + libgcc/config/or1k/sfp-machine.h | 54 + libgcc/config/or1k/t-or1k | 22 + 54 files changed, 4763 insertions(+), 9 deletions(-) create mode 100644 gcc/common/config/or1k/or1k-common.c create mode 100644 gcc/config/or1k/constraints.md create mode 100644 gcc/config/or1k/elf.h create mode 100644 gcc/config/or1k/elf.opt create mode 100644 gcc/config/or1k/linux.h create mode 100644 gcc/config/or1k/or1k-protos.h create mode 100644 gcc/config/or1k/or1k.c create mode 100644 gcc/config/or1k/or1k.h create mode 100644 gcc/config/or1k/or1k.md create mode 100644 gcc/config/or1k/or1k.opt create mode 100644 gcc/config/or1k/predicates.md create mode 100644 gcc/config/or1k/rtems.h create mode 100644 gcc/config/or1k/t-or1k create mode 100644 gcc/config/or1k/t-rtems create mode 100644 gcc/testsuite/gcc.target/or1k/args-1.c create mode 100644 gcc/testsuite/gcc.target/or1k/args-2.c create mode 100644 gcc/testsuite/gcc.target/or1k/cmov-1.c create mode 100644 gcc/testsuite/gcc.target/or1k/cmov-2.c create mode 100644 gcc/testsuite/gcc.target/or1k/div-mul-1.c create mode 100644 gcc/testsuite/gcc.target/or1k/div-mul-2.c create mode 100644 gcc/testsuite/gcc.target/or1k/or1k.exp create mode 100644 gcc/testsuite/gcc.target/or1k/return-1.c create mode 100644 gcc/testsuite/gcc.target/or1k/return-2.c create mode 100644 gcc/testsuite/gcc.target/or1k/return-3.c create mode 100644 gcc/testsuite/gcc.target/or1k/return-4.c create mode 100644 gcc/testsuite/gcc.target/or1k/ror-1.c create mode 100644 gcc/testsuite/gcc.target/or1k/ror-2.c create mode 100644 gcc/testsuite/gcc.target/or1k/ror-3.c create mode 100644 gcc/testsuite/gcc.target/or1k/shftimm-1.c create mode 100644 gcc/testsuite/gcc.target/or1k/shftimm-2.c create mode 100644 gcc/testsuite/gcc.target/or1k/sibcall-1.c create mode 100644 libgcc/config/or1k/lib1funcs.S create mode 100644 libgcc/config/or1k/linux-unwind.h create mode 100644 libgcc/config/or1k/sfp-machine.h create mode 100644 libgcc/config/or1k/t-or1k
Signature · 1 line
2.17.2