diff options
author | Dimitar Dimitrov <dimitar@dinux.eu> | 2024-01-22 18:11:36 +0200 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2024-01-23 09:49:02 +0100 |
commit | 276dd12f69b1cf113a009da331d3bcfc4783fdce (patch) | |
tree | 2db515b59245c64779dc7a4c03bf2b08bf3c7996 | |
parent | d5c4edca81c87c784b4420cc194bea07436e0ab7 (diff) | |
download | newlib-276dd12f69b1cf113a009da331d3bcfc4783fdce.zip newlib-276dd12f69b1cf113a009da331d3bcfc4783fdce.tar.gz newlib-276dd12f69b1cf113a009da331d3bcfc4783fdce.tar.bz2 |
libgloss: pru: Trim crt0-minrt.o
Strip a few more instructions from crt0-minrt.S:
- Remove "halt" and rely on the infinite loop after main()'s return.
- Remove main()'s argc and argv argument initialization. Host loader
does not set them, and typical firmware does not use them, either.
- Remove the __dso_handle symbol.
This should be safe because the default crt0.S is fully standards
compliant. Whereas crt0-minrt.S has been documented from the beginning
to intentionally miss features in order to reduce firmware size, while
still enabling typical PRU firmware to operate.
Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
-rw-r--r-- | libgloss/pru/crt0-minrt.S | 15 |
1 files changed, 1 insertions, 14 deletions
diff --git a/libgloss/pru/crt0-minrt.S b/libgloss/pru/crt0-minrt.S index 60647d3..fa5e80a 100644 --- a/libgloss/pru/crt0-minrt.S +++ b/libgloss/pru/crt0-minrt.S @@ -38,22 +38,9 @@ _start: /* DATA and BSS are handled by the loader, so nothing to do here. */ - /* Just in case main() tries to access argc, argv[] and envp. */ - zero r14, 3 * 4 - - /* Call main. */ + /* Call main. Assume argc and argv are not used with -minrt! */ call main /* We should never reach here. */ _crt_exit: - halt jmp _crt_exit - - /* PRU obviously has no shared libraries, but dso_handle - helps to achieve better GCC test coverage. Besides, - it should be free with minrt. */ - .section .data - .global __dso_handle - .weak __dso_handle -__dso_handle: - .long 0 |