mirror of
https://github.com/torvalds/linux.git
synced 2026-09-15 15:01:08 -04:00
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: [ARM] 4017/1: [Jornada7xx] - Updating Jornada720.c [ARM] 3992/1: i.MX/MX1 CPU Frequency scaling support [ARM] Provide a method to alter the control register [ARM] 4016/1: prefetch macro is wrong wrt gcc's "delete-null-pointer-checks" [ARM] Remove empty fixup function [ARM] 4014/1: include drivers/hid/Kconfig [ARM] 4013/1: clocksource driver for netx [ARM] 4012/1: Clocksource for pxa [ARM] Clean up ioremap code [ARM] Unuse another Linux PTE bit [ARM] Clean up KERNEL_RAM_ADDR [ARM] Add sys_*at syscalls [ARM] 4004/1: S3C24XX: UDC remove implict addition of VA to regs [ARM] Formalise the ARMv6 processor name string [ARM] Handle HWCAP_VFP in VFP support code [ARM] 4011/1: AT91SAM9260: Fix compilation with NAND driver [ARM] 4010/1: AT91SAM9260-EK board: Prepare for MACB Ethernet support
This commit is contained in:
@@ -41,7 +41,13 @@
|
||||
|
||||
/* PLL registers */
|
||||
#define CSCR __REG(IMX_PLL_BASE) /* Clock Source Control Register */
|
||||
#define CSCR_SYSTEM_SEL (1<<16)
|
||||
#define CSCR_SPLL_RESTART (1<<22)
|
||||
#define CSCR_MPLL_RESTART (1<<21)
|
||||
#define CSCR_SYSTEM_SEL (1<<16)
|
||||
#define CSCR_BCLK_DIV (0xf<<10)
|
||||
#define CSCR_MPU_PRESC (1<<15)
|
||||
#define CSCR_SPEN (1<<1)
|
||||
#define CSCR_MPEN (1<<0)
|
||||
|
||||
#define MPCTL0 __REG(IMX_PLL_BASE + 0x4) /* MCU PLL Control Register 0 */
|
||||
#define MPCTL1 __REG(IMX_PLL_BASE + 0x8) /* MCU PLL and System Clock Register 1 */
|
||||
@@ -49,8 +55,6 @@
|
||||
#define SPCTL1 __REG(IMX_PLL_BASE + 0x10) /* System PLL Control Register 1 */
|
||||
#define PCDR __REG(IMX_PLL_BASE + 0x20) /* Peripheral Clock Divider Register */
|
||||
|
||||
#define CSCR_MPLL_RESTART (1<<21)
|
||||
|
||||
/*
|
||||
* GPIO Module and I/O Multiplexer
|
||||
* x = 0..3 for reg_A, reg_B, reg_C, reg_D
|
||||
|
||||
@@ -11,8 +11,7 @@
|
||||
#ifndef __ASM_ARCH_REGS_UDC_H
|
||||
#define __ASM_ARCH_REGS_UDC_H
|
||||
|
||||
|
||||
#define S3C2410_USBDREG(x) ((x) + S3C24XX_VA_USBDEV)
|
||||
#define S3C2410_USBDREG(x) (x)
|
||||
|
||||
#define S3C2410_UDC_FUNC_ADDR_REG S3C2410_USBDREG(0x0140)
|
||||
#define S3C2410_UDC_PWR_REG S3C2410_USBDREG(0x0144)
|
||||
@@ -136,8 +135,8 @@
|
||||
#define S3C2410_UDC_OCSR2_ISO (1<<6) // R/W
|
||||
#define S3C2410_UDC_OCSR2_DMAIEN (1<<5) // R/W
|
||||
|
||||
#define S3C2410_UDC_SETIX(x) \
|
||||
__raw_writel(S3C2410_UDC_INDEX_ ## x, S3C2410_UDC_INDEX_REG);
|
||||
#define S3C2410_UDC_SETIX(base,x) \
|
||||
writel(S3C2410_UDC_INDEX_ ## x, base+S3C2410_UDC_INDEX_REG);
|
||||
|
||||
|
||||
#define S3C2410_UDC_EP0_CSR_OPKRDY (1<<0)
|
||||
|
||||
@@ -50,9 +50,10 @@ extern struct processor {
|
||||
*/
|
||||
void (*switch_mm)(unsigned long pgd_phys, struct mm_struct *mm);
|
||||
/*
|
||||
* Set a PTE
|
||||
* Set a possibly extended PTE. Non-extended PTEs should
|
||||
* ignore 'ext'.
|
||||
*/
|
||||
void (*set_pte)(pte_t *ptep, pte_t pte);
|
||||
void (*set_pte_ext)(pte_t *ptep, pte_t pte, unsigned int ext);
|
||||
} processor;
|
||||
|
||||
#define cpu_proc_init() processor._proc_init()
|
||||
@@ -60,5 +61,5 @@ extern struct processor {
|
||||
#define cpu_reset(addr) processor.reset(addr)
|
||||
#define cpu_do_idle() processor._do_idle()
|
||||
#define cpu_dcache_clean_area(addr,sz) processor.dcache_clean_area(addr,sz)
|
||||
#define cpu_set_pte(ptep, pte) processor.set_pte(ptep, pte)
|
||||
#define cpu_set_pte_ext(ptep,pte,ext) processor.set_pte_ext(ptep,pte,ext)
|
||||
#define cpu_do_switch_mm(pgd,mm) processor.switch_mm(pgd,mm)
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
#define cpu_do_idle __cpu_fn(CPU_NAME,_do_idle)
|
||||
#define cpu_dcache_clean_area __cpu_fn(CPU_NAME,_dcache_clean_area)
|
||||
#define cpu_do_switch_mm __cpu_fn(CPU_NAME,_switch_mm)
|
||||
#define cpu_set_pte __cpu_fn(CPU_NAME,_set_pte)
|
||||
#define cpu_set_pte_ext __cpu_fn(CPU_NAME,_set_pte_ext)
|
||||
|
||||
#include <asm/page.h>
|
||||
|
||||
@@ -40,5 +40,5 @@ extern void cpu_proc_fin(void);
|
||||
extern int cpu_do_idle(void);
|
||||
extern void cpu_dcache_clean_area(void *, int);
|
||||
extern void cpu_do_switch_mm(unsigned long pgd_phys, struct mm_struct *mm);
|
||||
extern void cpu_set_pte(pte_t *ptep, pte_t pte);
|
||||
extern void cpu_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
|
||||
extern void cpu_reset(unsigned long addr) __attribute__((noreturn));
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
#include <asm/memory.h>
|
||||
#include <asm/arch/vmalloc.h>
|
||||
#include <asm/pgtable-hwdef.h>
|
||||
|
||||
/*
|
||||
* Just any arbitrary offset to the start of the vmalloc VM area: the
|
||||
@@ -170,7 +171,6 @@ extern void __pgd_error(const char *file, int line, unsigned long val);
|
||||
#define L_PTE_EXEC (1 << 6)
|
||||
#define L_PTE_DIRTY (1 << 7)
|
||||
#define L_PTE_SHARED (1 << 10) /* shared(v6), coherent(xsc3) */
|
||||
#define L_PTE_ASID (1 << 11) /* non-global (use ASID, v6) */
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
@@ -228,7 +228,7 @@ extern struct page *empty_zero_page;
|
||||
#define pfn_pte(pfn,prot) (__pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot)))
|
||||
|
||||
#define pte_none(pte) (!pte_val(pte))
|
||||
#define pte_clear(mm,addr,ptep) set_pte_at((mm),(addr),(ptep), __pte(0))
|
||||
#define pte_clear(mm,addr,ptep) set_pte_ext(ptep, __pte(0), 0)
|
||||
#define pte_page(pte) (pfn_to_page(pte_pfn(pte)))
|
||||
#define pte_offset_kernel(dir,addr) (pmd_page_vaddr(*(dir)) + __pte_index(addr))
|
||||
#define pte_offset_map(dir,addr) (pmd_page_vaddr(*(dir)) + __pte_index(addr))
|
||||
@@ -236,8 +236,11 @@ extern struct page *empty_zero_page;
|
||||
#define pte_unmap(pte) do { } while (0)
|
||||
#define pte_unmap_nested(pte) do { } while (0)
|
||||
|
||||
#define set_pte(ptep, pte) cpu_set_pte(ptep,pte)
|
||||
#define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval)
|
||||
#define set_pte_ext(ptep,pte,ext) cpu_set_pte_ext(ptep,pte,ext)
|
||||
|
||||
#define set_pte_at(mm,addr,ptep,pteval) do { \
|
||||
set_pte_ext(ptep, pteval, (addr) >= PAGE_OFFSET ? 0 : PTE_EXT_NG); \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* The following only work if pte_present() is true.
|
||||
|
||||
@@ -103,14 +103,14 @@ extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
|
||||
#if __LINUX_ARM_ARCH__ >= 5
|
||||
|
||||
#define ARCH_HAS_PREFETCH
|
||||
#define prefetch(ptr) \
|
||||
({ \
|
||||
__asm__ __volatile__( \
|
||||
"pld\t%0" \
|
||||
: \
|
||||
: "o" (*(char *)(ptr)) \
|
||||
: "cc"); \
|
||||
})
|
||||
static inline void prefetch(const void *ptr)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
"pld\t%0"
|
||||
:
|
||||
: "o" (*(char *)ptr)
|
||||
: "cc");
|
||||
}
|
||||
|
||||
#define ARCH_HAS_PREFETCHW
|
||||
#define prefetchw(ptr) prefetch(ptr)
|
||||
|
||||
@@ -139,23 +139,60 @@ static inline int cpu_is_xsc3(void)
|
||||
#define cpu_is_xscale() 1
|
||||
#endif
|
||||
|
||||
#define set_cr(x) \
|
||||
__asm__ __volatile__( \
|
||||
"mcr p15, 0, %0, c1, c0, 0 @ set CR" \
|
||||
: : "r" (x) : "cc")
|
||||
static inline unsigned int get_cr(void)
|
||||
{
|
||||
unsigned int val;
|
||||
asm("mrc p15, 0, %0, c1, c0, 0 @ get CR" : "=r" (val) : : "cc");
|
||||
return val;
|
||||
}
|
||||
|
||||
#define get_cr() \
|
||||
({ \
|
||||
unsigned int __val; \
|
||||
__asm__ __volatile__( \
|
||||
"mrc p15, 0, %0, c1, c0, 0 @ get CR" \
|
||||
: "=r" (__val) : : "cc"); \
|
||||
__val; \
|
||||
})
|
||||
static inline void set_cr(unsigned int val)
|
||||
{
|
||||
asm volatile("mcr p15, 0, %0, c1, c0, 0 @ set CR"
|
||||
: : "r" (val) : "cc");
|
||||
}
|
||||
|
||||
#define CPACC_FULL(n) (3 << (n * 2))
|
||||
#define CPACC_SVC(n) (1 << (n * 2))
|
||||
#define CPACC_DISABLE(n) (0 << (n * 2))
|
||||
|
||||
static inline unsigned int get_copro_access(void)
|
||||
{
|
||||
unsigned int val;
|
||||
asm("mrc p15, 0, %0, c1, c0, 2 @ get copro access"
|
||||
: "=r" (val) : : "cc");
|
||||
return val;
|
||||
}
|
||||
|
||||
static inline void set_copro_access(unsigned int val)
|
||||
{
|
||||
asm volatile("mcr p15, 0, %0, c1, c0, 2 @ set copro access"
|
||||
: : "r" (val) : "cc");
|
||||
}
|
||||
|
||||
extern unsigned long cr_no_alignment; /* defined in entry-armv.S */
|
||||
extern unsigned long cr_alignment; /* defined in entry-armv.S */
|
||||
|
||||
#ifndef CONFIG_SMP
|
||||
static inline void adjust_cr(unsigned long mask, unsigned long set)
|
||||
{
|
||||
unsigned long flags, cr;
|
||||
|
||||
mask &= ~CR_A;
|
||||
|
||||
set &= mask;
|
||||
|
||||
local_irq_save(flags);
|
||||
|
||||
cr_no_alignment = (cr_no_alignment & ~mask) | set;
|
||||
cr_alignment = (cr_alignment & ~mask) | set;
|
||||
|
||||
set_cr((get_cr() & ~mask) | set);
|
||||
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
#endif
|
||||
|
||||
#define UDBG_UNDEFINED (1 << 0)
|
||||
#define UDBG_SYSCALL (1 << 1)
|
||||
#define UDBG_BADABORT (1 << 2)
|
||||
|
||||
@@ -347,6 +347,19 @@
|
||||
#define __NR_mbind (__NR_SYSCALL_BASE+319)
|
||||
#define __NR_get_mempolicy (__NR_SYSCALL_BASE+320)
|
||||
#define __NR_set_mempolicy (__NR_SYSCALL_BASE+321)
|
||||
#define __NR_openat (__NR_SYSCALL_BASE+322)
|
||||
#define __NR_mkdirat (__NR_SYSCALL_BASE+323)
|
||||
#define __NR_mknodat (__NR_SYSCALL_BASE+324)
|
||||
#define __NR_fchownat (__NR_SYSCALL_BASE+325)
|
||||
#define __NR_futimesat (__NR_SYSCALL_BASE+326)
|
||||
#define __NR_fstatat64 (__NR_SYSCALL_BASE+327)
|
||||
#define __NR_unlinkat (__NR_SYSCALL_BASE+328)
|
||||
#define __NR_renameat (__NR_SYSCALL_BASE+329)
|
||||
#define __NR_linkat (__NR_SYSCALL_BASE+330)
|
||||
#define __NR_symlinkat (__NR_SYSCALL_BASE+331)
|
||||
#define __NR_readlinkat (__NR_SYSCALL_BASE+332)
|
||||
#define __NR_fchmodat (__NR_SYSCALL_BASE+333)
|
||||
#define __NR_faccessat (__NR_SYSCALL_BASE+334)
|
||||
|
||||
/*
|
||||
* The following SWIs are ARM private.
|
||||
|
||||
Reference in New Issue
Block a user