diff options
Diffstat (limited to 'arch/arm/mm/proc-macros.S')
-rw-r--r-- | arch/arm/mm/proc-macros.S | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/arch/arm/mm/proc-macros.S b/arch/arm/mm/proc-macros.S new file mode 100644 index 000000000000..9137fe563599 --- /dev/null +++ b/arch/arm/mm/proc-macros.S | |||
@@ -0,0 +1,51 @@ | |||
1 | /* | ||
2 | * We need constants.h for: | ||
3 | * VMA_VM_MM | ||
4 | * VMA_VM_FLAGS | ||
5 | * VM_EXEC | ||
6 | */ | ||
7 | #include <asm/constants.h> | ||
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 | ||