mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 13:44:26 -04:00
Merge master.kernel.org:/home/rmk/linux-2.6-arm
This commit is contained in:
commit
35b7ac4c48
26 changed files with 1037 additions and 219 deletions
|
|
@ -44,24 +44,12 @@
|
|||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#if 0
|
||||
# define __REG(x) (*((volatile u32 *)io_p2v(x)))
|
||||
#else
|
||||
/*
|
||||
* This __REG() version gives the same results as the one above, except
|
||||
* that we are fooling gcc somehow so it generates far better and smaller
|
||||
* assembly code for access to contigous registers. It's a shame that gcc
|
||||
* doesn't guess this by itself.
|
||||
*/
|
||||
#include <asm/types.h>
|
||||
typedef struct { volatile u32 offset[4096]; } __regbase;
|
||||
# define __REGP(x) ((__regbase *)((x)&~4095))->offset[((x)&4095)>>2]
|
||||
# define __REG(x) __REGP(io_p2v(x))
|
||||
#endif
|
||||
# define __REG(x) (*((volatile unsigned long *)io_p2v(x)))
|
||||
|
||||
/* With indexed regs we don't want to feed the index through io_p2v()
|
||||
especially if it is a variable, otherwise horrible code will result. */
|
||||
# define __REG2(x,y) (*(volatile u32 *)((u32)&__REG(x) + (y)))
|
||||
# define __REG2(x,y) \
|
||||
(*(volatile unsigned long *)((unsigned long)&__REG(x) + (y)))
|
||||
|
||||
# define __PREG(x) (io_v2p((u32)&(x)))
|
||||
|
||||
|
|
|
|||
|
|
@ -49,23 +49,9 @@
|
|||
( (((x)&0x00ffffff) | (((x)&(0x30000000>>VIO_SHIFT))<<VIO_SHIFT)) + PIO_START )
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
#include <asm/types.h>
|
||||
|
||||
#if 0
|
||||
# define __REG(x) (*((volatile u32 *)io_p2v(x)))
|
||||
#else
|
||||
/*
|
||||
* This __REG() version gives the same results as the one above, except
|
||||
* that we are fooling gcc somehow so it generates far better and smaller
|
||||
* assembly code for access to contigous registers. It's a shame that gcc
|
||||
* doesn't guess this by itself.
|
||||
*/
|
||||
typedef struct { volatile u32 offset[4096]; } __regbase;
|
||||
# define __REGP(x) ((__regbase *)((x)&~4095))->offset[((x)&4095)>>2]
|
||||
# define __REG(x) __REGP(io_p2v(x))
|
||||
#endif
|
||||
|
||||
# define __PREG(x) (io_v2p((u32)&(x)))
|
||||
# define __REG(x) (*((volatile unsigned long *)io_p2v(x)))
|
||||
# define __PREG(x) (io_v2p((unsigned long)&(x)))
|
||||
|
||||
#else
|
||||
|
||||
|
|
|
|||
|
|
@ -256,7 +256,7 @@ extern void dmac_flush_range(unsigned long, unsigned long);
|
|||
* Convert calls to our calling convention.
|
||||
*/
|
||||
#define flush_cache_all() __cpuc_flush_kern_all()
|
||||
|
||||
#ifndef CONFIG_CPU_CACHE_VIPT
|
||||
static inline void flush_cache_mm(struct mm_struct *mm)
|
||||
{
|
||||
if (cpu_isset(smp_processor_id(), mm->cpu_vm_mask))
|
||||
|
|
@ -279,6 +279,11 @@ flush_cache_page(struct vm_area_struct *vma, unsigned long user_addr, unsigned l
|
|||
__cpuc_flush_user_range(addr, addr + PAGE_SIZE, vma->vm_flags);
|
||||
}
|
||||
}
|
||||
#else
|
||||
extern void flush_cache_mm(struct mm_struct *mm);
|
||||
extern void flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end);
|
||||
extern void flush_cache_page(struct vm_area_struct *vma, unsigned long user_addr, unsigned long pfn);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* flush_cache_user_range is used when we want to ensure that the
|
||||
|
|
|
|||
Loading…
Reference in a new issue