Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm
* 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm: (417 commits) MAINTAINERS: EB110ATX is not ebsa110 MAINTAINERS: update Eric Miao's email address and status fb: add support of LCD display controller on pxa168/910 (base layer) [ARM] 5552/1: ep93xx get_uart_rate(): use EP93XX_SYSCON_PWRCNT and EP93XX_SYSCON_PWRCN [ARM] pxa/sharpsl_pm: zaurus needs generic pxa suspend/resume routines [ARM] 5544/1: Trust PrimeCell resource sizes [ARM] pxa/sharpsl_pm: cleanup of gpio-related code. [ARM] pxa/sharpsl_pm: drop set_irq_type calls [ARM] pxa/sharpsl_pm: merge pxa-specific code into generic one [ARM] pxa/sharpsl_pm: merge the two sharpsl_pm.c since it's now pxa specific [ARM] sa1100: remove unused collie_pm.c [ARM] pxa: fix the conflicting non-static declarations of global_gpios[] [ARM] 5550/1: Add default configure file for w90p910 platform [ARM] 5549/1: Add clock api for w90p910 platform. [ARM] 5548/1: Add gpio api for w90p910 platform [ARM] 5551/1: Add multi-function pin api for w90p910 platform. [ARM] Make ARM_VIC_NR depend on ARM_VIC [ARM] 5546/1: ARM PL022 SSP/SPI driver v3 ARM: OMAP4: SMP: Update defconfig for OMAP4430 ARM: OMAP4: SMP: Enable SMP support for OMAP4430 ...
This commit is contained in:
@ -391,7 +391,7 @@ config CPU_FEROCEON_OLD_ID
|
||||
|
||||
# ARMv6
|
||||
config CPU_V6
|
||||
bool "Support ARM V6 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB
|
||||
bool "Support ARM V6 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX
|
||||
select CPU_32v6
|
||||
select CPU_ABRT_EV6
|
||||
select CPU_PABRT_NOIFAR
|
||||
@ -416,7 +416,7 @@ config CPU_32v6K
|
||||
|
||||
# ARMv7
|
||||
config CPU_V7
|
||||
bool "Support ARM V7 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB
|
||||
bool "Support ARM V7 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX
|
||||
select CPU_32v6K
|
||||
select CPU_32v7
|
||||
select CPU_ABRT_EV7
|
||||
@ -639,10 +639,23 @@ config CPU_BIG_ENDIAN
|
||||
port must properly enable any big-endian related features
|
||||
of your chipset/board/processor.
|
||||
|
||||
config CPU_ENDIAN_BE8
|
||||
bool
|
||||
depends on CPU_BIG_ENDIAN
|
||||
default CPU_V6 || CPU_V7
|
||||
help
|
||||
Support for the BE-8 (big-endian) mode on ARMv6 and ARMv7 processors.
|
||||
|
||||
config CPU_ENDIAN_BE32
|
||||
bool
|
||||
depends on CPU_BIG_ENDIAN
|
||||
default !CPU_ENDIAN_BE8
|
||||
help
|
||||
Support for the BE-32 (big-endian) mode on pre-ARMv6 processors.
|
||||
|
||||
config CPU_HIGH_VECTOR
|
||||
depends on !MMU && CPU_CP15 && !CPU_ARM740T
|
||||
bool "Select the High exception vector"
|
||||
default n
|
||||
help
|
||||
Say Y here to select high exception vector(0xFFFF0000~).
|
||||
The exception vector can be vary depending on the platform
|
||||
@ -726,7 +739,6 @@ config NEEDS_SYSCALL_FOR_CMPXCHG
|
||||
|
||||
config OUTER_CACHE
|
||||
bool
|
||||
default n
|
||||
|
||||
config CACHE_FEROCEON_L2
|
||||
bool "Enable the Feroceon L2 cache controller"
|
||||
@ -739,7 +751,6 @@ config CACHE_FEROCEON_L2
|
||||
config CACHE_FEROCEON_L2_WRITETHROUGH
|
||||
bool "Force Feroceon L2 cache write through"
|
||||
depends on CACHE_FEROCEON_L2
|
||||
default n
|
||||
help
|
||||
Say Y here to use the Feroceon L2 cache in writethrough mode.
|
||||
Unless you specifically require this, say N for writeback mode.
|
||||
@ -747,7 +758,7 @@ config CACHE_FEROCEON_L2_WRITETHROUGH
|
||||
config CACHE_L2X0
|
||||
bool "Enable the L2x0 outer cache controller"
|
||||
depends on REALVIEW_EB_ARM11MP || MACH_REALVIEW_PB11MP || MACH_REALVIEW_PB1176 || \
|
||||
REALVIEW_EB_A9MP || ARCH_MX35 || ARCH_MX31
|
||||
REALVIEW_EB_A9MP || ARCH_MX35 || ARCH_MX31 || MACH_REALVIEW_PBX
|
||||
default y
|
||||
select OUTER_CACHE
|
||||
help
|
||||
|
@ -37,6 +37,9 @@ ENTRY(v6_early_abort)
|
||||
movne pc, lr
|
||||
do_thumb_abort
|
||||
ldreq r3, [r2] @ read aborted ARM instruction
|
||||
#ifdef CONFIG_CPU_ENDIAN_BE8
|
||||
reveq r3, r3
|
||||
#endif
|
||||
do_ldrd_abort
|
||||
tst r3, #1 << 20 @ L = 0 -> write
|
||||
orreq r1, r1, #1 << 11 @ yes.
|
||||
|
@ -110,6 +110,12 @@ static int remap_area_pages(unsigned long start, unsigned long pfn,
|
||||
return err;
|
||||
}
|
||||
|
||||
int ioremap_page(unsigned long virt, unsigned long phys,
|
||||
const struct mem_type *mtype)
|
||||
{
|
||||
return remap_area_pages(virt, __phys_to_pfn(phys), PAGE_SIZE, mtype);
|
||||
}
|
||||
EXPORT_SYMBOL(ioremap_page);
|
||||
|
||||
void __check_kvm_seq(struct mm_struct *mm)
|
||||
{
|
||||
|
@ -255,6 +255,7 @@ const struct mem_type *get_mem_type(unsigned int type)
|
||||
{
|
||||
return type < ARRAY_SIZE(mem_types) ? &mem_types[type] : NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(get_mem_type);
|
||||
|
||||
/*
|
||||
* Adjust the PMD section entries according to the CPU in use.
|
||||
@ -839,6 +840,20 @@ void __init reserve_node_zero(pg_data_t *pgdat)
|
||||
reserve_bootmem_node(pgdat, 0xa0200000, 0x1000,
|
||||
BOOTMEM_EXCLUSIVE);
|
||||
|
||||
/*
|
||||
* U300 - This platform family can share physical memory
|
||||
* between two ARM cpus, one running Linux and the other
|
||||
* running another OS.
|
||||
*/
|
||||
if (machine_is_u300()) {
|
||||
#ifdef CONFIG_MACH_U300_SINGLE_RAM
|
||||
#if ((CONFIG_MACH_U300_ACCESS_MEM_SIZE & 1) == 1) && \
|
||||
CONFIG_MACH_U300_2MB_ALIGNMENT_FIX
|
||||
res_size = 0x00100000;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SA1111
|
||||
/*
|
||||
* Because of the SA1111 DMA bug, we want to preserve our
|
||||
|
@ -170,6 +170,9 @@ __v6_setup:
|
||||
#endif /* CONFIG_MMU */
|
||||
adr r5, v6_crval
|
||||
ldmia r5, {r5, r6}
|
||||
#ifdef CONFIG_CPU_ENDIAN_BE8
|
||||
orr r6, r6, #1 << 25 @ big-endian page tables
|
||||
#endif
|
||||
mrc p15, 0, r0, c1, c0, 0 @ read control register
|
||||
bic r0, r0, r5 @ clear bits them
|
||||
orr r0, r0, r6 @ set them
|
||||
|
@ -19,17 +19,23 @@
|
||||
|
||||
#include "proc-macros.S"
|
||||
|
||||
#define TTB_C (1 << 0)
|
||||
#define TTB_S (1 << 1)
|
||||
#define TTB_RGN_NC (0 << 3)
|
||||
#define TTB_RGN_OC_WBWA (1 << 3)
|
||||
#define TTB_RGN_OC_WT (2 << 3)
|
||||
#define TTB_RGN_OC_WB (3 << 3)
|
||||
#define TTB_NOS (1 << 5)
|
||||
#define TTB_IRGN_NC ((0 << 0) | (0 << 6))
|
||||
#define TTB_IRGN_WBWA ((0 << 0) | (1 << 6))
|
||||
#define TTB_IRGN_WT ((1 << 0) | (0 << 6))
|
||||
#define TTB_IRGN_WB ((1 << 0) | (1 << 6))
|
||||
|
||||
#ifndef CONFIG_SMP
|
||||
#define TTB_FLAGS TTB_C|TTB_RGN_OC_WB @ mark PTWs cacheable, outer WB
|
||||
/* PTWs cacheable, inner WB not shareable, outer WB not shareable */
|
||||
#define TTB_FLAGS TTB_IRGN_WB|TTB_RGN_OC_WB
|
||||
#else
|
||||
#define TTB_FLAGS TTB_C|TTB_S|TTB_RGN_OC_WBWA @ mark PTWs cacheable and shared, outer WBWA
|
||||
/* PTWs cacheable, inner WBWA shareable, outer WBWA not shareable */
|
||||
#define TTB_FLAGS TTB_IRGN_WBWA|TTB_S|TTB_NOS|TTB_RGN_OC_WBWA
|
||||
#endif
|
||||
|
||||
ENTRY(cpu_v7_proc_init)
|
||||
@ -176,8 +182,8 @@ cpu_v7_name:
|
||||
*/
|
||||
__v7_setup:
|
||||
#ifdef CONFIG_SMP
|
||||
mrc p15, 0, r0, c1, c0, 1 @ Enable SMP/nAMP mode
|
||||
orr r0, r0, #(0x1 << 6)
|
||||
mrc p15, 0, r0, c1, c0, 1 @ Enable SMP/nAMP mode and
|
||||
orr r0, r0, #(1 << 6) | (1 << 0) @ TLB ops broadcasting
|
||||
mcr p15, 0, r0, c1, c0, 1
|
||||
#endif
|
||||
adr r12, __v7_setup_stack @ the local stack
|
||||
@ -227,12 +233,43 @@ __v7_setup:
|
||||
mov r10, #0x1f @ domains 0, 1 = manager
|
||||
mcr p15, 0, r10, c3, c0, 0 @ load domain access register
|
||||
#endif
|
||||
ldr r5, =0xff0aa1a8
|
||||
ldr r6, =0x40e040e0
|
||||
/*
|
||||
* Memory region attributes with SCTLR.TRE=1
|
||||
*
|
||||
* n = TEX[0],C,B
|
||||
* TR = PRRR[2n+1:2n] - memory type
|
||||
* IR = NMRR[2n+1:2n] - inner cacheable property
|
||||
* OR = NMRR[2n+17:2n+16] - outer cacheable property
|
||||
*
|
||||
* n TR IR OR
|
||||
* UNCACHED 000 00
|
||||
* BUFFERABLE 001 10 00 00
|
||||
* WRITETHROUGH 010 10 10 10
|
||||
* WRITEBACK 011 10 11 11
|
||||
* reserved 110
|
||||
* WRITEALLOC 111 10 01 01
|
||||
* DEV_SHARED 100 01
|
||||
* DEV_NONSHARED 100 01
|
||||
* DEV_WC 001 10
|
||||
* DEV_CACHED 011 10
|
||||
*
|
||||
* Other attributes:
|
||||
*
|
||||
* DS0 = PRRR[16] = 0 - device shareable property
|
||||
* DS1 = PRRR[17] = 1 - device shareable property
|
||||
* NS0 = PRRR[18] = 0 - normal shareable property
|
||||
* NS1 = PRRR[19] = 1 - normal shareable property
|
||||
* NOS = PRRR[24+n] = 1 - not outer shareable
|
||||
*/
|
||||
ldr r5, =0xff0a81a8 @ PRRR
|
||||
ldr r6, =0x40e040e0 @ NMRR
|
||||
mcr p15, 0, r5, c10, c2, 0 @ write PRRR
|
||||
mcr p15, 0, r6, c10, c2, 1 @ write NMRR
|
||||
adr r5, v7_crval
|
||||
ldmia r5, {r5, r6}
|
||||
#ifdef CONFIG_CPU_ENDIAN_BE8
|
||||
orr r6, r6, #1 << 25 @ big-endian page tables
|
||||
#endif
|
||||
mrc p15, 0, r0, c1, c0, 0 @ read control register
|
||||
bic r0, r0, r5 @ clear bits them
|
||||
orr r0, r0, r6 @ set them
|
||||
@ -240,14 +277,14 @@ __v7_setup:
|
||||
ENDPROC(__v7_setup)
|
||||
|
||||
/* AT
|
||||
* TFR EV X F I D LR
|
||||
* .EEE ..EE PUI. .T.T 4RVI ZFRS BLDP WCAM
|
||||
* TFR EV X F I D LR S
|
||||
* .EEE ..EE PUI. .T.T 4RVI ZWRS BLDP WCAM
|
||||
* rxxx rrxx xxx0 0101 xxxx xxxx x111 xxxx < forced
|
||||
* 1 0 110 0011 1.00 .111 1101 < we want
|
||||
* 1 0 110 0011 1100 .111 1101 < we want
|
||||
*/
|
||||
.type v7_crval, #object
|
||||
v7_crval:
|
||||
crval clear=0x0120c302, mmuset=0x10c0387d, ucset=0x00c0187c
|
||||
crval clear=0x0120c302, mmuset=0x10c03c7d, ucset=0x00c01c7c
|
||||
|
||||
__v7_setup_stack:
|
||||
.space 4 * 11 @ 11 registers
|
||||
|
@ -42,9 +42,11 @@ ENTRY(v7wbi_flush_user_tlb_range)
|
||||
mov r1, r1, lsl #PAGE_SHIFT
|
||||
vma_vm_flags r2, r2 @ get vma->vm_flags
|
||||
1:
|
||||
mcr p15, 0, r0, c8, c6, 1 @ TLB invalidate D MVA (was 1)
|
||||
tst r2, #VM_EXEC @ Executable area ?
|
||||
mcrne p15, 0, r0, c8, c5, 1 @ TLB invalidate I MVA (was 1)
|
||||
#ifdef CONFIG_SMP
|
||||
mcr p15, 0, r0, c8, c3, 1 @ TLB invalidate U MVA (shareable)
|
||||
#else
|
||||
mcr p15, 0, r0, c8, c7, 1 @ TLB invalidate U MVA
|
||||
#endif
|
||||
add r0, r0, #PAGE_SZ
|
||||
cmp r0, r1
|
||||
blo 1b
|
||||
@ -69,8 +71,11 @@ ENTRY(v7wbi_flush_kern_tlb_range)
|
||||
mov r0, r0, lsl #PAGE_SHIFT
|
||||
mov r1, r1, lsl #PAGE_SHIFT
|
||||
1:
|
||||
mcr p15, 0, r0, c8, c6, 1 @ TLB invalidate D MVA
|
||||
mcr p15, 0, r0, c8, c5, 1 @ TLB invalidate I MVA
|
||||
#ifdef CONFIG_SMP
|
||||
mcr p15, 0, r0, c8, c3, 1 @ TLB invalidate U MVA (shareable)
|
||||
#else
|
||||
mcr p15, 0, r0, c8, c7, 1 @ TLB invalidate U MVA
|
||||
#endif
|
||||
add r0, r0, #PAGE_SZ
|
||||
cmp r0, r1
|
||||
blo 1b
|
||||
@ -87,5 +92,5 @@ ENDPROC(v7wbi_flush_kern_tlb_range)
|
||||
ENTRY(v7wbi_tlb_fns)
|
||||
.long v7wbi_flush_user_tlb_range
|
||||
.long v7wbi_flush_kern_tlb_range
|
||||
.long v6wbi_tlb_flags
|
||||
.long v7wbi_tlb_flags
|
||||
.size v7wbi_tlb_fns, . - v7wbi_tlb_fns
|
||||
|
Reference in New Issue
Block a user