ARC: Fundamental ARCH data-types/defines
* L1_CACHE_SHIFT
* PAGE_SIZE, PAGE_OFFSET
* struct pt_regs, struct user_regs_struct
* struct thread_struct, cpu_relax(), task_pt_regs(), start_thread(), ...
* struct thread_info, THREAD_SIZE, INIT_THREAD_INFO(), TIF_*, ...
* BUG()
* ELF_*
* Elf_*
To disallow user-space visibility into some of the core kernel data-types
such as struct pt_regs, #ifdef __KERNEL__ which also makes the UAPI header
spit (further patch in the series) to NOT export it to asm/uapi/ptrace.h
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Cc: Jonas Bonn <jonas.bonn@gmail.com>
Cc: Al Viro <viro@ZenIV.linux.org.uk>
Acked-by: Arnd Bergmann <arnd@arndb.de>
2013-01-18 15:12:17 +05:30
/*
* Copyright ( C ) 2004 , 2007 - 2010 , 2011 - 2012 Synopsys , Inc . ( www . synopsys . com )
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation .
*/
# ifndef __ARC_ASM_CACHE_H
# define __ARC_ASM_CACHE_H
2013-06-01 12:55:42 +05:30
# include <asm/mmu.h> /* some of cache registers depend on MMU ver */
ARC: Fundamental ARCH data-types/defines
* L1_CACHE_SHIFT
* PAGE_SIZE, PAGE_OFFSET
* struct pt_regs, struct user_regs_struct
* struct thread_struct, cpu_relax(), task_pt_regs(), start_thread(), ...
* struct thread_info, THREAD_SIZE, INIT_THREAD_INFO(), TIF_*, ...
* BUG()
* ELF_*
* Elf_*
To disallow user-space visibility into some of the core kernel data-types
such as struct pt_regs, #ifdef __KERNEL__ which also makes the UAPI header
spit (further patch in the series) to NOT export it to asm/uapi/ptrace.h
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Cc: Jonas Bonn <jonas.bonn@gmail.com>
Cc: Al Viro <viro@ZenIV.linux.org.uk>
Acked-by: Arnd Bergmann <arnd@arndb.de>
2013-01-18 15:12:17 +05:30
/* In case $$ not config, setup a dummy number for rest of kernel */
# ifndef CONFIG_ARC_CACHE_LINE_SHIFT
# define L1_CACHE_SHIFT 6
# else
# define L1_CACHE_SHIFT CONFIG_ARC_CACHE_LINE_SHIFT
# endif
# define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
2013-01-18 15:12:19 +05:30
# define ARC_ICACHE_WAYS 2
# define ARC_DCACHE_WAYS 4
/* Helpers */
# define ARC_ICACHE_LINE_LEN L1_CACHE_BYTES
# define ARC_DCACHE_LINE_LEN L1_CACHE_BYTES
# define ICACHE_LINE_MASK (~(ARC_ICACHE_LINE_LEN - 1))
# define DCACHE_LINE_MASK (~(ARC_DCACHE_LINE_LEN - 1))
# if ARC_ICACHE_LINE_LEN != ARC_DCACHE_LINE_LEN
# error "Need to fix some code as I / D cache lines not same"
# else
# define is_not_cache_aligned(p) ((unsigned long)p & (~DCACHE_LINE_MASK))
# endif
# ifndef __ASSEMBLY__
/* Uncached access macros */
# define arc_read_uncached_32(ptr) \
( { \
unsigned int __ret ; \
__asm__ __volatile__ ( \
" ld.di %0, [%1] \n " \
: " =r " ( __ret ) \
: " r " ( ptr ) ) ; \
__ret ; \
} )
# define arc_write_uncached_32(ptr, data)\
( { \
__asm__ __volatile__ ( \
" st.di %0, [%1] \n " \
: \
: " r " ( data ) , " r " ( ptr ) ) ; \
} )
# define ARCH_DMA_MINALIGN L1_CACHE_BYTES
/*
* ARC700 doesn ' t cache any access in top 256 M .
* Ideal for wiring memory mapped peripherals as we don ' t need to do
* explicit uncached accesses ( LD . di / ST . di ) hence more portable drivers
*/
# define ARC_UNCACHED_ADDR_SPACE 0xc0000000
extern void arc_cache_init ( void ) ;
extern char * arc_cache_mumbojumbo ( int cpu_id , char * buf , int len ) ;
extern void __init read_decode_cache_bcr ( void ) ;
# endif
ARC: Fundamental ARCH data-types/defines
* L1_CACHE_SHIFT
* PAGE_SIZE, PAGE_OFFSET
* struct pt_regs, struct user_regs_struct
* struct thread_struct, cpu_relax(), task_pt_regs(), start_thread(), ...
* struct thread_info, THREAD_SIZE, INIT_THREAD_INFO(), TIF_*, ...
* BUG()
* ELF_*
* Elf_*
To disallow user-space visibility into some of the core kernel data-types
such as struct pt_regs, #ifdef __KERNEL__ which also makes the UAPI header
spit (further patch in the series) to NOT export it to asm/uapi/ptrace.h
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Cc: Jonas Bonn <jonas.bonn@gmail.com>
Cc: Al Viro <viro@ZenIV.linux.org.uk>
Acked-by: Arnd Bergmann <arnd@arndb.de>
2013-01-18 15:12:17 +05:30
# endif /* _ASM_CACHE_H */