2 * Check decoding of riscv_flush_icache syscall.
4 * Copyright (c) 2018 The strace developers.
7 * SPDX-License-Identifier: GPL-2.0-or-later
12 #include <asm/unistd.h>
16 #ifdef __NR_riscv_flush_icache
28 { (kernel_ulong_t) (uintptr_t) ARG_STR(NULL) },
29 { (kernel_ulong_t) 0xbadc0deddeadf157ULL,
30 sizeof(kernel_ulong_t) == 8 ? "0xbadc0deddeadf157" :
38 { 1, "SYS_RISCV_FLUSH_ICACHE_LOCAL" },
39 { (kernel_ulong_t) 0xfacefeedfffffffeULL,
40 sizeof(kernel_ulong_t) == 8 ?
41 "0xfacefeedfffffffe /* SYS_RISCV_FLUSH_ICACHE_??? */" :
42 "0xfffffffe /* SYS_RISCV_FLUSH_ICACHE_??? */" },
43 { (kernel_ulong_t) 0xfacefeedffffffffULL,
44 sizeof(kernel_ulong_t) == 8 ?
45 "SYS_RISCV_FLUSH_ICACHE_LOCAL|0xfacefeedfffffffe" :
46 "SYS_RISCV_FLUSH_ICACHE_LOCAL|0xfffffffe" },
49 for (size_t i = 0; i < ARRAY_SIZE(addrs); i++) {
50 for (size_t j = 0; j < ARRAY_SIZE(addrs); j++) {
51 for (size_t k = 0; k < ARRAY_SIZE(flags); k++) {
52 long rc = syscall(__NR_riscv_flush_icache,
57 printf("riscv_flush_icache(%s, %s, %s) = %s\n",
58 addrs[i].str, addrs[j].str, flags[k].str,
64 puts("+++ exited with 0 +++");
71 SKIP_MAIN_UNDEFINED("__NR_riscv_flush_icache");