Description: Add/fix support for m68k, mips, paris, sparc Author: Guillem Jover Origin: vendor Forwarded: no Last-Update: 2014-10-09 --- harness/main.c | 10 +++++++++ src/libaio.h | 1 src/syscall-m68k.h | 5 ++++ src/syscall-mips.h | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/syscall-parisc.h | 6 +++++ src/syscall.h | 6 +++++ 6 files changed, 82 insertions(+) --- /dev/null +++ b/src/syscall-m68k.h @@ -0,0 +1,5 @@ +#define __NR_io_setup 241 +#define __NR_io_destroy 242 +#define __NR_io_getevents 243 +#define __NR_io_submit 244 +#define __NR_io_cancel 245 --- a/src/syscall.h +++ b/src/syscall.h @@ -27,6 +27,12 @@ #include "syscall-arm.h" #elif defined(__sparc__) #include "syscall-sparc.h" +#elif defined(__m68k__) +#include "syscall-m68k.h" +#elif defined(__hppa__) +#include "syscall-parisc.h" +#elif defined(__mips__) +#include "syscall-mips.h" #elif defined(__aarch64__) || defined(__riscv) #include "syscall-generic.h" #else --- /dev/null +++ b/src/syscall-mips.h @@ -0,0 +1,54 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1995, 96, 97, 98, 99, 2000 by Ralf Baechle + * Copyright (C) 1999, 2000 Silicon Graphics, Inc. + */ + +#ifndef _MIPS_SIM_ABI32 +#define _MIPS_SIM_ABI32 1 +#define _MIPS_SIM_NABI32 2 +#define _MIPS_SIM_ABI64 3 +#endif + +#if _MIPS_SIM == _MIPS_SIM_ABI32 + +/* + * Linux o32 style syscalls are in the range from 4000 to 4999. + */ +#define __NR_Linux 4000 +#define __NR_io_setup (__NR_Linux + 241) +#define __NR_io_destroy (__NR_Linux + 242) +#define __NR_io_getevents (__NR_Linux + 243) +#define __NR_io_submit (__NR_Linux + 244) +#define __NR_io_cancel (__NR_Linux + 245) + +#endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */ + +#if _MIPS_SIM == _MIPS_SIM_ABI64 + +/* + * Linux 64-bit syscalls are in the range from 5000 to 5999. + */ +#define __NR_Linux 5000 +#define __NR_io_setup (__NR_Linux + 200) +#define __NR_io_destroy (__NR_Linux + 201) +#define __NR_io_getevents (__NR_Linux + 202) +#define __NR_io_submit (__NR_Linux + 203) +#define __NR_io_cancel (__NR_Linux + 204) +#endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */ + +#if _MIPS_SIM == _MIPS_SIM_NABI32 + +/* + * Linux N32 syscalls are in the range from 6000 to 6999. + */ +#define __NR_Linux 6000 +#define __NR_io_setup (__NR_Linux + 200) +#define __NR_io_destroy (__NR_Linux + 201) +#define __NR_io_getevents (__NR_Linux + 202) +#define __NR_io_submit (__NR_Linux + 203) +#define __NR_io_cancel (__NR_Linux + 204) +#endif /* _MIPS_SIM == _MIPS_SIM_NABI32 */ --- a/src/libaio.h +++ b/src/libaio.h @@ -72,6 +72,7 @@ typedef enum io_iocb_cmd { /* big endian, 64 bits */ #elif defined(__powerpc64__) || defined(__s390x__) || \ + (defined(__hppa__) && defined(__arch64__)) || \ (defined(__sparc__) && defined(__arch64__)) || \ (defined(__aarch64__) && defined(__AARCH64EB__)) || \ (defined(__GNUC__) && defined(__BYTE_ORDER__) && \ --- /dev/null +++ b/src/syscall-parisc.h @@ -0,0 +1,6 @@ +#define __NR_Linux 0 +#define __NR_io_setup (__NR_Linux + 215) +#define __NR_io_destroy (__NR_Linux + 216) +#define __NR_io_getevents (__NR_Linux + 217) +#define __NR_io_submit (__NR_Linux + 218) +#define __NR_io_cancel (__NR_Linux + 219) --- a/harness/main.c +++ b/harness/main.c @@ -12,7 +12,17 @@ #include #if __LP64__ == 0 +#if defined(__i386__) || defined(__powerpc__) || defined(__mips__) #define KERNEL_RW_POINTER ((void *)0xc0010000) +#elif defined(__arm__) || defined(__m68k__) || defined(__s390__) +#define KERNEL_RW_POINTER ((void *)0x00010000) +#elif defined(__hppa__) +#define KERNEL_RW_POINTER ((void *)0x10100000) +#elif defined(__sparc__) +#define KERNEL_RW_POINTER ((void *)0xf0010000) +#else +#error Unknown kernel memory address. +#endif #else //#warning Not really sure where kernel memory is. Guessing. #define KERNEL_RW_POINTER ((void *)0xffffffff81000000)