Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 516793c6 authored by Russell King's avatar Russell King Committed by Russell King
Browse files

[ARM] ARMv6: add CPU_HAS_ASID configuration



Presently, we check for the minimum ARM architecture that we're
building for to determine whether we need ASID support.  This is
wrong - if we're going to support a range of CPUs which include
ARMv6 or higher, we need the ASID.

Convert the checks to use a new configuration symbol, and arrange
for ARMv6 and higher CPU entries to select it.

Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent c6af66b9
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -85,7 +85,7 @@ int main(void)
  DEFINE(S_OLD_R0,		offsetof(struct pt_regs, ARM_ORIG_r0));
  DEFINE(S_FRAME_SIZE,		sizeof(struct pt_regs));
  BLANK();
#if __LINUX_ARM_ARCH__ >= 6
#ifdef CONFIG_CPU_HAS_ASID
  DEFINE(MM_CONTEXT_ID,		offsetof(struct mm_struct, context.id));
  BLANK();
#endif
+8 −0
Original line number Diff line number Diff line
@@ -351,6 +351,7 @@ config CPU_V6
	select CPU_CACHE_V6
	select CPU_CACHE_VIPT
	select CPU_CP15_MMU
	select CPU_HAS_ASID
	select CPU_COPY_V6 if MMU
	select CPU_TLB_V6 if MMU

@@ -376,6 +377,7 @@ config CPU_V7
	select CPU_CACHE_V7
	select CPU_CACHE_VIPT
	select CPU_CP15_MMU
	select CPU_HAS_ASID
	select CPU_COPY_V6 if MMU
	select CPU_TLB_V6 if MMU

@@ -498,6 +500,12 @@ config CPU_TLB_V6

endif

config CPU_HAS_ASID
	bool
	help
	  This indicates whether the CPU has the ASID register; used to
	  tag TLB and possibly cache entries.

config CPU_CP15
	bool
	help
+2 −2
Original line number Diff line number Diff line
@@ -4,13 +4,13 @@
#ifdef CONFIG_MMU

typedef struct {
#if __LINUX_ARM_ARCH__ >= 6
#ifdef CONFIG_CPU_HAS_ASID
	unsigned int id;
#endif
	unsigned int kvm_seq;
} mm_context_t;

#if __LINUX_ARM_ARCH__ >= 6
#ifdef CONFIG_CPU_HAS_ASID
#define ASID(mm)	((mm)->context.id & 255)
#else
#define ASID(mm)	(0)
+1 −1
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@

void __check_kvm_seq(struct mm_struct *mm);

#if __LINUX_ARM_ARCH__ >= 6
#ifdef CONFIG_CPU_HAS_ASID

/*
 * On ARMv6, we have the following structure in the Context ID: