mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-04-24 14:07:52 -04:00
kbuild: remove head-y syntax
Kbuild puts the objects listed in head-y at the head of vmlinux. Conventionally, we do this for head*.S, which contains the kernel entry point. A counter approach is to control the section order by the linker script. Actually, the code marked as __HEAD goes into the ".head.text" section, which is placed before the normal ".text" section. I do not know if both of them are needed. From the build system perspective, head-y is not mandatory. If you can achieve the proper code placement by the linker script only, it would be cleaner. I collected the current head-y objects into head-object-list.txt. It is a whitelist. My hope is it will be reduced in the long run. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Tested-by: Nick Desaulniers <ndesaulniers@google.com> Reviewed-by: Nicolas Schier <nicolas@fjasle.eu>
This commit is contained in:
parent
3216484550
commit
ce697ccee1
24 changed files with 60 additions and 67 deletions
|
@ -1070,8 +1070,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
- The values of the above variables are expanded in arch/$(SRCARCH)/Makefile.
|
- The values of the above variables are expanded in arch/$(SRCARCH)/Makefile.
|
||||||
5) All object files are then linked and the resulting file vmlinux is
|
5) All object files are then linked and the resulting file vmlinux is
|
||||||
located at the root of the obj tree.
|
located at the root of the obj tree.
|
||||||
The very first objects linked are listed in head-y, assigned by
|
The very first objects linked are listed in scripts/head-object-list.txt.
|
||||||
arch/$(SRCARCH)/Makefile.
|
|
||||||
6) Finally, the architecture-specific part does any required post processing
|
6) Finally, the architecture-specific part does any required post processing
|
||||||
and builds the final bootimage.
|
and builds the final bootimage.
|
||||||
- This includes building boot records
|
- This includes building boot records
|
||||||
|
@ -1219,6 +1218,9 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
All object files for vmlinux. They are linked to vmlinux in the same
|
All object files for vmlinux. They are linked to vmlinux in the same
|
||||||
order as listed in KBUILD_VMLINUX_OBJS.
|
order as listed in KBUILD_VMLINUX_OBJS.
|
||||||
|
|
||||||
|
The objects listed in scripts/head-object-list.txt are exceptions;
|
||||||
|
they are placed before the other objects.
|
||||||
|
|
||||||
KBUILD_VMLINUX_LIBS
|
KBUILD_VMLINUX_LIBS
|
||||||
|
|
||||||
All .a "lib" files for vmlinux. KBUILD_VMLINUX_OBJS and
|
All .a "lib" files for vmlinux. KBUILD_VMLINUX_OBJS and
|
||||||
|
@ -1262,8 +1264,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
machinery is all architecture-independent.
|
machinery is all architecture-independent.
|
||||||
|
|
||||||
|
|
||||||
head-y, core-y, libs-y, drivers-y
|
core-y, libs-y, drivers-y
|
||||||
$(head-y) lists objects to be linked first in vmlinux.
|
|
||||||
|
|
||||||
$(libs-y) lists directories where a lib.a archive can be located.
|
$(libs-y) lists directories where a lib.a archive can be located.
|
||||||
|
|
||||||
|
|
4
Makefile
4
Makefile
|
@ -1147,10 +1147,10 @@ quiet_cmd_ar_vmlinux.a = AR $@
|
||||||
cmd_ar_vmlinux.a = \
|
cmd_ar_vmlinux.a = \
|
||||||
rm -f $@; \
|
rm -f $@; \
|
||||||
$(AR) cDPrST $@ $(KBUILD_VMLINUX_OBJS); \
|
$(AR) cDPrST $@ $(KBUILD_VMLINUX_OBJS); \
|
||||||
$(AR) mPiT $$($(AR) t $@ | head -n1) $@ $(head-y)
|
$(AR) mPiT $$($(AR) t $@ | head -n1) $@ $$($(AR) t $@ | grep -F --file=$(srctree)/scripts/head-object-list.txt)
|
||||||
|
|
||||||
targets += vmlinux.a
|
targets += vmlinux.a
|
||||||
vmlinux.a: $(KBUILD_VMLINUX_OBJS) autoksyms_recursive FORCE
|
vmlinux.a: $(KBUILD_VMLINUX_OBJS) scripts/head-object-list.txt autoksyms_recursive FORCE
|
||||||
$(call if_changed,ar_vmlinux.a)
|
$(call if_changed,ar_vmlinux.a)
|
||||||
|
|
||||||
vmlinux.o: vmlinux.a $(KBUILD_VMLINUX_LIBS) FORCE
|
vmlinux.o: vmlinux.a $(KBUILD_VMLINUX_LIBS) FORCE
|
||||||
|
|
|
@ -36,8 +36,6 @@ cflags-y += $(cpuflags-y)
|
||||||
# BWX is most important, but we don't really want any emulation ever.
|
# BWX is most important, but we don't really want any emulation ever.
|
||||||
KBUILD_CFLAGS += $(cflags-y) -Wa,-mev6
|
KBUILD_CFLAGS += $(cflags-y) -Wa,-mev6
|
||||||
|
|
||||||
head-y := arch/alpha/kernel/head.o
|
|
||||||
|
|
||||||
libs-y += arch/alpha/lib/
|
libs-y += arch/alpha/lib/
|
||||||
|
|
||||||
# export what is needed by arch/alpha/boot/Makefile
|
# export what is needed by arch/alpha/boot/Makefile
|
||||||
|
|
|
@ -82,8 +82,6 @@ KBUILD_CFLAGS += $(cflags-y)
|
||||||
KBUILD_AFLAGS += $(KBUILD_CFLAGS)
|
KBUILD_AFLAGS += $(KBUILD_CFLAGS)
|
||||||
KBUILD_LDFLAGS += $(ldflags-y)
|
KBUILD_LDFLAGS += $(ldflags-y)
|
||||||
|
|
||||||
head-y := arch/arc/kernel/head.o
|
|
||||||
|
|
||||||
# w/o this dtb won't embed into kernel binary
|
# w/o this dtb won't embed into kernel binary
|
||||||
core-y += arch/arc/boot/dts/
|
core-y += arch/arc/boot/dts/
|
||||||
|
|
||||||
|
|
|
@ -134,9 +134,6 @@ KBUILD_AFLAGS +=$(CFLAGS_ABI) $(AFLAGS_ISA) $(arch-y) $(tune-y) -include asm/uni
|
||||||
|
|
||||||
CHECKFLAGS += -D__arm__
|
CHECKFLAGS += -D__arm__
|
||||||
|
|
||||||
#Default value
|
|
||||||
head-y := arch/arm/kernel/head$(MMUEXT).o
|
|
||||||
|
|
||||||
# Text offset. This list is sorted numerically by address in order to
|
# Text offset. This list is sorted numerically by address in order to
|
||||||
# provide a means to avoid/resolve conflicts in multi-arch kernels.
|
# provide a means to avoid/resolve conflicts in multi-arch kernels.
|
||||||
# Note: the 32kB below this value is reserved for use by the kernel
|
# Note: the 32kB below this value is reserved for use by the kernel
|
||||||
|
|
|
@ -133,9 +133,6 @@ ifeq ($(CONFIG_DYNAMIC_FTRACE_WITH_REGS),y)
|
||||||
CC_FLAGS_FTRACE := -fpatchable-function-entry=2
|
CC_FLAGS_FTRACE := -fpatchable-function-entry=2
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Default value
|
|
||||||
head-y := arch/arm64/kernel/head.o
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_KASAN_SW_TAGS), y)
|
ifeq ($(CONFIG_KASAN_SW_TAGS), y)
|
||||||
KASAN_SHADOW_SCALE_SHIFT := 4
|
KASAN_SHADOW_SCALE_SHIFT := 4
|
||||||
else ifeq ($(CONFIG_KASAN_GENERIC), y)
|
else ifeq ($(CONFIG_KASAN_GENERIC), y)
|
||||||
|
|
|
@ -59,8 +59,6 @@ LDFLAGS += -EL
|
||||||
|
|
||||||
KBUILD_AFLAGS += $(KBUILD_CFLAGS)
|
KBUILD_AFLAGS += $(KBUILD_CFLAGS)
|
||||||
|
|
||||||
head-y := arch/csky/kernel/head.o
|
|
||||||
|
|
||||||
core-y += arch/csky/$(CSKYABI)/
|
core-y += arch/csky/$(CSKYABI)/
|
||||||
|
|
||||||
libs-y += arch/csky/lib/ \
|
libs-y += arch/csky/lib/ \
|
||||||
|
|
|
@ -32,5 +32,3 @@ KBUILD_LDFLAGS += $(ldflags-y)
|
||||||
TIR_NAME := r19
|
TIR_NAME := r19
|
||||||
KBUILD_CFLAGS += -ffixed-$(TIR_NAME) -DTHREADINFO_REG=$(TIR_NAME) -D__linux__
|
KBUILD_CFLAGS += -ffixed-$(TIR_NAME) -DTHREADINFO_REG=$(TIR_NAME) -D__linux__
|
||||||
KBUILD_AFLAGS += -DTHREADINFO_REG=$(TIR_NAME)
|
KBUILD_AFLAGS += -DTHREADINFO_REG=$(TIR_NAME)
|
||||||
|
|
||||||
head-y := arch/hexagon/kernel/head.o
|
|
||||||
|
|
|
@ -44,7 +44,6 @@ quiet_cmd_objcopy = OBJCOPY $@
|
||||||
cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@
|
cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@
|
||||||
|
|
||||||
KBUILD_CFLAGS += $(cflags-y)
|
KBUILD_CFLAGS += $(cflags-y)
|
||||||
head-y := arch/ia64/kernel/head.o
|
|
||||||
|
|
||||||
libs-y += arch/ia64/lib/
|
libs-y += arch/ia64/lib/
|
||||||
|
|
||||||
|
|
|
@ -72,8 +72,6 @@ CHECKFLAGS += $(shell $(CC) $(KBUILD_CFLAGS) -dM -E -x c /dev/null | \
|
||||||
sed -e "s/^\#define /-D'/" -e "s/ /'='/" -e "s/$$/'/" -e 's/\$$/&&/g')
|
sed -e "s/^\#define /-D'/" -e "s/ /'='/" -e "s/$$/'/" -e 's/\$$/&&/g')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
head-y := arch/loongarch/kernel/head.o
|
|
||||||
|
|
||||||
libs-y += arch/loongarch/lib/
|
libs-y += arch/loongarch/lib/
|
||||||
|
|
||||||
ifeq ($(KBUILD_EXTMOD),)
|
ifeq ($(KBUILD_EXTMOD),)
|
||||||
|
|
|
@ -86,15 +86,6 @@ ifdef CONFIG_KGDB
|
||||||
KBUILD_CFLAGS := $(subst -fomit-frame-pointer,,$(KBUILD_CFLAGS)) -g
|
KBUILD_CFLAGS := $(subst -fomit-frame-pointer,,$(KBUILD_CFLAGS)) -g
|
||||||
endif
|
endif
|
||||||
|
|
||||||
#
|
|
||||||
# Select the assembler head startup code. Order is important. The default
|
|
||||||
# head code is first, processor specific selections can override it after.
|
|
||||||
#
|
|
||||||
head-y := arch/m68k/kernel/head.o
|
|
||||||
head-$(CONFIG_SUN3) := arch/m68k/kernel/sun3-head.o
|
|
||||||
head-$(CONFIG_M68000) := arch/m68k/68000/head.o
|
|
||||||
head-$(CONFIG_COLDFIRE) := arch/m68k/coldfire/head.o
|
|
||||||
|
|
||||||
libs-y += arch/m68k/lib/
|
libs-y += arch/m68k/lib/
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,6 @@ CPUFLAGS-1 += $(call cc-option,-mcpu=v$(CPU_VER))
|
||||||
# r31 holds current when in kernel mode
|
# r31 holds current when in kernel mode
|
||||||
KBUILD_CFLAGS += -ffixed-r31 $(CPUFLAGS-y) $(CPUFLAGS-1) $(CPUFLAGS-2)
|
KBUILD_CFLAGS += -ffixed-r31 $(CPUFLAGS-y) $(CPUFLAGS-1) $(CPUFLAGS-2)
|
||||||
|
|
||||||
head-y := arch/microblaze/kernel/head.o
|
|
||||||
libs-y += arch/microblaze/lib/
|
libs-y += arch/microblaze/lib/
|
||||||
|
|
||||||
boot := arch/microblaze/boot
|
boot := arch/microblaze/boot
|
||||||
|
|
|
@ -324,8 +324,6 @@ endif
|
||||||
|
|
||||||
OBJCOPYFLAGS += --remove-section=.reginfo
|
OBJCOPYFLAGS += --remove-section=.reginfo
|
||||||
|
|
||||||
head-y := arch/mips/kernel/head.o
|
|
||||||
|
|
||||||
libs-y += arch/mips/lib/
|
libs-y += arch/mips/lib/
|
||||||
libs-$(CONFIG_MIPS_FP_SUPPORT) += arch/mips/math-emu/
|
libs-$(CONFIG_MIPS_FP_SUPPORT) += arch/mips/math-emu/
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,6 @@ KBUILD_CFLAGS += -DUTS_SYSNAME=\"$(UTS_SYSNAME)\"
|
||||||
KBUILD_CFLAGS += -fno-builtin
|
KBUILD_CFLAGS += -fno-builtin
|
||||||
KBUILD_CFLAGS += -G 0
|
KBUILD_CFLAGS += -G 0
|
||||||
|
|
||||||
head-y := arch/nios2/kernel/head.o
|
|
||||||
libs-y += arch/nios2/lib/ $(LIBGCC)
|
libs-y += arch/nios2/lib/ $(LIBGCC)
|
||||||
|
|
||||||
INSTALL_PATH ?= /tftpboot
|
INSTALL_PATH ?= /tftpboot
|
||||||
|
|
|
@ -55,8 +55,6 @@ ifeq ($(CONFIG_OPENRISC_HAVE_INST_SEXT),y)
|
||||||
KBUILD_CFLAGS += $(call cc-option,-msext)
|
KBUILD_CFLAGS += $(call cc-option,-msext)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
head-y := arch/openrisc/kernel/head.o
|
|
||||||
|
|
||||||
libs-y += $(LIBGCC)
|
libs-y += $(LIBGCC)
|
||||||
|
|
||||||
PHONY += vmlinux.bin
|
PHONY += vmlinux.bin
|
||||||
|
|
|
@ -113,8 +113,6 @@ cflags-$(CONFIG_PA7100LC) += -march=1.1 -mschedule=7100LC
|
||||||
cflags-$(CONFIG_PA7300LC) += -march=1.1 -mschedule=7300
|
cflags-$(CONFIG_PA7300LC) += -march=1.1 -mschedule=7300
|
||||||
cflags-$(CONFIG_PA8X00) += -march=2.0 -mschedule=8000
|
cflags-$(CONFIG_PA8X00) += -march=2.0 -mschedule=8000
|
||||||
|
|
||||||
head-y := arch/parisc/kernel/head.o
|
|
||||||
|
|
||||||
KBUILD_CFLAGS += $(cflags-y)
|
KBUILD_CFLAGS += $(cflags-y)
|
||||||
LIBGCC := $(shell $(CC) -print-libgcc-file-name)
|
LIBGCC := $(shell $(CC) -print-libgcc-file-name)
|
||||||
export LIBGCC
|
export LIBGCC
|
||||||
|
|
|
@ -226,18 +226,6 @@ KBUILD_CFLAGS += $(cpu-as-y)
|
||||||
KBUILD_AFLAGS += $(aflags-y)
|
KBUILD_AFLAGS += $(aflags-y)
|
||||||
KBUILD_CFLAGS += $(cflags-y)
|
KBUILD_CFLAGS += $(cflags-y)
|
||||||
|
|
||||||
head-$(CONFIG_PPC64) := arch/powerpc/kernel/head_64.o
|
|
||||||
head-$(CONFIG_PPC_BOOK3S_32) := arch/powerpc/kernel/head_book3s_32.o
|
|
||||||
head-$(CONFIG_PPC_8xx) := arch/powerpc/kernel/head_8xx.o
|
|
||||||
head-$(CONFIG_40x) := arch/powerpc/kernel/head_40x.o
|
|
||||||
head-$(CONFIG_44x) := arch/powerpc/kernel/head_44x.o
|
|
||||||
head-$(CONFIG_FSL_BOOKE) := arch/powerpc/kernel/head_fsl_booke.o
|
|
||||||
|
|
||||||
head-$(CONFIG_PPC64) += arch/powerpc/kernel/entry_64.o
|
|
||||||
head-$(CONFIG_PPC_FPU) += arch/powerpc/kernel/fpu.o
|
|
||||||
head-$(CONFIG_ALTIVEC) += arch/powerpc/kernel/vector.o
|
|
||||||
head-$(CONFIG_PPC_OF_BOOT_TRAMPOLINE) += arch/powerpc/kernel/prom_init.o
|
|
||||||
|
|
||||||
# Default to zImage, override when needed
|
# Default to zImage, override when needed
|
||||||
all: zImage
|
all: zImage
|
||||||
|
|
||||||
|
|
|
@ -110,8 +110,6 @@ else
|
||||||
KBUILD_IMAGE := $(boot)/Image.gz
|
KBUILD_IMAGE := $(boot)/Image.gz
|
||||||
endif
|
endif
|
||||||
|
|
||||||
head-y := arch/riscv/kernel/head.o
|
|
||||||
|
|
||||||
libs-y += arch/riscv/lib/
|
libs-y += arch/riscv/lib/
|
||||||
libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a
|
libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a
|
||||||
|
|
||||||
|
|
|
@ -119,8 +119,6 @@ export KBUILD_CFLAGS_DECOMPRESSOR
|
||||||
|
|
||||||
OBJCOPYFLAGS := -O binary
|
OBJCOPYFLAGS := -O binary
|
||||||
|
|
||||||
head-y := arch/s390/kernel/head64.o
|
|
||||||
|
|
||||||
libs-y += arch/s390/lib/
|
libs-y += arch/s390/lib/
|
||||||
drivers-y += drivers/s390/
|
drivers-y += drivers/s390/
|
||||||
|
|
||||||
|
|
|
@ -114,8 +114,6 @@ endif
|
||||||
|
|
||||||
export ld-bfd
|
export ld-bfd
|
||||||
|
|
||||||
head-y := arch/sh/kernel/head_32.o
|
|
||||||
|
|
||||||
# Mach groups
|
# Mach groups
|
||||||
machdir-$(CONFIG_SOLUTION_ENGINE) += mach-se
|
machdir-$(CONFIG_SOLUTION_ENGINE) += mach-se
|
||||||
machdir-$(CONFIG_SH_HP6XX) += mach-hp6xx
|
machdir-$(CONFIG_SH_HP6XX) += mach-hp6xx
|
||||||
|
|
|
@ -56,8 +56,6 @@ endif
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
head-y := arch/sparc/kernel/head_$(BITS).o
|
|
||||||
|
|
||||||
libs-y += arch/sparc/prom/
|
libs-y += arch/sparc/prom/
|
||||||
libs-y += arch/sparc/lib/
|
libs-y += arch/sparc/lib/
|
||||||
|
|
||||||
|
|
|
@ -234,11 +234,6 @@ archheaders:
|
||||||
###
|
###
|
||||||
# Kernel objects
|
# Kernel objects
|
||||||
|
|
||||||
head-y := arch/x86/kernel/head_$(BITS).o
|
|
||||||
head-y += arch/x86/kernel/head$(BITS).o
|
|
||||||
head-y += arch/x86/kernel/ebda.o
|
|
||||||
head-y += arch/x86/kernel/platform-quirks.o
|
|
||||||
|
|
||||||
libs-y += arch/x86/lib/
|
libs-y += arch/x86/lib/
|
||||||
|
|
||||||
# drivers-y are linked after core-y
|
# drivers-y are linked after core-y
|
||||||
|
|
|
@ -55,8 +55,6 @@ KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(vardirs) $(plfdirs))
|
||||||
|
|
||||||
KBUILD_DEFCONFIG := iss_defconfig
|
KBUILD_DEFCONFIG := iss_defconfig
|
||||||
|
|
||||||
head-y := arch/xtensa/kernel/head.o
|
|
||||||
|
|
||||||
libs-y += arch/xtensa/lib/
|
libs-y += arch/xtensa/lib/
|
||||||
|
|
||||||
boot := arch/xtensa/boot
|
boot := arch/xtensa/boot
|
||||||
|
|
53
scripts/head-object-list.txt
Normal file
53
scripts/head-object-list.txt
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
# Head objects
|
||||||
|
#
|
||||||
|
# The objects listed here are placed at the head of vmlinux. A typical use-case
|
||||||
|
# is an object that contains the entry point. This is kept for compatibility
|
||||||
|
# with head-y, which Kbuild used to support.
|
||||||
|
#
|
||||||
|
# A counter approach is to control the section placement by the linker script.
|
||||||
|
# The code marked as __HEAD goes into the ".head.text" section, which is placed
|
||||||
|
# before the normal ".text" section.
|
||||||
|
#
|
||||||
|
# If you can achieve the correct code ordering by linker script, please delete
|
||||||
|
# the entry from this file.
|
||||||
|
#
|
||||||
|
arch/alpha/kernel/head.o
|
||||||
|
arch/arc/kernel/head.o
|
||||||
|
arch/arm/kernel/head-nommu.o
|
||||||
|
arch/arm/kernel/head.o
|
||||||
|
arch/arm64/kernel/head.o
|
||||||
|
arch/csky/kernel/head.o
|
||||||
|
arch/hexagon/kernel/head.o
|
||||||
|
arch/ia64/kernel/head.o
|
||||||
|
arch/loongarch/kernel/head.o
|
||||||
|
arch/m68k/68000/head.o
|
||||||
|
arch/m68k/coldfire/head.o
|
||||||
|
arch/m68k/kernel/head.o
|
||||||
|
arch/m68k/kernel/sun3-head.o
|
||||||
|
arch/microblaze/kernel/head.o
|
||||||
|
arch/mips/kernel/head.o
|
||||||
|
arch/nios2/kernel/head.o
|
||||||
|
arch/openrisc/kernel/head.o
|
||||||
|
arch/parisc/kernel/head.o
|
||||||
|
arch/powerpc/kernel/head_40x.o
|
||||||
|
arch/powerpc/kernel/head_44x.o
|
||||||
|
arch/powerpc/kernel/head_64.o
|
||||||
|
arch/powerpc/kernel/head_8xx.o
|
||||||
|
arch/powerpc/kernel/head_book3s_32.o
|
||||||
|
arch/powerpc/kernel/head_fsl_booke.o
|
||||||
|
arch/powerpc/kernel/entry_64.o
|
||||||
|
arch/powerpc/kernel/fpu.o
|
||||||
|
arch/powerpc/kernel/vector.o
|
||||||
|
arch/powerpc/kernel/prom_init.o
|
||||||
|
arch/riscv/kernel/head.o
|
||||||
|
arch/s390/kernel/head64.o
|
||||||
|
arch/sh/kernel/head_32.o
|
||||||
|
arch/sparc/kernel/head_32.o
|
||||||
|
arch/sparc/kernel/head_64.o
|
||||||
|
arch/x86/kernel/head_32.o
|
||||||
|
arch/x86/kernel/head_64.o
|
||||||
|
arch/x86/kernel/head32.o
|
||||||
|
arch/x86/kernel/head64.o
|
||||||
|
arch/x86/kernel/ebda.o
|
||||||
|
arch/x86/kernel/platform-quirks.o
|
||||||
|
arch/xtensa/kernel/head.o
|
Loading…
Add table
Add a link
Reference in a new issue