Skip to content

Commit

Permalink
[ARM] ARMv6: add CPU_HAS_ASID configuration
Browse files Browse the repository at this point in the history
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: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Russell King authored and Russell King committed May 17, 2007
1 parent c6af66b commit 516793c
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 4 deletions.
2 changes: 1 addition & 1 deletion arch/arm/kernel/asm-offsets.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 8 additions & 0 deletions arch/arm/mm/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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

Expand Down Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions include/asm-arm/mmu.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion include/asm-arm/mmu_context.h
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down

0 comments on commit 516793c

Please sign in to comment.