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
/* 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-09-05 13:17:49 +05:30
# define CACHE_LINE_MASK (~(L1_CACHE_BYTES - 1))
2013-01-18 15:12:19 +05:30
2013-05-14 13:28:17 +05:30
/*
2014-09-19 01:28:24 +05:30
* ARC700 doesn ' t cache any access in top 1 G ( 0xc000 _0000 to 0xFFFF _FFFF )
2013-05-14 13:28:17 +05:30
* 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
2013-01-18 15:12:19 +05:30
# 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
extern void arc_cache_init ( void ) ;
extern char * arc_cache_mumbojumbo ( int cpu_id , char * buf , int len ) ;
2013-09-05 19:19:06 +05:30
extern void read_decode_cache_bcr ( void ) ;
2013-05-14 13:28:17 +05:30
# endif /* !__ASSEMBLY__ */
2013-01-18 15:12:19 +05:30
2014-03-07 18:08:11 +05:30
/* Instruction cache related Auxiliary registers */
# define ARC_REG_IC_BCR 0x77 /* Build Config reg */
# define ARC_REG_IC_IVIC 0x10
# define ARC_REG_IC_CTRL 0x11
# define ARC_REG_IC_IVIL 0x19
2015-06-04 14:39:15 +05:30
# if defined(CONFIG_ARC_MMU_V3) || defined(CONFIG_ARC_MMU_V4)
2014-03-07 18:08:11 +05:30
# define ARC_REG_IC_PTAG 0x1E
# endif
/* Bit val in IC_CTRL */
# define IC_CTRL_CACHE_DISABLE 0x1
/* Data cache related Auxiliary registers */
# define ARC_REG_DC_BCR 0x72 /* Build Config reg */
# define ARC_REG_DC_IVDC 0x47
# define ARC_REG_DC_CTRL 0x48
# define ARC_REG_DC_IVDL 0x4A
# define ARC_REG_DC_FLSH 0x4B
# define ARC_REG_DC_FLDL 0x4C
# define ARC_REG_DC_PTAG 0x5C
/* Bit val in DC_CTRL */
# define DC_CTRL_INV_MODE_FLUSH 0x40
# define DC_CTRL_FLUSH_STATUS 0x100
2015-04-06 17:23:57 +05:30
/*System-level cache (L2 cache) related Auxiliary registers */
# define ARC_REG_SLC_CFG 0x901
2015-04-03 12:37:07 +03:00
# define ARC_REG_SLC_CTRL 0x903
# define ARC_REG_SLC_FLUSH 0x904
# define ARC_REG_SLC_INVALIDATE 0x905
# define ARC_REG_SLC_RGN_START 0x914
# define ARC_REG_SLC_RGN_END 0x916
/* Bit val in SLC_CONTROL */
# define SLC_CTRL_IM 0x040
# define SLC_CTRL_DISABLE 0x001
# define SLC_CTRL_BUSY 0x100
# define SLC_CTRL_RGN_OP_INV 0x200
2015-04-06 17:23:57 +05:30
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 */