|
Description: Add/fix support for m68k, mips, paris, sparc
|
|
Author: Guillem Jover <guillem@debian.org>
|
|
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
|
|
@@ -71,6 +71,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 <libaio.h>
|
|
|
|
#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)
|