mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 01:33:56 -06:00
arm: boot: Support big-endian elfs
Support ARM big-endian ELF files in system-mode emulation. When loading an elf, determine the endianness mode expected by the elf, and set the relevant CPU state accordingly. With this, big-endian modes are now fully supported via system-mode LE, so there is no need to restrict the elf loading to the TARGET endianness so the ifdeffery on TARGET_WORDS_BIGENDIAN goes away. Signed-off-by: Peter Crosthwaite <crosthwaite.peter@gmail.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> [PMM: fix typo in comments] Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
7ef295ea5b
commit
9776f63645
2 changed files with 92 additions and 10 deletions
|
@ -16,6 +16,13 @@
|
|||
#include "qemu/notify.h"
|
||||
#include "cpu.h"
|
||||
|
||||
typedef enum {
|
||||
ARM_ENDIANNESS_UNKNOWN = 0,
|
||||
ARM_ENDIANNESS_LE,
|
||||
ARM_ENDIANNESS_BE8,
|
||||
ARM_ENDIANNESS_BE32,
|
||||
} arm_endianness;
|
||||
|
||||
/* armv7m.c */
|
||||
DeviceState *armv7m_init(MemoryRegion *system_memory, int mem_size, int num_irq,
|
||||
const char *kernel_filename, const char *cpu_model);
|
||||
|
@ -103,6 +110,8 @@ struct arm_boot_info {
|
|||
* changing to non-secure state if implementing a non-secure boot
|
||||
*/
|
||||
bool secure_board_setup;
|
||||
|
||||
arm_endianness endianness;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue