Message ID | 20190201004012.13237-1-aik@ozlabs.ru |
---|---|
State | New |
Headers | show |
Series | [qemu] spapr/rtas: Force big endian compile for rtas | expand |
On 01/02/2019 11:40, Alexey Kardashevskiy wrote: > At the moment the rtas's Makefile uses generic QEMU rules which means > that when QEMU is compiled on a little endian system, the spapr-rtas.bin > is compiled as little endian too which is incorrect as it is always > executed in big endian mode. > > This enforces -mbig by defining %.o:%.S rule as spapr-rtas.bin is > a standalone guest binary which should not depend on QEMU flags anyway. Bag? Good? Useless? :) > > Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> > --- > pc-bios/spapr-rtas/Makefile | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/pc-bios/spapr-rtas/Makefile b/pc-bios/spapr-rtas/Makefile > index f26dd42..4b9bb12 100644 > --- a/pc-bios/spapr-rtas/Makefile > +++ b/pc-bios/spapr-rtas/Makefile > @@ -14,8 +14,11 @@ $(call set-vpath, $(SRC_PATH)/pc-bios/spapr-rtas) > > build-all: spapr-rtas.bin > > +%.o: %.S > + $(call quiet-command,$(CCAS) -mbig -c -o $@ $<,"CCAS","$(TARGET_DIR)$@") > + > %.img: %.o > - $(call quiet-command,$(CC) -nostdlib -o $@ $<,"Building","$(TARGET_DIR)$@") > + $(call quiet-command,$(CC) -nostdlib -mbig -o $@ $<,"Building","$(TARGET_DIR)$@") > > %.bin: %.img > $(call quiet-command,$(OBJCOPY) -O binary -j .text $< $@,"Building","$(TARGET_DIR)$@") >
On Wed, Feb 13, 2019 at 05:00:50PM +1100, Alexey Kardashevskiy wrote: > > > On 01/02/2019 11:40, Alexey Kardashevskiy wrote: > > At the moment the rtas's Makefile uses generic QEMU rules which means > > that when QEMU is compiled on a little endian system, the spapr-rtas.bin > > is compiled as little endian too which is incorrect as it is always > > executed in big endian mode. > > > > This enforces -mbig by defining %.o:%.S rule as spapr-rtas.bin is > > a standalone guest binary which should not depend on QEMU flags anyway. > > Bag? Good? Useless? :) I missed the original send of this, I'm afraid. Looks like a good idea. > > > > > > Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> > > --- > > pc-bios/spapr-rtas/Makefile | 5 ++++- > > 1 file changed, 4 insertions(+), 1 deletion(-) > > > > diff --git a/pc-bios/spapr-rtas/Makefile b/pc-bios/spapr-rtas/Makefile > > index f26dd42..4b9bb12 100644 > > --- a/pc-bios/spapr-rtas/Makefile > > +++ b/pc-bios/spapr-rtas/Makefile > > @@ -14,8 +14,11 @@ $(call set-vpath, $(SRC_PATH)/pc-bios/spapr-rtas) > > > > build-all: spapr-rtas.bin > > > > +%.o: %.S > > + $(call quiet-command,$(CCAS) -mbig -c -o $@ $<,"CCAS","$(TARGET_DIR)$@") > > + > > %.img: %.o > > - $(call quiet-command,$(CC) -nostdlib -o $@ $<,"Building","$(TARGET_DIR)$@") > > + $(call quiet-command,$(CC) -nostdlib -mbig -o $@ $<,"Building","$(TARGET_DIR)$@") > > > > %.bin: %.img > > $(call quiet-command,$(OBJCOPY) -O binary -j .text $< $@,"Building","$(TARGET_DIR)$@") > > >
On 14/02/2019 14:30, David Gibson wrote: > On Wed, Feb 13, 2019 at 05:00:50PM +1100, Alexey Kardashevskiy wrote: >> >> >> On 01/02/2019 11:40, Alexey Kardashevskiy wrote: >>> At the moment the rtas's Makefile uses generic QEMU rules which means >>> that when QEMU is compiled on a little endian system, the spapr-rtas.bin >>> is compiled as little endian too which is incorrect as it is always >>> executed in big endian mode. >>> >>> This enforces -mbig by defining %.o:%.S rule as spapr-rtas.bin is >>> a standalone guest binary which should not depend on QEMU flags anyway. >> >> Bag? Good? Useless? :) > > I missed the original send of this, I'm afraid. Looks like a good > idea. Totally forgot this one. It is still in pw: https://patchwork.ozlabs.org/patch/1034543/ Or you want a repost? > > >> >> >>> >>> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> >>> --- >>> pc-bios/spapr-rtas/Makefile | 5 ++++- >>> 1 file changed, 4 insertions(+), 1 deletion(-) >>> >>> diff --git a/pc-bios/spapr-rtas/Makefile b/pc-bios/spapr-rtas/Makefile >>> index f26dd42..4b9bb12 100644 >>> --- a/pc-bios/spapr-rtas/Makefile >>> +++ b/pc-bios/spapr-rtas/Makefile >>> @@ -14,8 +14,11 @@ $(call set-vpath, $(SRC_PATH)/pc-bios/spapr-rtas) >>> >>> build-all: spapr-rtas.bin >>> >>> +%.o: %.S >>> + $(call quiet-command,$(CCAS) -mbig -c -o $@ $<,"CCAS","$(TARGET_DIR)$@") >>> + >>> %.img: %.o >>> - $(call quiet-command,$(CC) -nostdlib -o $@ $<,"Building","$(TARGET_DIR)$@") >>> + $(call quiet-command,$(CC) -nostdlib -mbig -o $@ $<,"Building","$(TARGET_DIR)$@") >>> >>> %.bin: %.img >>> $(call quiet-command,$(OBJCOPY) -O binary -j .text $< $@,"Building","$(TARGET_DIR)$@") >>> >> >
On Wed, Jun 12, 2019 at 10:29:55AM +1000, Alexey Kardashevskiy wrote: > > > On 14/02/2019 14:30, David Gibson wrote: > > On Wed, Feb 13, 2019 at 05:00:50PM +1100, Alexey Kardashevskiy wrote: > >> > >> > >> On 01/02/2019 11:40, Alexey Kardashevskiy wrote: > >>> At the moment the rtas's Makefile uses generic QEMU rules which means > >>> that when QEMU is compiled on a little endian system, the spapr-rtas.bin > >>> is compiled as little endian too which is incorrect as it is always > >>> executed in big endian mode. > >>> > >>> This enforces -mbig by defining %.o:%.S rule as spapr-rtas.bin is > >>> a standalone guest binary which should not depend on QEMU flags anyway. > >> > >> Bag? Good? Useless? :) > > > > I missed the original send of this, I'm afraid. Looks like a good > > idea. > > Totally forgot this one. It is still in pw: > https://patchwork.ozlabs.org/patch/1034543/ > > Or you want a repost? Repost, please.
diff --git a/pc-bios/spapr-rtas/Makefile b/pc-bios/spapr-rtas/Makefile index f26dd42..4b9bb12 100644 --- a/pc-bios/spapr-rtas/Makefile +++ b/pc-bios/spapr-rtas/Makefile @@ -14,8 +14,11 @@ $(call set-vpath, $(SRC_PATH)/pc-bios/spapr-rtas) build-all: spapr-rtas.bin +%.o: %.S + $(call quiet-command,$(CCAS) -mbig -c -o $@ $<,"CCAS","$(TARGET_DIR)$@") + %.img: %.o - $(call quiet-command,$(CC) -nostdlib -o $@ $<,"Building","$(TARGET_DIR)$@") + $(call quiet-command,$(CC) -nostdlib -mbig -o $@ $<,"Building","$(TARGET_DIR)$@") %.bin: %.img $(call quiet-command,$(OBJCOPY) -O binary -j .text $< $@,"Building","$(TARGET_DIR)$@")
At the moment the rtas's Makefile uses generic QEMU rules which means that when QEMU is compiled on a little endian system, the spapr-rtas.bin is compiled as little endian too which is incorrect as it is always executed in big endian mode. This enforces -mbig by defining %.o:%.S rule as spapr-rtas.bin is a standalone guest binary which should not depend on QEMU flags anyway. Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> --- pc-bios/spapr-rtas/Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)