]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - arch/arm/mm/proc-macros.S
Merge branches 'misc', 'vdso' and 'fixes' into for-next
[mirror_ubuntu-artful-kernel.git] / arch / arm / mm / proc-macros.S
index 082b9f2f7e9001ce0b9ad1f990befec1dafc08d5..c671f345266a56d6641e502b5eea0b196ea0c8a0 100644 (file)
@@ -331,3 +331,31 @@ ENTRY(\name\()_tlb_fns)
        .globl  \x
        .equ    \x, \y
 .endm
+
+.macro initfn, func, base
+       .long   \func - \base
+.endm
+
+       /*
+        * Macro to calculate the log2 size for the protection region
+        * registers. This calculates rd = log2(size) - 1.  tmp must
+        * not be the same register as rd.
+        */
+.macro pr_sz, rd, size, tmp
+       mov     \tmp, \size, lsr #12
+       mov     \rd, #11
+1:     movs    \tmp, \tmp, lsr #1
+       addne   \rd, \rd, #1
+       bne     1b
+.endm
+
+       /*
+        * Macro to generate a protection region register value
+        * given a pre-masked address, size, and enable bit.
+        * Corrupts size.
+        */
+.macro pr_val, dest, addr, size, enable
+       pr_sz   \dest, \size, \size             @ calculate log2(size) - 1
+       orr     \dest, \addr, \dest, lsl #1     @ mask in the region size
+       orr     \dest, \dest, \enable
+.endm