mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
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:
parent
028ef9c96e
commit
3d9aba6618
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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/
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user