mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00

When building with clang, via: make LLVM=1 -C tools/testing/selftests ...the build fails because clang's inline asm doesn't support all of the features that are used in the asm() snippet in sysret_rip.c. Fix this by moving the asm code into the clang_helpers_64.S file, where it can be built with the assembler's full set of features. Acked-by: Muhammad Usama Anjum <usama.anjum@collabora.com> Signed-off-by: John Hubbard <jhubbard@nvidia.com> Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
28 lines
564 B
ArmAsm
28 lines
564 B
ArmAsm
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* 64-bit assembly helpers for asm operations that lack support in both gcc and
|
|
* clang. For example, clang asm does not support segment prefixes.
|
|
*/
|
|
.global dereference_seg_base
|
|
|
|
dereference_seg_base:
|
|
mov %gs:(0), %rax
|
|
ret
|
|
|
|
.global test_page
|
|
.global test_syscall_insn
|
|
|
|
.pushsection ".text", "ax"
|
|
.balign 4096
|
|
test_page: .globl test_page
|
|
.fill 4094,1,0xcc
|
|
|
|
test_syscall_insn:
|
|
syscall
|
|
|
|
.ifne . - test_page - 4096
|
|
.error "test page is not one page long"
|
|
.endif
|
|
.popsection
|
|
|
|
.section .note.GNU-stack,"",%progbits
|