Commit 5ba9aa56 authored by Paul Walmsley's avatar Paul Walmsley
Browse files

Merge branch 'next/nommu' into for-next

Conflicts:
	arch/riscv/boot/Makefile
	arch/riscv/include/asm/sbi.h
parents 4a979862 405fe7aa
Loading
Loading
Loading
Loading
+27 −9
Original line number Diff line number Diff line
@@ -26,15 +26,15 @@ config RISCV
	select GENERIC_IRQ_SHOW
	select GENERIC_PCI_IOMAP
	select GENERIC_SCHED_CLOCK
	select GENERIC_STRNCPY_FROM_USER
	select GENERIC_STRNLEN_USER
	select GENERIC_STRNCPY_FROM_USER if MMU
	select GENERIC_STRNLEN_USER if MMU
	select GENERIC_SMP_IDLE_THREAD
	select GENERIC_ATOMIC64 if !64BIT
	select HAVE_ARCH_AUDITSYSCALL
	select HAVE_ARCH_SECCOMP_FILTER
	select HAVE_ASM_MODVERSIONS
	select HAVE_MEMBLOCK_NODE_MAP
	select HAVE_DMA_CONTIGUOUS
	select HAVE_DMA_CONTIGUOUS if MMU
	select HAVE_FUTEX_CMPXCHG if FUTEX
	select HAVE_PERF_EVENTS
	select HAVE_PERF_REGS
@@ -51,6 +51,7 @@ config RISCV
	select PCI_DOMAINS_GENERIC if PCI
	select PCI_MSI if PCI
	select RISCV_TIMER
	select UACCESS_MEMCPY if !MMU
	select GENERIC_IRQ_MULTI_HANDLER
	select GENERIC_ARCH_TOPOLOGY if SMP
	select ARCH_HAS_PTE_SPECIAL
@@ -61,7 +62,7 @@ config RISCV
	select ARCH_WANT_HUGE_PMD_SHARE if 64BIT
	select SPARSEMEM_STATIC if 32BIT
	select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
	select HAVE_ARCH_MMAP_RND_BITS
	select HAVE_ARCH_MMAP_RND_BITS if MMU

config ARCH_MMAP_RND_BITS_MIN
	default 18 if 64BIT
@@ -73,8 +74,23 @@ config ARCH_MMAP_RND_BITS_MAX
	default 24 if 64BIT # SV39 based
	default 17

# set if we run in machine mode, cleared if we run in supervisor mode
config RISCV_M_MODE
	bool
	default !MMU

# set if we are running in S-mode and can use SBI calls
config RISCV_SBI
	bool
	depends on !RISCV_M_MODE
	default y

config MMU
	def_bool y
	bool "MMU-based Paged Memory Management Support"
	default y
	help
	  Select if you want MMU-based virtualised addressing space
	  support by paged memory management. If unsure, say 'Y'.

config ZONE_DMA32
	bool
@@ -93,6 +109,7 @@ config PA_BITS
config PAGE_OFFSET
	hex
	default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
	default 0x80000000 if 64BIT && !MMU
	default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
	default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB

@@ -136,7 +153,7 @@ config GENERIC_HWEIGHT
	def_bool y

config FIX_EARLYCON_MEM
	def_bool y
	def_bool CONFIG_MMU

config PGTABLE_LEVELS
	int
@@ -161,6 +178,7 @@ config ARCH_RV32I
	select GENERIC_LIB_ASHRDI3
	select GENERIC_LIB_LSHRDI3
	select GENERIC_LIB_UCMPDI2
	select MMU

config ARCH_RV64I
	bool "RV64I"
@@ -169,9 +187,9 @@ config ARCH_RV64I
	select HAVE_FUNCTION_TRACER
	select HAVE_FUNCTION_GRAPH_TRACER
	select HAVE_FTRACE_MCOUNT_RECORD
	select HAVE_DYNAMIC_FTRACE
	select HAVE_DYNAMIC_FTRACE_WITH_REGS
	select SWIOTLB
	select HAVE_DYNAMIC_FTRACE if MMU
	select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE
	select SWIOTLB if MMU

endchoice

+9 −4
Original line number Diff line number Diff line
@@ -83,13 +83,18 @@ PHONY += vdso_install
vdso_install:
	$(Q)$(MAKE) $(build)=arch/riscv/kernel/vdso $@

all: Image.gz
ifeq ($(CONFIG_RISCV_M_MODE),y)
KBUILD_IMAGE := $(boot)/loader
else
KBUILD_IMAGE := $(boot)/Image.gz
endif
BOOT_TARGETS := Image Image.gz loader

Image: vmlinux
	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
all:	$(notdir $(KBUILD_IMAGE))

Image.%: Image
$(BOOT_TARGETS): vmlinux
	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
	@$(kecho) '  Kernel: $(boot)/$@ is ready'

zinstall install:
	$(Q)$(MAKE) $(build)=$(boot) $@
+6 −1
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@

OBJCOPYFLAGS_Image :=-O binary -R .note -R .note.gnu.build-id -R .comment -S

targets := Image
targets := Image loader

$(obj)/Image: vmlinux FORCE
	$(call if_changed,objcopy)
@@ -24,6 +24,11 @@ $(obj)/Image: vmlinux FORCE
$(obj)/Image.gz: $(obj)/Image FORCE
	$(call if_changed,gzip)

loader.o: $(src)/loader.S $(obj)/Image

$(obj)/loader: $(obj)/loader.o $(obj)/Image $(obj)/loader.lds FORCE
	$(Q)$(LD) -T $(obj)/loader.lds -o $@ $(obj)/loader.o

$(obj)/Image.bz2: $(obj)/Image FORCE
	$(call if_changed,bzip2)

+8 −0
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0 */

	.align 4
	.section .payload, "ax", %progbits
	.globl _start
_start:
	.incbin "arch/riscv/boot/Image"
+16 −0
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0 */

#include <asm/page.h>

OUTPUT_ARCH(riscv)
ENTRY(_start)

SECTIONS
{
	. = PAGE_OFFSET;

	.payload : {
		*(.payload)
		. = ALIGN(8);
	}
}
Loading