| 
									
										
										
										
											2013-01-18 15:12:19 +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 _ASM_ARC_MMU_H
 | 
					
						
							|  |  |  | #define _ASM_ARC_MMU_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-01 12:55:42 +05:30
										 |  |  | #if defined(CONFIG_ARC_MMU_V1)
 | 
					
						
							|  |  |  | #define CONFIG_ARC_MMU_VER 1
 | 
					
						
							|  |  |  | #elif defined(CONFIG_ARC_MMU_V2)
 | 
					
						
							|  |  |  | #define CONFIG_ARC_MMU_VER 2
 | 
					
						
							|  |  |  | #elif defined(CONFIG_ARC_MMU_V3)
 | 
					
						
							|  |  |  | #define CONFIG_ARC_MMU_VER 3
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-14 13:28:17 +05:30
										 |  |  | /* MMU Management regs */ | 
					
						
							|  |  |  | #define ARC_REG_MMU_BCR		0x06f
 | 
					
						
							|  |  |  | #define ARC_REG_TLBPD0		0x405
 | 
					
						
							|  |  |  | #define ARC_REG_TLBPD1		0x406
 | 
					
						
							|  |  |  | #define ARC_REG_TLBINDEX	0x407
 | 
					
						
							|  |  |  | #define ARC_REG_TLBCOMMAND	0x408
 | 
					
						
							|  |  |  | #define ARC_REG_PID		0x409
 | 
					
						
							|  |  |  | #define ARC_REG_SCRATCH_DATA0	0x418
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Bits in MMU PID register */ | 
					
						
							|  |  |  | #define MMU_ENABLE		(1 << 31)	/* Enable MMU for process */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Error code if probe fails */ | 
					
						
							|  |  |  | #define TLB_LKUP_ERR		0x80000000
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-01 18:12:28 +05:30
										 |  |  | #define TLB_DUP_ERR	(TLB_LKUP_ERR | 0x00000001)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-14 13:28:17 +05:30
										 |  |  | /* TLB Commands */ | 
					
						
							|  |  |  | #define TLBWrite    0x1
 | 
					
						
							|  |  |  | #define TLBRead     0x2
 | 
					
						
							|  |  |  | #define TLBGetIndex 0x3
 | 
					
						
							|  |  |  | #define TLBProbe    0x4
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if (CONFIG_ARC_MMU_VER >= 2)
 | 
					
						
							|  |  |  | #define TLBWriteNI  0x5		/* write JTLB without inv uTLBs */
 | 
					
						
							|  |  |  | #define TLBIVUTLB   0x6		/* explicitly inv uTLBs */
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-01-18 15:12:19 +05:30
										 |  |  | #ifndef __ASSEMBLY__
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef struct { | 
					
						
							| 
									
										
										
										
											2013-08-23 19:16:34 +05:30
										 |  |  | 	unsigned long asid[NR_CPUS];	/* 8 bit MMU PID + Generation cycle */ | 
					
						
							| 
									
										
										
										
											2013-01-18 15:12:19 +05:30
										 |  |  | } mm_context_t; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-14 13:28:17 +05:30
										 |  |  | #ifdef CONFIG_ARC_DBG_TLB_PARANOIA
 | 
					
						
							| 
									
										
										
										
											2013-08-23 17:37:18 +05:30
										 |  |  | void tlb_paranoid_check(unsigned int mm_asid, unsigned long address); | 
					
						
							| 
									
										
										
										
											2013-05-14 13:28:17 +05:30
										 |  |  | #else
 | 
					
						
							|  |  |  | #define tlb_paranoid_check(a, b)
 | 
					
						
							| 
									
										
										
										
											2013-01-18 15:12:19 +05:30
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-14 13:28:17 +05:30
										 |  |  | void arc_mmu_init(void); | 
					
						
							|  |  |  | extern char *arc_mmu_mumbojumbo(int cpu_id, char *buf, int len); | 
					
						
							| 
									
										
										
										
											2013-09-05 19:19:06 +05:30
										 |  |  | void read_decode_mmu_bcr(void); | 
					
						
							| 
									
										
										
										
											2013-05-14 13:28:17 +05:30
										 |  |  | 
 | 
					
						
							|  |  |  | #endif	/* !__ASSEMBLY__ */
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-01-18 15:12:19 +05:30
										 |  |  | #endif
 |