Note: this instruction is new to ARMv8. Simple example: $ cat test.c int main() { asm volatile("stlex r0, r1, [r2]"); } $ gcc -marm -march=armv8-a test.c $ valgrind ./a.out ==28004== Memcheck, a memory error detector ==28004== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al. ==28004== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info ==28004== Command: ./a.out ==28004== disInstr(arm): unhandled instruction: 0xE1820E91 cond=14(0xE) 27:20=24(0x18) 4:4=1 3:0=1(0x1) ... Reproducible: Always
Fixed in r3248, along with its friends, LDAEX{,B,H,D}, STLEX{,B,H,D}.