LoongArch: Adjust build infrastructure for 32BIT/64BIT

Adjust build infrastructure (Kconfig, Makefile and ld scripts) to let
us enable both 32BIT/64BIT kernel build.

Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
This commit is contained in:
Huacai Chen 2026-04-22 15:44:26 +08:00
parent 028ef9c96e
commit 3d9aba6618
9 changed files with 122 additions and 42 deletions

View File

@ -21,11 +21,11 @@ config LOONGARCH
select ARCH_HAS_FAST_MULTIPLIER select ARCH_HAS_FAST_MULTIPLIER
select ARCH_HAS_FORTIFY_SOURCE select ARCH_HAS_FORTIFY_SOURCE
select ARCH_HAS_KCOV select ARCH_HAS_KCOV
select ARCH_HAS_KERNEL_FPU_SUPPORT if CPU_HAS_FPU select ARCH_HAS_KERNEL_FPU_SUPPORT if 64BIT && CPU_HAS_FPU
select ARCH_HAS_NMI_SAFE_THIS_CPU_OPS select ARCH_HAS_NMI_SAFE_THIS_CPU_OPS
select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
select ARCH_HAS_PREEMPT_LAZY select ARCH_HAS_PREEMPT_LAZY
select ARCH_HAS_PTE_SPECIAL select ARCH_HAS_PTE_SPECIAL if 64BIT
select ARCH_HAS_SET_MEMORY select ARCH_HAS_SET_MEMORY
select ARCH_HAS_SET_DIRECT_MAP select ARCH_HAS_SET_DIRECT_MAP
select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
@ -60,16 +60,15 @@ config LOONGARCH
select ARCH_KEEP_MEMBLOCK select ARCH_KEEP_MEMBLOCK
select ARCH_MIGHT_HAVE_PC_PARPORT select ARCH_MIGHT_HAVE_PC_PARPORT
select ARCH_MIGHT_HAVE_PC_SERIO select ARCH_MIGHT_HAVE_PC_SERIO
select ARCH_SPARSEMEM_ENABLE
select ARCH_STACKWALK select ARCH_STACKWALK
select ARCH_SUPPORTS_ACPI select ARCH_SUPPORTS_ACPI
select ARCH_SUPPORTS_ATOMIC_RMW select ARCH_SUPPORTS_ATOMIC_RMW
select ARCH_SUPPORTS_HUGETLBFS select ARCH_SUPPORTS_HUGETLBFS if 64BIT
select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 select ARCH_SUPPORTS_INT128 if CC_HAS_INT128
select ARCH_SUPPORTS_LTO_CLANG select ARCH_SUPPORTS_LTO_CLANG
select ARCH_SUPPORTS_LTO_CLANG_THIN select ARCH_SUPPORTS_LTO_CLANG_THIN
select ARCH_SUPPORTS_MSEAL_SYSTEM_MAPPINGS select ARCH_SUPPORTS_MSEAL_SYSTEM_MAPPINGS
select ARCH_SUPPORTS_NUMA_BALANCING select ARCH_SUPPORTS_NUMA_BALANCING if NUMA
select ARCH_SUPPORTS_PER_VMA_LOCK select ARCH_SUPPORTS_PER_VMA_LOCK
select ARCH_SUPPORTS_RT select ARCH_SUPPORTS_RT
select ARCH_SUPPORTS_SCHED_SMT if SMP select ARCH_SUPPORTS_SCHED_SMT if SMP
@ -79,10 +78,10 @@ config LOONGARCH
select ARCH_USE_MEMTEST select ARCH_USE_MEMTEST
select ARCH_USE_QUEUED_RWLOCKS select ARCH_USE_QUEUED_RWLOCKS
select ARCH_USE_QUEUED_SPINLOCKS select ARCH_USE_QUEUED_SPINLOCKS
select ARCH_WANT_DEFAULT_BPF_JIT select ARCH_WANT_DEFAULT_BPF_JIT if HAVE_EBPF_JIT
select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
select ARCH_WANT_LD_ORPHAN_WARN select ARCH_WANT_LD_ORPHAN_WARN
select ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP select ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP if 64BIT
select ARCH_WANTS_NO_INSTR select ARCH_WANTS_NO_INSTR
select ARCH_WANTS_THP_SWAP if HAVE_ARCH_TRANSPARENT_HUGEPAGE select ARCH_WANTS_THP_SWAP if HAVE_ARCH_TRANSPARENT_HUGEPAGE
select BUILDTIME_TABLE_SORT select BUILDTIME_TABLE_SORT
@ -90,13 +89,14 @@ config LOONGARCH
select CPU_PM select CPU_PM
select EDAC_SUPPORT select EDAC_SUPPORT
select EFI select EFI
select GENERIC_ATOMIC64 if 32BIT
select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS
select GENERIC_CMOS_UPDATE select GENERIC_CMOS_UPDATE
select GENERIC_CPU_AUTOPROBE select GENERIC_CPU_AUTOPROBE
select GENERIC_CPU_DEVICES select GENERIC_CPU_DEVICES
select GENERIC_CPU_VULNERABILITIES select GENERIC_CPU_VULNERABILITIES
select GENERIC_ENTRY select GENERIC_ENTRY
select GENERIC_GETTIMEOFDAY select GENERIC_GETTIMEOFDAY if 64BIT
select GENERIC_IOREMAP if !ARCH_IOREMAP select GENERIC_IOREMAP if !ARCH_IOREMAP
select GENERIC_IRQ_MATRIX_ALLOCATOR select GENERIC_IRQ_MATRIX_ALLOCATOR
select GENERIC_IRQ_MULTI_HANDLER select GENERIC_IRQ_MULTI_HANDLER
@ -111,16 +111,16 @@ config LOONGARCH
select GENERIC_PCI_IOMAP select GENERIC_PCI_IOMAP
select GENERIC_SCHED_CLOCK select GENERIC_SCHED_CLOCK
select GENERIC_SMP_IDLE_THREAD select GENERIC_SMP_IDLE_THREAD
select GENERIC_TIME_VSYSCALL select GENERIC_TIME_VSYSCALL if GENERIC_GETTIMEOFDAY
select GPIOLIB select GPIOLIB
select HAS_IOPORT select HAS_IOPORT
select HAVE_ALIGNED_STRUCT_PAGE select HAVE_ALIGNED_STRUCT_PAGE if 64BIT
select HAVE_ARCH_AUDITSYSCALL select HAVE_ARCH_AUDITSYSCALL
select HAVE_ARCH_BITREVERSE select HAVE_ARCH_BITREVERSE if 64BIT
select HAVE_ARCH_JUMP_LABEL select HAVE_ARCH_JUMP_LABEL
select HAVE_ARCH_JUMP_LABEL_RELATIVE select HAVE_ARCH_JUMP_LABEL_RELATIVE
select HAVE_ARCH_KASAN select HAVE_ARCH_KASAN if 64BIT
select HAVE_ARCH_KFENCE select HAVE_ARCH_KFENCE if 64BIT
select HAVE_ARCH_KGDB if PERF_EVENTS select HAVE_ARCH_KGDB if PERF_EVENTS
select HAVE_ARCH_KSTACK_ERASE select HAVE_ARCH_KSTACK_ERASE
select HAVE_ARCH_MMAP_RND_BITS if MMU select HAVE_ARCH_MMAP_RND_BITS if MMU
@ -128,8 +128,8 @@ config LOONGARCH
select HAVE_ARCH_SECCOMP select HAVE_ARCH_SECCOMP
select HAVE_ARCH_SECCOMP_FILTER select HAVE_ARCH_SECCOMP_FILTER
select HAVE_ARCH_TRACEHOOK select HAVE_ARCH_TRACEHOOK
select HAVE_ARCH_TRANSPARENT_HUGEPAGE select HAVE_ARCH_TRANSPARENT_HUGEPAGE if 64BIT
select HAVE_ARCH_USERFAULTFD_MINOR if USERFAULTFD select HAVE_ARCH_USERFAULTFD_MINOR if 64BIT && USERFAULTFD
select HAVE_ASM_MODVERSIONS select HAVE_ASM_MODVERSIONS
select HAVE_CMPXCHG_DOUBLE select HAVE_CMPXCHG_DOUBLE
select HAVE_CMPXCHG_LOCAL select HAVE_CMPXCHG_LOCAL
@ -143,7 +143,7 @@ config LOONGARCH
select HAVE_FTRACE_REGS_HAVING_PT_REGS select HAVE_FTRACE_REGS_HAVING_PT_REGS
select HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS select HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
select HAVE_DYNAMIC_FTRACE_WITH_REGS select HAVE_DYNAMIC_FTRACE_WITH_REGS
select HAVE_EBPF_JIT select HAVE_EBPF_JIT if 64BIT
select HAVE_EFFICIENT_UNALIGNED_ACCESS if !ARCH_STRICT_ALIGN select HAVE_EFFICIENT_UNALIGNED_ACCESS if !ARCH_STRICT_ALIGN
select HAVE_EXIT_THREAD select HAVE_EXIT_THREAD
select HAVE_GENERIC_TIF_BITS select HAVE_GENERIC_TIF_BITS
@ -166,9 +166,9 @@ config LOONGARCH
select HAVE_LIVEPATCH select HAVE_LIVEPATCH
select HAVE_MOD_ARCH_SPECIFIC select HAVE_MOD_ARCH_SPECIFIC
select HAVE_NMI select HAVE_NMI
select HAVE_OBJTOOL if AS_HAS_EXPLICIT_RELOCS && AS_HAS_THIN_ADD_SUB select HAVE_OBJTOOL if AS_HAS_EXPLICIT_RELOCS && AS_HAS_THIN_ADD_SUB && 64BIT
select HAVE_PCI select HAVE_PCI
select HAVE_PERF_EVENTS select HAVE_PERF_EVENTS if 64BIT
select HAVE_PERF_REGS select HAVE_PERF_REGS
select HAVE_PERF_USER_STACK_DUMP select HAVE_PERF_USER_STACK_DUMP
select HAVE_POSIX_CPU_TIMERS_TASK_WORK select HAVE_POSIX_CPU_TIMERS_TASK_WORK
@ -210,18 +210,50 @@ config LOONGARCH
select SYSCTL_ARCH_UNALIGN_ALLOW select SYSCTL_ARCH_UNALIGN_ALLOW
select SYSCTL_ARCH_UNALIGN_NO_WARN select SYSCTL_ARCH_UNALIGN_NO_WARN
select SYSCTL_EXCEPTION_TRACE select SYSCTL_EXCEPTION_TRACE
select SWIOTLB select SWIOTLB if 64BIT
select TRACE_IRQFLAGS_SUPPORT select TRACE_IRQFLAGS_SUPPORT
select USE_PERCPU_NUMA_NODE_ID select USE_PERCPU_NUMA_NODE_ID
select USER_STACKTRACE_SUPPORT select USER_STACKTRACE_SUPPORT
select VDSO_GETRANDOM select VDSO_GETRANDOM
select ZONE_DMA32 select ZONE_DMA32 if 64BIT
menu "Kernel type and options"
choice
prompt "Kernel type"
config 32BIT config 32BIT
bool bool "32-bit kernel"
help
Select this option if you want to build a 32-bit kernel.
config 64BIT config 64BIT
def_bool y bool "64-bit kernel"
help
Select this option if you want to build a 64-bit kernel.
endchoice
if 32BIT
choice
prompt "32-bit kernel sub-type"
config 32BIT_REDUCED
bool "32-bit kernel for LA32R"
help
Select this option if you want to build a 32-bit kernel for
LoongArch32 Reduced (LA32R).
config 32BIT_STANDARD
bool "32-bit kernel for LA32S"
help
Select this option if you want to build a 32-bit kernel for
LoongArch32 Standard (LA32S).
endchoice
endif
config GENERIC_BUG config GENERIC_BUG
def_bool y def_bool y
@ -314,8 +346,6 @@ config RUSTC_HAS_ANNOTATE_TABLEJUMP
depends on RUST depends on RUST
def_bool $(rustc-option,-Cllvm-args=--loongarch-annotate-tablejump) def_bool $(rustc-option,-Cllvm-args=--loongarch-annotate-tablejump)
menu "Kernel type and options"
source "kernel/Kconfig.hz" source "kernel/Kconfig.hz"
choice choice
@ -327,8 +357,17 @@ choice
of page size and page table levels. The size of virtual memory of page size and page table levels. The size of virtual memory
address space are determined by the page table layout. address space are determined by the page table layout.
config 4KB_2LEVEL
bool "4KB with 2 levels"
select HAVE_PAGE_SIZE_4KB
select PGTABLE_2LEVEL
help
This option selects 4KB page size with 2 level page tables, which
support a maximum of 32 bits of application virtual memory.
config 4KB_3LEVEL config 4KB_3LEVEL
bool "4KB with 3 levels" bool "4KB with 3 levels"
depends on 64BIT
select HAVE_PAGE_SIZE_4KB select HAVE_PAGE_SIZE_4KB
select PGTABLE_3LEVEL select PGTABLE_3LEVEL
help help
@ -337,6 +376,7 @@ config 4KB_3LEVEL
config 4KB_4LEVEL config 4KB_4LEVEL
bool "4KB with 4 levels" bool "4KB with 4 levels"
depends on 64BIT
select HAVE_PAGE_SIZE_4KB select HAVE_PAGE_SIZE_4KB
select PGTABLE_4LEVEL select PGTABLE_4LEVEL
help help
@ -353,6 +393,7 @@ config 16KB_2LEVEL
config 16KB_3LEVEL config 16KB_3LEVEL
bool "16KB with 3 levels" bool "16KB with 3 levels"
depends on 64BIT
select HAVE_PAGE_SIZE_16KB select HAVE_PAGE_SIZE_16KB
select PGTABLE_3LEVEL select PGTABLE_3LEVEL
help help
@ -369,6 +410,7 @@ config 64KB_2LEVEL
config 64KB_3LEVEL config 64KB_3LEVEL
bool "64KB with 3 levels" bool "64KB with 3 levels"
depends on 64BIT
select HAVE_PAGE_SIZE_64KB select HAVE_PAGE_SIZE_64KB
select PGTABLE_3LEVEL select PGTABLE_3LEVEL
help help
@ -466,6 +508,7 @@ config EFI_STUB
config SMP config SMP
bool "Multi-Processing support" bool "Multi-Processing support"
depends on 64BIT
help help
This enables support for systems with more than one CPU. If you have This enables support for systems with more than one CPU. If you have
a system with only one CPU, say N. If you have a system with more a system with only one CPU, say N. If you have a system with more
@ -504,6 +547,7 @@ config NR_CPUS
config NUMA config NUMA
bool "NUMA Support" bool "NUMA Support"
select SMP select SMP
depends on 64BIT
help help
Say Y to compile the kernel with NUMA (Non-Uniform Memory Access) Say Y to compile the kernel with NUMA (Non-Uniform Memory Access)
support. This option improves performance on systems with more support. This option improves performance on systems with more
@ -586,7 +630,7 @@ config CPU_HAS_FPU
config CPU_HAS_LSX config CPU_HAS_LSX
bool "Support for the Loongson SIMD Extension" bool "Support for the Loongson SIMD Extension"
depends on AS_HAS_LSX_EXTENSION depends on AS_HAS_LSX_EXTENSION && 64BIT
help help
Loongson SIMD Extension (LSX) introduces 128 bit wide vector registers Loongson SIMD Extension (LSX) introduces 128 bit wide vector registers
and a set of SIMD instructions to operate on them. When this option and a set of SIMD instructions to operate on them. When this option
@ -601,7 +645,7 @@ config CPU_HAS_LSX
config CPU_HAS_LASX config CPU_HAS_LASX
bool "Support for the Loongson Advanced SIMD Extension" bool "Support for the Loongson Advanced SIMD Extension"
depends on CPU_HAS_LSX depends on CPU_HAS_LSX
depends on AS_HAS_LASX_EXTENSION depends on AS_HAS_LASX_EXTENSION && 64BIT
help help
Loongson Advanced SIMD Extension (LASX) introduces 256 bit wide vector Loongson Advanced SIMD Extension (LASX) introduces 256 bit wide vector
registers and a set of SIMD instructions to operate on them. When this registers and a set of SIMD instructions to operate on them. When this
@ -615,7 +659,7 @@ config CPU_HAS_LASX
config CPU_HAS_LBT config CPU_HAS_LBT
bool "Support for the Loongson Binary Translation Extension" bool "Support for the Loongson Binary Translation Extension"
depends on AS_HAS_LBT_EXTENSION depends on AS_HAS_LBT_EXTENSION && 64BIT
help help
Loongson Binary Translation (LBT) introduces 4 scratch registers (SCR0 Loongson Binary Translation (LBT) introduces 4 scratch registers (SCR0
to SCR3), x86/ARM eflags (eflags) and x87 fpu stack pointer (ftop). to SCR3), x86/ARM eflags (eflags) and x87 fpu stack pointer (ftop).
@ -643,13 +687,13 @@ config ARCH_SELECTS_KEXEC_FILE
select HAVE_IMA_KEXEC if IMA select HAVE_IMA_KEXEC if IMA
config ARCH_SUPPORTS_CRASH_DUMP config ARCH_SUPPORTS_CRASH_DUMP
def_bool y def_bool 64BIT
config ARCH_DEFAULT_CRASH_DUMP config ARCH_DEFAULT_CRASH_DUMP
def_bool y def_bool 64BIT
config ARCH_SELECTS_CRASH_DUMP config ARCH_SELECTS_CRASH_DUMP
def_bool y def_bool 64BIT
depends on CRASH_DUMP depends on CRASH_DUMP
select RELOCATABLE select RELOCATABLE
@ -658,6 +702,7 @@ config ARCH_HAS_GENERIC_CRASHKERNEL_RESERVATION
config RELOCATABLE config RELOCATABLE
bool "Relocatable kernel" bool "Relocatable kernel"
depends on 64BIT
select ARCH_HAS_RELR select ARCH_HAS_RELR
help help
This builds the kernel as a Position Independent Executable (PIE), This builds the kernel as a Position Independent Executable (PIE),
@ -694,7 +739,7 @@ source "kernel/livepatch/Kconfig"
config PARAVIRT config PARAVIRT
bool "Enable paravirtualization code" bool "Enable paravirtualization code"
depends on AS_HAS_LVZ_EXTENSION depends on AS_HAS_LVZ_EXTENSION && 64BIT
select HAVE_PV_STEAL_CLOCK_GEN select HAVE_PV_STEAL_CLOCK_GEN
help help
This changes the kernel so it can modify itself when it is run This changes the kernel so it can modify itself when it is run
@ -723,7 +768,7 @@ config ARCH_FLATMEM_ENABLE
depends on !NUMA depends on !NUMA
config ARCH_SPARSEMEM_ENABLE config ARCH_SPARSEMEM_ENABLE
def_bool y def_bool 64BIT
select SPARSEMEM_VMEMMAP_ENABLE select SPARSEMEM_VMEMMAP_ENABLE
help help
Say Y to support efficient handling of sparse physical memory, Say Y to support efficient handling of sparse physical memory,
@ -740,10 +785,12 @@ config MMU
default y default y
config ARCH_MMAP_RND_BITS_MIN config ARCH_MMAP_RND_BITS_MIN
default 12 default 10 if 32BIT
default 12 if 64BIT
config ARCH_MMAP_RND_BITS_MAX config ARCH_MMAP_RND_BITS_MAX
default 18 default 15 if 32BIT
default 20 if 64BIT
config ARCH_SUPPORTS_UPROBES config ARCH_SUPPORTS_UPROBES
def_bool y def_bool y

View File

@ -25,6 +25,7 @@ endif
# #
# Select the object file format to substitute into the linker script. # Select the object file format to substitute into the linker script.
# #
32bit-tool-archpref = loongarch32
64bit-tool-archpref = loongarch64 64bit-tool-archpref = loongarch64
32bit-bfd = elf32-loongarch 32bit-bfd = elf32-loongarch
64bit-bfd = elf64-loongarch 64bit-bfd = elf64-loongarch
@ -51,7 +52,10 @@ KBUILD_CPPFLAGS += -DCC_USING_PATCHABLE_FUNCTION_ENTRY
CC_FLAGS_FTRACE := -fpatchable-function-entry=2 CC_FLAGS_FTRACE := -fpatchable-function-entry=2
endif endif
ifdef CONFIG_64BIT ifdef CONFIG_32BIT
tool-archpref = $(32bit-tool-archpref)
UTS_MACHINE := loongarch32
else
tool-archpref = $(64bit-tool-archpref) tool-archpref = $(64bit-tool-archpref)
UTS_MACHINE := loongarch64 UTS_MACHINE := loongarch64
endif endif
@ -62,9 +66,19 @@ ifneq ($(SUBARCH),$(ARCH))
endif endif
endif endif
ifdef CONFIG_32BIT
ifdef CONFIG_32BIT_STANDARD
ld-emul = $(32bit-emul)
cflags-y += -march=la32v1.0 -mabi=ilp32s -mcmodel=normal
else # CONFIG_32BIT_REDUCED
ld-emul = $(32bit-emul)
cflags-y += -march=la32rv1.0 -mabi=ilp32s -mcmodel=normal
endif
endif
ifdef CONFIG_64BIT ifdef CONFIG_64BIT
ld-emul = $(64bit-emul) ld-emul = $(64bit-emul)
cflags-y += -mabi=lp64s -mcmodel=normal cflags-y += -march=loongarch64 -mabi=lp64s -mcmodel=normal
endif endif
cflags-y += -pipe $(CC_FLAGS_NO_FPU) cflags-y += -pipe $(CC_FLAGS_NO_FPU)
@ -140,7 +154,12 @@ ifndef CONFIG_KASAN
cflags-y += -fno-builtin-memcpy -fno-builtin-memmove -fno-builtin-memset cflags-y += -fno-builtin-memcpy -fno-builtin-memmove -fno-builtin-memset
endif endif
ifdef CONFIG_32BIT
load-y = 0xa0200000
else
load-y = 0x9000000000200000 load-y = 0x9000000000200000
endif
bootvars-y = VMLINUX_LOAD_ADDRESS=$(load-y) bootvars-y = VMLINUX_LOAD_ADDRESS=$(load-y)
drivers-$(CONFIG_PCI) += arch/loongarch/pci/ drivers-$(CONFIG_PCI) += arch/loongarch/pci/

View File

@ -20,7 +20,13 @@ $(obj)/vmlinux.efi: vmlinux FORCE
$(call if_changed,objcopy) $(call if_changed,objcopy)
EFI_ZBOOT_PAYLOAD := vmlinux.efi EFI_ZBOOT_PAYLOAD := vmlinux.efi
ifdef CONFIG_32BIT
EFI_ZBOOT_BFD_TARGET := elf32-loongarch
EFI_ZBOOT_MACH_TYPE := LOONGARCH32
else
EFI_ZBOOT_BFD_TARGET := elf64-loongarch EFI_ZBOOT_BFD_TARGET := elf64-loongarch
EFI_ZBOOT_MACH_TYPE := LOONGARCH64 EFI_ZBOOT_MACH_TYPE := LOONGARCH64
endif
include $(srctree)/drivers/firmware/efi/libstub/Makefile.zboot include $(srctree)/drivers/firmware/efi/libstub/Makefile.zboot

View File

@ -6,7 +6,12 @@
#define PAGE_SIZE _PAGE_SIZE #define PAGE_SIZE _PAGE_SIZE
#define RO_EXCEPTION_TABLE_ALIGN 4 #define RO_EXCEPTION_TABLE_ALIGN 4
#define PHYSADDR_MASK 0xffffffffffff /* 48-bit */
#ifdef CONFIG_32BIT
#define PHYSADDR_MASK 0x1fffffff /* 29-bit */
#else
#define PHYSADDR_MASK 0xffffffffffff /* 48-bit */
#endif
/* /*
* Put .bss..swapper_pg_dir as the first thing in .bss. This will * Put .bss..swapper_pg_dir as the first thing in .bss. This will

View File

@ -19,7 +19,7 @@ if VIRTUALIZATION
config KVM config KVM
tristate "Kernel-based Virtual Machine (KVM) support" tristate "Kernel-based Virtual Machine (KVM) support"
depends on AS_HAS_LVZ_EXTENSION depends on AS_HAS_LVZ_EXTENSION && 64BIT
select HAVE_KVM_DIRTY_RING_ACQ_REL select HAVE_KVM_DIRTY_RING_ACQ_REL
select HAVE_KVM_IRQ_ROUTING select HAVE_KVM_IRQ_ROUTING
select HAVE_KVM_IRQCHIP select HAVE_KVM_IRQCHIP

View File

@ -3,8 +3,10 @@
# Makefile for LoongArch-specific library files. # Makefile for LoongArch-specific library files.
# #
lib-y += delay.o memset.o memcpy.o memmove.o \ lib-y += delay.o clear_user.o copy_user.o dump_tlb.o unaligned.o
clear_user.o copy_user.o csum.o dump_tlb.o unaligned.o
lib-$(CONFIG_32BIT) += bswapsi.o bswapdi.o
lib-$(CONFIG_64BIT) += memset.o memcpy.o memmove.o csum.o
obj-$(CONFIG_ARCH_SUPPORTS_INT128) += tishift.o obj-$(CONFIG_ARCH_SUPPORTS_INT128) += tishift.o

View File

@ -97,6 +97,7 @@ zboot-obj-$(CONFIG_KERNEL_ZSTD) := zboot-decompress-zstd.o lib-xxhash.o
CFLAGS_zboot-decompress-zstd.o += -I$(srctree)/lib/zstd CFLAGS_zboot-decompress-zstd.o += -I$(srctree)/lib/zstd
zboot-obj-$(CONFIG_RISCV) += lib-clz_ctz.o lib-ashldi3.o zboot-obj-$(CONFIG_RISCV) += lib-clz_ctz.o lib-ashldi3.o
zboot-obj-$(CONFIG_LOONGARCH) += lib-clz_ctz.o lib-ashldi3.o
lib-$(CONFIG_EFI_ZBOOT) += zboot.o $(zboot-obj-y) lib-$(CONFIG_EFI_ZBOOT) += zboot.o $(zboot-obj-y)
lib-$(CONFIG_UNACCEPTED_MEMORY) += unaccepted_memory.o bitmap.o find.o lib-$(CONFIG_UNACCEPTED_MEMORY) += unaccepted_memory.o bitmap.o find.o

View File

@ -187,7 +187,7 @@ config VMD
config PCI_LOONGSON config PCI_LOONGSON
bool "LOONGSON PCIe controller" bool "LOONGSON PCIe controller"
depends on MACH_LOONGSON64 || COMPILE_TEST depends on MACH_LOONGSON32 || MACH_LOONGSON64 || COMPILE_TEST
depends on OF || ACPI depends on OF || ACPI
depends on PCI_QUIRKS depends on PCI_QUIRKS
default MACH_LOONGSON64 default MACH_LOONGSON64

View File

@ -65,7 +65,7 @@ config CRC32_ARCH
depends on CRC32 && CRC_OPTIMIZATIONS depends on CRC32 && CRC_OPTIMIZATIONS
default y if ARM && KERNEL_MODE_NEON default y if ARM && KERNEL_MODE_NEON
default y if ARM64 default y if ARM64
default y if LOONGARCH default y if LOONGARCH && 64BIT
default y if MIPS && CPU_MIPSR6 default y if MIPS && CPU_MIPSR6
default y if PPC64 && ALTIVEC default y if PPC64 && ALTIVEC
default y if RISCV && RISCV_ISA_ZBC default y if RISCV && RISCV_ISA_ZBC