OSDN Git Service

ARM: 7649/1: mm: mm->context.id fix for big-endian
authorBen Dooks <ben-linux@fluff.org>
Mon, 11 Feb 2013 11:25:06 +0000 (12:25 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sat, 16 Feb 2013 17:54:26 +0000 (17:54 +0000)
commit9520a5bece13b7382f4b0059180f61530c423c81
treeb1ea5eae98171dd61a35964160407abf9c0f18d0
parent352af7d4dd90bac3640ad2383e4e9f332d3a4537
ARM: 7649/1: mm: mm->context.id fix for big-endian

Since the new ASID code in b5466f8728527a05a493cc4abe9e6f034a1bbaab
("ARM: mm: remove IPI broadcasting on ASID rollover") was changed to
use 64bit operations it has broken the BE operation due to an issue
with the MM code accessing sub-fields of mm->context.id.

When running in BE mode we see the values in mm->context.id are stored
with the highest value first, so the LDR in the arch/arm/mm/proc-macros.S
reads the wrong part of this field. To resolve this, change the LDR in
the mmid macro to load from +4.

Acked-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mm/context.c
arch/arm/mm/proc-macros.S