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>
This commit is contained in:
Dimitar Dimitrov 2024-01-22 18:11:36 +02:00 committed by Corinna Vinschen
parent d5c4edca81
commit 276dd12f69
1 changed files with 1 additions and 14 deletions

View File

@ -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