diff options
author | Max Filippov <jcmvbkbc@gmail.com> | 2017-05-03 13:13:52 -0700 |
---|---|---|
committer | Max Filippov <jcmvbkbc@gmail.com> | 2022-11-28 18:16:12 -0800 |
commit | d0a2cfbd3141dae38498fa077b01ae6bb394462b (patch) | |
tree | 8cb6fc2a729622c8b9dd3cbbce771a418e3a088f /bfd/xtensa-isa.c | |
parent | cb44f89ce977b1ab2d4063f2487950bddfb75bc7 (diff) | |
download | gdb-d0a2cfbd3141dae38498fa077b01ae6bb394462b.zip gdb-d0a2cfbd3141dae38498fa077b01ae6bb394462b.tar.gz gdb-d0a2cfbd3141dae38498fa077b01ae6bb394462b.tar.bz2 |
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.
Diffstat (limited to 'bfd/xtensa-isa.c')
-rw-r--r-- | bfd/xtensa-isa.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/bfd/xtensa-isa.c b/bfd/xtensa-isa.c index 63efbd4..9919195 100644 --- a/bfd/xtensa-isa.c +++ b/bfd/xtensa-isa.c @@ -23,6 +23,7 @@ #include "libbfd.h" #include "xtensa-isa.h" #include "xtensa-isa-internal.h" +#include "xtensa-dynconfig.h" static xtensa_isa_status xtisa_errno; static char xtisa_error_msg[1024]; @@ -232,10 +233,21 @@ xtensa_insnbuf_from_chars (xtensa_isa isa, extern xtensa_isa_internal xtensa_modules; +static xtensa_isa_internal *xtensa_get_modules (void) +{ + static xtensa_isa_internal *modules; + + if (!modules) + modules = (xtensa_isa_internal *) xtensa_load_config ("xtensa_modules", + &xtensa_modules, + NULL); + return modules; +} + xtensa_isa xtensa_isa_init (xtensa_isa_status *errno_p, char **error_msg_p) { - xtensa_isa_internal *isa = &xtensa_modules; + xtensa_isa_internal *isa = xtensa_get_modules (); int n, is_user; /* Set up the opcode name lookup table. */ |