microblaze: fix endian handling
commitpull/10/head71e7673dad
upstream. Building an allmodconfig kernel fails horribly because of endian mismatch. It turns out that the -mlittle-endian switch was not honored at all as we were using the wrong Kconfig symbol and failing to apply CPUFLAGS to the CFLAGS. Finally, the linker flags did not get set right. This addresses all three of those issues, which now lets me build both big-endian and little-endian kernels for testing. Fixes:428dbf156c
("arch: change default endian for microblaze") Fixes:206d3642d8
("arch/microblaze: add choice for endianness and update Makefile") Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Michal Simek <michal.simek@xilinx.com> Cc: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
parent
9ce9f4e4a5
commit
ac3d021048
|
@ -36,16 +36,21 @@ endif
|
|||
CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_DIV) += -mno-xl-soft-div
|
||||
CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_BARREL) += -mxl-barrel-shift
|
||||
CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR) += -mxl-pattern-compare
|
||||
CPUFLAGS-$(CONFIG_BIG_ENDIAN) += -mbig-endian
|
||||
CPUFLAGS-$(CONFIG_LITTLE_ENDIAN) += -mlittle-endian
|
||||
|
||||
ifdef CONFIG_CPU_BIG_ENDIAN
|
||||
KBUILD_CFLAGS += -mbig-endian
|
||||
KBUILD_AFLAGS += -mbig-endian
|
||||
LD += -EB
|
||||
else
|
||||
KBUILD_CFLAGS += -mlittle-endian
|
||||
KBUILD_AFLAGS += -mlittle-endian
|
||||
LD += -EL
|
||||
endif
|
||||
|
||||
CPUFLAGS-1 += $(call cc-option,-mcpu=v$(CPU_VER))
|
||||
|
||||
# r31 holds current when in kernel mode
|
||||
KBUILD_CFLAGS += -ffixed-r31 $(CPUFLAGS-1) $(CPUFLAGS-2)
|
||||
|
||||
LDFLAGS :=
|
||||
LDFLAGS_vmlinux :=
|
||||
KBUILD_CFLAGS += -ffixed-r31 $(CPUFLAGS-y) $(CPUFLAGS-1) $(CPUFLAGS-2)
|
||||
|
||||
head-y := arch/microblaze/kernel/head.o
|
||||
libs-y += arch/microblaze/lib/
|
||||
|
|
Loading…
Reference in New Issue