xref: /openbmc/qemu/tests/tcg/aarch64/pauth-1.c (revision 1be82d89)
1 #include <assert.h>
2 #include <sys/prctl.h>
3 
4 asm(".arch armv8.4-a");
5 
6 #ifndef PR_PAC_RESET_KEYS
7 #define PR_PAC_RESET_KEYS  54
8 #define PR_PAC_APDAKEY     (1 << 2)
9 #endif
10 
11 int main()
12 {
13     int x;
14     void *p0 = &x, *p1, *p2;
15 
16     asm volatile("pacdza %0" : "=r"(p1) : "0"(p0));
17     prctl(PR_PAC_RESET_KEYS, PR_PAC_APDAKEY, 0, 0, 0);
18     asm volatile("pacdza %0" : "=r"(p2) : "0"(p0));
19 
20     assert(p1 != p0);
21     assert(p1 != p2);
22     return 0;
23 }
24