Commit 53ae7230 authored by Ilie Halip's avatar Ilie Halip Committed by Heiko Carstens
Browse files

s390/test_unwind: use raw opcode instead of invalid instruction



Building with clang & LLVM_IAS=1 leads to an error:
    arch/s390/lib/test_unwind.c:179:4: error: invalid register pair
                        "       mvcl    %%r1,%%r1\n"
                        ^

The test creates an invalid instruction that would trap at runtime, but the
LLVM inline assembler tries to validate it at compile time too.

Use the raw instruction opcode instead.

Reported-by: default avatarNick Desaulniers <ndesaulniers@google.com>
Signed-off-by: default avatarIlie Halip <ilie.halip@gmail.com>
Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
Suggested-by: default avatarUlrich Weigand <Ulrich.Weigand@de.ibm.com>
Link: https://github.com/ClangBuiltLinux/linux/issues/1421
Link: https://lore.kernel.org/r/20211117174822.3632412-1-ilie.halip@gmail.com


Reviewed-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
[hca@linux.ibm.com: use illegal opcode, and update comment]
Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
parent 13605725
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -173,10 +173,11 @@ static noinline int unwindme_func4(struct unwindme *u)
		}

		/*
		 * trigger specification exception
		 * Trigger operation exception; use insn notation to bypass
		 * llvm's integrated assembler sanity checks.
		 */
		asm volatile(
			"	mvcl	%%r1,%%r1\n"
			"	.insn	e,0x0000\n"	/* illegal opcode */
			"0:	nopr	%%r7\n"
			EX_TABLE(0b, 0b)
			:);