diff options
author | Marc Zyngier <Marc.Zyngier@arm.com> | 2012-10-19 17:33:27 +0100 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2012-10-20 11:12:01 +0100 |
commit | aeed41a9371ee02257b608eb06a9058507a7d0f4 (patch) | |
tree | 7b4a24afc4942237d7d762a5117df1db02879dea /arch/arm64 | |
parent | 8f34a1da35aed7b438a2de8ac27723a5472e8399 (diff) | |
download | linux-aeed41a9371ee02257b608eb06a9058507a7d0f4.tar.gz linux-aeed41a9371ee02257b608eb06a9058507a7d0f4.tar.bz2 linux-aeed41a9371ee02257b608eb06a9058507a7d0f4.zip |
arm64: fix alignment padding in assembly code
An interesting effect of using the generic version of linkage.h
is that the padding is defined in terms of x86 NOPs, which can have
even more interesting effects when the assembly code looks like this:
ENTRY(func1)
mov x0, xzr
ENDPROC(func1)
// fall through
ENTRY(func2)
mov x0, #1
ret
ENDPROC(func2)
Admittedly, the code is not very nice. But having code from another
architecture doesn't look completely sane either.
The fix is to add arm64's version of linkage.h, which causes the insertion
of proper AArch64 NOPs.
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'arch/arm64')
-rw-r--r-- | arch/arm64/include/asm/Kbuild | 1 | ||||
-rw-r--r-- | arch/arm64/include/asm/linkage.h | 7 |
2 files changed, 7 insertions, 1 deletions
diff --git a/arch/arm64/include/asm/Kbuild b/arch/arm64/include/asm/Kbuild index fe77e51a7847..a581a2205938 100644 --- a/arch/arm64/include/asm/Kbuild +++ b/arch/arm64/include/asm/Kbuild @@ -18,7 +18,6 @@ generic-y += ipcbuf.h generic-y += irq_regs.h generic-y += kdebug.h generic-y += kmap_types.h -generic-y += linkage.h generic-y += local.h generic-y += local64.h generic-y += mman.h diff --git a/arch/arm64/include/asm/linkage.h b/arch/arm64/include/asm/linkage.h new file mode 100644 index 000000000000..636c1bced7d4 --- /dev/null +++ b/arch/arm64/include/asm/linkage.h @@ -0,0 +1,7 @@ +#ifndef __ASM_LINKAGE_H +#define __ASM_LINKAGE_H + +#define __ALIGN .align 4 +#define __ALIGN_STR ".align 4" + +#endif |