52 строки
860 B
ArmAsm
52 строки
860 B
ArmAsm
|
/*
|
||
|
* We need constants.h for:
|
||
|
* VMA_VM_MM
|
||
|
* VMA_VM_FLAGS
|
||
|
* VM_EXEC
|
||
|
*/
|
||
|
#include <asm/constants.h>
|
||
|
#include <asm/thread_info.h>
|
||
|
|
||
|
/*
|
||
|
* vma_vm_mm - get mm pointer from vma pointer (vma->vm_mm)
|
||
|
*/
|
||
|
.macro vma_vm_mm, rd, rn
|
||
|
ldr \rd, [\rn, #VMA_VM_MM]
|
||
|
.endm
|
||
|
|
||
|
/*
|
||
|
* vma_vm_flags - get vma->vm_flags
|
||
|
*/
|
||
|
.macro vma_vm_flags, rd, rn
|
||
|
ldr \rd, [\rn, #VMA_VM_FLAGS]
|
||
|
.endm
|
||
|
|
||
|
.macro tsk_mm, rd, rn
|
||
|
ldr \rd, [\rn, #TI_TASK]
|
||
|
ldr \rd, [\rd, #TSK_ACTIVE_MM]
|
||
|
.endm
|
||
|
|
||
|
/*
|
||
|
* act_mm - get current->active_mm
|
||
|
*/
|
||
|
.macro act_mm, rd
|
||
|
bic \rd, sp, #8128
|
||
|
bic \rd, \rd, #63
|
||
|
ldr \rd, [\rd, #TI_TASK]
|
||
|
ldr \rd, [\rd, #TSK_ACTIVE_MM]
|
||
|
.endm
|
||
|
|
||
|
/*
|
||
|
* mmid - get context id from mm pointer (mm->context.id)
|
||
|
*/
|
||
|
.macro mmid, rd, rn
|
||
|
ldr \rd, [\rn, #MM_CONTEXT_ID]
|
||
|
.endm
|
||
|
|
||
|
/*
|
||
|
* mask_asid - mask the ASID from the context ID
|
||
|
*/
|
||
|
.macro asid, rd, rn
|
||
|
and \rd, \rn, #255
|
||
|
.endm
|