Skip to content

Commit 134ab17

Browse files
committed
load_aout: replace bswap_needed with big_endian
Targets know whether they are big-endian more than they know if the endianness is different from the host: the former is mostly a constant, at least in machine creation code, while the latter has to be computed with TARGET_BIG_ENDIAN != HOST_BIG_ENDIAN or something like that. load_aout, however, takes a "bswap_needed" argument. Replace it with a "big_endian" argument; even though all users are big-endian, it is cheap enough to keep the optional swapping functionality even for little-endian boards. Signed-off-by: Paolo Bonzini <[email protected]>
1 parent cc3d262 commit 134ab17

File tree

6 files changed

+7
-31
lines changed

6 files changed

+7
-31
lines changed

hw/core/loader.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ static void bswap_ahdr(struct exec *e)
226226

227227

228228
ssize_t load_aout(const char *filename, hwaddr addr, int max_sz,
229-
int bswap_needed, hwaddr target_page_size)
229+
bool big_endian, hwaddr target_page_size)
230230
{
231231
int fd;
232232
ssize_t size, ret;
@@ -241,7 +241,7 @@ ssize_t load_aout(const char *filename, hwaddr addr, int max_sz,
241241
if (size < 0)
242242
goto fail;
243243

244-
if (bswap_needed) {
244+
if (big_endian != HOST_BIG_ENDIAN) {
245245
bswap_ahdr(&e);
246246
}
247247

hw/ppc/mac_newworld.c

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -197,19 +197,14 @@ static void ppc_core99_init(MachineState *machine)
197197
}
198198

199199
if (machine->kernel_filename) {
200-
int bswap_needed = 0;
201-
202-
#ifdef BSWAP_NEEDED
203-
bswap_needed = 1;
204-
#endif
205200
kernel_base = KERNEL_LOAD_ADDR;
206201
kernel_size = load_elf(machine->kernel_filename, NULL,
207202
translate_kernel_address, NULL, NULL, NULL,
208203
NULL, NULL, ELFDATA2MSB, PPC_ELF_MACHINE, 0, 0);
209204
if (kernel_size < 0) {
210205
kernel_size = load_aout(machine->kernel_filename, kernel_base,
211206
machine->ram_size - kernel_base,
212-
bswap_needed, TARGET_PAGE_SIZE);
207+
true, TARGET_PAGE_SIZE);
213208
}
214209
if (kernel_size < 0) {
215210
kernel_size = load_image_targphys(machine->kernel_filename,

hw/ppc/mac_oldworld.c

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -153,19 +153,14 @@ static void ppc_heathrow_init(MachineState *machine)
153153
}
154154

155155
if (machine->kernel_filename) {
156-
int bswap_needed = 0;
157-
158-
#ifdef BSWAP_NEEDED
159-
bswap_needed = 1;
160-
#endif
161156
kernel_base = KERNEL_LOAD_ADDR;
162157
kernel_size = load_elf(machine->kernel_filename, NULL,
163158
translate_kernel_address, NULL, NULL, NULL,
164159
NULL, NULL, ELFDATA2MSB, PPC_ELF_MACHINE, 0, 0);
165160
if (kernel_size < 0) {
166161
kernel_size = load_aout(machine->kernel_filename, kernel_base,
167162
machine->ram_size - kernel_base,
168-
bswap_needed, TARGET_PAGE_SIZE);
163+
true, TARGET_PAGE_SIZE);
169164
}
170165
if (kernel_size < 0) {
171166
kernel_size = load_image_targphys(machine->kernel_filename,

hw/sparc/sun4m.c

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -233,20 +233,13 @@ static unsigned long sun4m_load_kernel(const char *kernel_filename,
233233

234234
kernel_size = 0;
235235
if (linux_boot) {
236-
int bswap_needed;
237-
238-
#ifdef BSWAP_NEEDED
239-
bswap_needed = 1;
240-
#else
241-
bswap_needed = 0;
242-
#endif
243236
kernel_size = load_elf(kernel_filename, NULL,
244237
translate_kernel_address, NULL,
245238
NULL, NULL, NULL, NULL,
246239
ELFDATA2MSB, EM_SPARC, 0, 0);
247240
if (kernel_size < 0)
248241
kernel_size = load_aout(kernel_filename, KERNEL_LOAD_ADDR,
249-
RAM_size - KERNEL_LOAD_ADDR, bswap_needed,
242+
RAM_size - KERNEL_LOAD_ADDR, true,
250243
TARGET_PAGE_SIZE);
251244
if (kernel_size < 0)
252245
kernel_size = load_image_targphys(kernel_filename,

hw/sparc64/sun4u.c

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -168,21 +168,14 @@ static uint64_t sun4u_load_kernel(const char *kernel_filename,
168168

169169
kernel_size = 0;
170170
if (linux_boot) {
171-
int bswap_needed;
172-
173-
#ifdef BSWAP_NEEDED
174-
bswap_needed = 1;
175-
#else
176-
bswap_needed = 0;
177-
#endif
178171
kernel_size = load_elf(kernel_filename, NULL, NULL, NULL, kernel_entry,
179172
kernel_addr, &kernel_top, NULL,
180173
ELFDATA2MSB, EM_SPARCV9, 0, 0);
181174
if (kernel_size < 0) {
182175
*kernel_addr = KERNEL_LOAD_ADDR;
183176
*kernel_entry = KERNEL_LOAD_ADDR;
184177
kernel_size = load_aout(kernel_filename, KERNEL_LOAD_ADDR,
185-
RAM_size - KERNEL_LOAD_ADDR, bswap_needed,
178+
RAM_size - KERNEL_LOAD_ADDR, true,
186179
TARGET_PAGE_SIZE);
187180
}
188181
if (kernel_size < 0) {

include/hw/loader.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ ssize_t load_elf(const char *filename,
190190
void load_elf_hdr(const char *filename, void *hdr, bool *is64, Error **errp);
191191

192192
ssize_t load_aout(const char *filename, hwaddr addr, int max_sz,
193-
int bswap_needed, hwaddr target_page_size);
193+
bool big_endian, hwaddr target_page_size);
194194

195195
#define LOAD_UIMAGE_LOADADDR_INVALID (-1)
196196

0 commit comments

Comments
 (0)