diff options
| author | doc HD <doc.divxm@gmail.com> | 2018-03-07 10:05:53 +0300 |
|---|---|---|
| committer | doc HD <doc.divxm@gmail.com> | 2018-03-07 10:05:53 +0300 |
| commit | 812962bfbf833dc214abda0dea8339d02bff3cd1 (patch) | |
| tree | 7384e312916e52a56610d321022d534251c0b0d4 /arch/arm64/include/asm/assembler.h | |
| parent | 9faca91a45aca9b575f4bbee4ce2ce1681f4ce8f (diff) | |
| parent | 0de87126892e03146cf68b204056c48c45aec7a6 (diff) | |
Merge branch 'android-msm-marlin-3.18-oreo-mr1' of https://android.googlesource.com/kernel/msm into o8.1o8.1
Change-Id: I91a8b8fc5803aacafb3eb5e6cf35cfa1213ed3e4
Diffstat (limited to 'arch/arm64/include/asm/assembler.h')
| -rw-r--r-- | arch/arm64/include/asm/assembler.h | 45 |
1 files changed, 37 insertions, 8 deletions
diff --git a/arch/arm64/include/asm/assembler.h b/arch/arm64/include/asm/assembler.h index 0ea2d576904..96f2be09f61 100644 --- a/arch/arm64/include/asm/assembler.h +++ b/arch/arm64/include/asm/assembler.h @@ -117,6 +117,15 @@ dmb \opt .endm +/* + * NOP sequence + */ + .macro nops, num + .rept \num + nop + .endr + .endm + #define USER(l, x...) \ 9999: x; \ .section __ex_table,"a"; \ @@ -295,14 +304,6 @@ lr .req x30 // link register .endm /* - * Return the current thread_info. - */ - .macro get_thread_info, rd - mov \rd, sp - and \rd, \rd, #~(THREAD_SIZE - 1) // top of stack - .endm - -/* * Annotate a function as position independent, i.e., safe to be called before * the kernel virtual mapping is activated. */ @@ -313,4 +314,32 @@ lr .req x30 // link register .size __pi_##x, . - x; \ ENDPROC(x) +/* + * Return the current thread_info. + */ + .macro get_thread_info, rd + mov \rd, sp + and \rd, \rd, #~(THREAD_SIZE - 1) // top of stack + .endm + + /* + * mov_q - move an immediate constant into a 64-bit register using + * between 2 and 4 movz/movk instructions (depending on the + * magnitude and sign of the operand) + */ + .macro mov_q, reg, val + .if (((\val) >> 31) == 0 || ((\val) >> 31) == 0x1ffffffff) + movz \reg, :abs_g1_s:\val + .else + .if (((\val) >> 47) == 0 || ((\val) >> 47) == 0x1ffff) + movz \reg, :abs_g2_s:\val + .else + movz \reg, :abs_g3:\val + movk \reg, :abs_g2_nc:\val + .endif + movk \reg, :abs_g1_nc:\val + .endif + movk \reg, :abs_g0_nc:\val + .endm + #endif /* __ASM_ASSEMBLER_H */ |
