1 // SPDX-License-Identifier: GPL-2.0
6 #include <sysdep/stub.h>
8 static __always_inline int syscall_handler(struct stub_data *d)
13 for (i = 0; i < d->syscall_data_len; i++) {
14 struct stub_syscall *sc = &d->syscall_data[i];
16 switch (sc->syscall) {
17 case STUB_SYSCALL_MMAP:
18 res = stub_syscall6(STUB_MMAP_NR,
19 sc->mem.addr, sc->mem.length,
21 MAP_SHARED | MAP_FIXED,
22 sc->mem.fd, sc->mem.offset);
23 if (res != sc->mem.addr) {
25 d->syscall_data_len = i;
29 case STUB_SYSCALL_MUNMAP:
30 res = stub_syscall2(__NR_munmap,
31 sc->mem.addr, sc->mem.length);
34 d->syscall_data_len = i;
39 d->err = -95; /* EOPNOTSUPP */
40 d->syscall_data_len = i;
46 d->syscall_data_len = 0;
51 void __section(".__syscall_stub")
52 stub_syscall_handler(void)
54 struct stub_data *d = get_stub_data();