| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* | 
|  | 2 | * We need constants.h for: | 
|  | 3 | *  VMA_VM_MM | 
|  | 4 | *  VMA_VM_FLAGS | 
|  | 5 | *  VM_EXEC | 
|  | 6 | */ | 
| Sam Ravnborg | e6ae744 | 2005-09-09 21:08:59 +0200 | [diff] [blame] | 7 | #include <asm/asm-offsets.h> | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 8 | #include <asm/thread_info.h> | 
|  | 9 |  | 
|  | 10 | /* | 
|  | 11 | * vma_vm_mm - get mm pointer from vma pointer (vma->vm_mm) | 
|  | 12 | */ | 
|  | 13 | .macro	vma_vm_mm, rd, rn | 
|  | 14 | ldr	\rd, [\rn, #VMA_VM_MM] | 
|  | 15 | .endm | 
|  | 16 |  | 
|  | 17 | /* | 
|  | 18 | * vma_vm_flags - get vma->vm_flags | 
|  | 19 | */ | 
|  | 20 | .macro	vma_vm_flags, rd, rn | 
|  | 21 | ldr	\rd, [\rn, #VMA_VM_FLAGS] | 
|  | 22 | .endm | 
|  | 23 |  | 
|  | 24 | .macro	tsk_mm, rd, rn | 
|  | 25 | ldr	\rd, [\rn, #TI_TASK] | 
|  | 26 | ldr	\rd, [\rd, #TSK_ACTIVE_MM] | 
|  | 27 | .endm | 
|  | 28 |  | 
|  | 29 | /* | 
|  | 30 | * act_mm - get current->active_mm | 
|  | 31 | */ | 
|  | 32 | .macro	act_mm, rd | 
|  | 33 | bic	\rd, sp, #8128 | 
|  | 34 | bic	\rd, \rd, #63 | 
|  | 35 | ldr	\rd, [\rd, #TI_TASK] | 
|  | 36 | ldr	\rd, [\rd, #TSK_ACTIVE_MM] | 
|  | 37 | .endm | 
|  | 38 |  | 
|  | 39 | /* | 
|  | 40 | * mmid - get context id from mm pointer (mm->context.id) | 
|  | 41 | */ | 
|  | 42 | .macro	mmid, rd, rn | 
|  | 43 | ldr	\rd, [\rn, #MM_CONTEXT_ID] | 
|  | 44 | .endm | 
|  | 45 |  | 
|  | 46 | /* | 
|  | 47 | * mask_asid - mask the ASID from the context ID | 
|  | 48 | */ | 
|  | 49 | .macro	asid, rd, rn | 
|  | 50 | and	\rd, \rn, #255 | 
|  | 51 | .endm | 
| Russell King | 22b1908 | 2006-06-29 15:09:57 +0100 | [diff] [blame] | 52 |  | 
|  | 53 | .macro	crval, clear, mmuset, ucset | 
|  | 54 | #ifdef CONFIG_MMU | 
|  | 55 | .word	\clear | 
|  | 56 | .word	\mmuset | 
|  | 57 | #else | 
|  | 58 | .word	\clear | 
|  | 59 | .word	\ucset | 
|  | 60 | #endif | 
|  | 61 | .endm | 
| Catalin Marinas | bbe8888 | 2007-05-08 22:27:46 +0100 | [diff] [blame] | 62 |  | 
|  | 63 | /* | 
|  | 64 | * cache_line_size - get the cache line size from the CSIDR register | 
|  | 65 | * (available on ARMv7+). It assumes that the CSSR register was configured | 
|  | 66 | * to access the L1 data cache CSIDR. | 
|  | 67 | */ | 
|  | 68 | .macro	dcache_line_size, reg, tmp | 
|  | 69 | mrc	p15, 1, \tmp, c0, c0, 0		@ read CSIDR | 
|  | 70 | and	\tmp, \tmp, #7			@ cache line size encoding | 
|  | 71 | mov	\reg, #16			@ size offset | 
|  | 72 | mov	\reg, \reg, lsl \tmp		@ actual cache line size | 
|  | 73 | .endm |