xtensa: allow dynamic configuration
authorMax Filippov <jcmvbkbc@gmail.com>
Wed, 3 May 2017 20:13:52 +0000 (13:13 -0700)
committerMax Filippov <jcmvbkbc@gmail.com>
Tue, 29 Nov 2022 02:16:12 +0000 (18:16 -0800)
commitd0a2cfbd3141dae38498fa077b01ae6bb394462b
tree8cb6fc2a729622c8b9dd3cbbce771a418e3a088f
parentcb44f89ce977b1ab2d4063f2487950bddfb75bc7
xtensa: allow dynamic configuration

Import include/xtensa-dynconfig.h that defines XCHAL_* macros as fields
of a structure returned from the xtensa_get_config_v<x> function call.
Define that structure and fill it with default parameter values
specified in the include/xtensa-config.h.
Define reusable function xtensa_load_config that tries to load
configuration and return an address of an exported object from it.
Define functions xtensa_get_config_v{1,2} that use xtensa_load_config
to get structures xtensa_config_v{1,2}, either dynamically configured
or the default.

bfd/
* Makefile.am (BFD32_BACKENDS, BFD32_BACKENDS_CFILES): Append
xtensa-dynconfig.c.
* Makefile.in: Regenerate.
* configure: Regenerate.
* configure.ac (xtensa_elf32_be_vec, xtensa_elf32_le_vec): Add
xtensa-dynconfig.lo to the tb.
* elf32-xtensa.c (xtensa-config.h): Replace #include with
xtensa-dynconfig.h.
(XSHAL_ABI, XTHAL_ABI_WINDOWED, XTHAL_ABI_CALL0): Remove
definitions.
* xtensa-dynconfig.c: New file.
* xtensa-isa.c (xtensa-dynconfig.h): New #include.
(xtensa_get_modules): New function.
(xtensa_isa_init): Call xtensa_get_modules instead of taking
address of global xtensa_modules.

gas/
* config/tc-xtensa.c (xtensa-config.h): Replace #include with
xtensa-dynconfig.h.
(XTHAL_ABI_WINDOWED, XTHAL_ABI_CALL0, XTENSA_MARCH_EARLIEST):
Remove definitions.
* config/tc-xtensa.h (xtensa-config.h): Replace #include with
xtensa-dynconfig.h.
* config/xtensa-relax.c (xtensa-config.h): Replace #include with
xtensa-dynconfig.h.
(XCHAL_HAVE_WIDE_BRANCHES): Remove definition.

include/
* xtensa-dynconfig.h: New file.

ld/
* emultempl/xtensaelf.em (xtensa-config.h): Replace #include
with xtensa-dynconfig.h.
(XTHAL_ABI_WINDOWED, XTHAL_ABI_CALL0): Remove definitions.
12 files changed:
bfd/Makefile.am
bfd/Makefile.in
bfd/configure
bfd/configure.ac
bfd/elf32-xtensa.c
bfd/xtensa-dynconfig.c [new file with mode: 0644]
bfd/xtensa-isa.c
gas/config/tc-xtensa.c
gas/config/tc-xtensa.h
gas/config/xtensa-relax.c
include/xtensa-dynconfig.h [new file with mode: 0644]
ld/emultempl/xtensaelf.em