All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rolf Eike Beer <eike-kernel@sf-tec.de>
To: linux-parisc <linux-parisc@vger.kernel.org>
Cc: trinity@vger.kernel.org
Subject: Trinity for PA-RISC
Date: Tue, 22 Oct 2013 20:33:20 +0200	[thread overview]
Message-ID: <3514559.IZDIRJtZo8@caliban.sf-tec.de> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 639 bytes --]

Hi all,

out of boredom I did the first steps to port trinity to PA-RISC. The second 
patch is needed to get it compile, but since those headers are apparently not 
needed on other archs I suspect something is wrong with the PA-RISC headers. 
The implementation for some syscalls is missing, I just picked up what was 
available by default. Also everything currently is 32 bit. In contrast to what 
other archs do there currently is only a 32 bit userspace on PA-RISC, but 
there are many systems with a 64 bit userspace.

I have the hope that one of the usual suspects would use this to hammer on the 
kernel and fix the fallout. ;)

Eike

[-- Attachment #1.2: 0001-add-basic-information-for-PA-RISC-architecture.patch --]
[-- Type: text/x-patch, Size: 14450 bytes --]

>From 563bbaf50193df24f592f41f0c0306c32d2e457d Mon Sep 17 00:00:00 2001
From: Rolf Eike Beer <eike-kernel@sf-tec.de>
Date: Tue, 22 Oct 2013 18:39:48 +0200
Subject: [PATCH 1/2] add basic information for PA-RISC architecture

---
 include/arch-parisc.h     |  22 +++
 include/arch-syscalls.h   |   3 +
 include/arch.h            |   4 +
 include/syscalls-parisc.h | 347 ++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 376 insertions(+)
 create mode 100644 include/arch-parisc.h
 create mode 100644 include/syscalls-parisc.h

diff --git a/include/arch-parisc.h b/include/arch-parisc.h
new file mode 100644
index 0000000..757facf
--- /dev/null
+++ b/include/arch-parisc.h
@@ -0,0 +1,22 @@
+// FIXME: depends on kernel bit size, userspace is always 32 bit
+
+#define PAGE_OFFSET 0x10000000
+
+#if 0
+// for 64 bit
+#define PAGE_OFFSET 0x40000000
+#endif
+
+#define KERNEL_ADDR	0xa0000000	// FIXME: Placeholder
+#define MODULE_ADDR     0xa0000000L	// FIXME: Placeholder
+#define TASK_SIZE 0xa0000000	// FIXME: Placeholder
+
+#define PAGE_SHIFT 		12
+#define PTE_FILE_MAX_BITS	(32 - 11)
+
+#define PTRACE_GETREGS		0
+#define PTRACE_GETFPREGS	0
+#define PTRACE_SETREGS		0
+#define PTRACE_SETFPREGS	0
+
+#define SYSCALLS syscalls_parisc
diff --git a/include/arch-syscalls.h b/include/arch-syscalls.h
index b1cf265..22866f5 100644
--- a/include/arch-syscalls.h
+++ b/include/arch-syscalls.h
@@ -38,4 +38,7 @@
 #ifdef __aarch64__
 #include "syscalls-aarch64.h"
 #endif
+#ifdef __hppa__
+#include "syscalls-parisc.h"
+#endif
 #endif  /* _ARCH_SYSCALLS_H */
diff --git a/include/arch.h b/include/arch.h
index 1835204..fe91660 100644
--- a/include/arch.h
+++ b/include/arch.h
@@ -45,6 +45,10 @@
 #include "arch-aarch64.h"
 #endif
 
+#ifdef __hppa__
+#include "arch-parisc.h"
+#endif
+
 #ifndef SYSCALL_OFFSET
 #define SYSCALL_OFFSET 0
 #endif
diff --git a/include/syscalls-parisc.h b/include/syscalls-parisc.h
new file mode 100644
index 0000000..041d11e
--- /dev/null
+++ b/include/syscalls-parisc.h
@@ -0,0 +1,347 @@
+#ifndef _SYSCALLS_PARISC_H
+#define _SYSCALLS_PARISC_H 1
+
+/* Syscalls from arch/parisc/kernel/syscall_table.S as of 3.12-rc6 */
+
+#include "sanitise.h"
+#include "syscall.h"
+#include "syscalls/syscalls.h"
+
+struct syscalltable syscalls_parisc[] = {
+	{ .entry = &syscall_restart_syscall },
+	{ .entry = &syscall_exit },
+	{ .entry = &syscall_fork },	/* FIXME: fork_wrapper */
+	{ .entry = &syscall_read },
+	{ .entry = &syscall_write },
+	{ .entry = &syscall_open },
+	{ .entry = &syscall_close },
+	{ .entry = &syscall_waitpid },
+	{ .entry = &syscall_creat },
+	{ .entry = &syscall_link },
+	{ .entry = &syscall_unlink },
+	{ .entry = &syscall_execve },
+	{ .entry = &syscall_chdir },
+	{ .entry = &syscall_time },
+	{ .entry = &syscall_mknod },
+	{ .entry = &syscall_chmod },
+	{ .entry = &syscall_lchown },
+	{ .entry = &syscall_socket },
+	{ .entry = &syscall_newstat },
+	{ .entry = &syscall_lseek },
+	{ .entry = &syscall_getpid },
+	{ .entry = &syscall_mount },
+	{ .entry = &syscall_bind },
+	{ .entry = &syscall_setuid },
+	{ .entry = &syscall_getuid },
+	{ .entry = &syscall_stime },
+	{ .entry = &syscall_ptrace },
+	{ .entry = &syscall_alarm },
+	{ .entry = &syscall_newfstat },
+	{ .entry = &syscall_pause },
+	{ .entry = &syscall_utime },
+	{ .entry = &syscall_connect },
+	{ .entry = &syscall_listen },
+	{ .entry = &syscall_access },
+	{ .entry = &syscall_nice },
+	{ .entry = &syscall_accept },
+	{ .entry = &syscall_sync },
+	{ .entry = &syscall_kill },
+	{ .entry = &syscall_rename },
+	{ .entry = &syscall_mkdir },
+	{ .entry = &syscall_rmdir },
+	{ .entry = &syscall_dup },
+	{ .entry = &syscall_pipe },
+	{ .entry = &syscall_times },
+	{ .entry = &syscall_getsockname },
+	{ .entry = &syscall_brk },
+	{ .entry = &syscall_setgid },
+	{ .entry = &syscall_getgid },
+	{ .entry = &syscall_signal },
+	{ .entry = &syscall_geteuid },
+	{ .entry = &syscall_getegid },
+	{ .entry = &syscall_acct },
+	{ .entry = &syscall_umount },
+	{ .entry = &syscall_getpeername },
+	{ .entry = &syscall_ioctl },
+	{ .entry = &syscall_fcntl },
+	{ .entry = &syscall_socketpair },
+	{ .entry = &syscall_setpgid },
+	{ .entry = &syscall_send },
+	{ .entry = &syscall_newuname },
+	{ .entry = &syscall_umask },
+	{ .entry = &syscall_chroot },
+	{ .entry = &syscall_ustat },
+	{ .entry = &syscall_dup2 },
+	{ .entry = &syscall_getppid },
+	{ .entry = &syscall_getpgrp },
+	{ .entry = &syscall_setsid },
+	{ .entry = &syscall_pivot_root },
+	{ .entry = &syscall_sgetmask },
+	{ .entry = &syscall_ssetmask },
+	{ .entry = &syscall_setreuid },
+	{ .entry = &syscall_setregid },
+	{ .entry = &syscall_mincore },
+	{ .entry = &syscall_sigpending },
+	{ .entry = &syscall_sethostname },
+	{ .entry = &syscall_setrlimit },
+	{ .entry = &syscall_getrlimit },
+	{ .entry = &syscall_getrusage },
+	{ .entry = &syscall_gettimeofday },
+	{ .entry = &syscall_settimeofday },
+	{ .entry = &syscall_getgroups },
+	{ .entry = &syscall_setgroups },
+	{ .entry = &syscall_sendto },
+	{ .entry = &syscall_symlink },
+	{ .entry = &syscall_newlstat },
+	{ .entry = &syscall_readlink },
+	{ .entry = &syscall_ni_syscall },	/* was uselib */
+	{ .entry = &syscall_swapon },
+	{ .entry = &syscall_reboot },
+	{ .entry = &syscall_mmap2 },
+	{ .entry = &syscall_mmap },
+	{ .entry = &syscall_munmap },
+	{ .entry = &syscall_truncate },
+	{ .entry = &syscall_ftruncate },
+	{ .entry = &syscall_fchmod },
+	{ .entry = &syscall_fchown },
+	{ .entry = &syscall_getpriority },
+	{ .entry = &syscall_setpriority },
+	{ .entry = &syscall_recv },
+	{ .entry = &syscall_statfs },
+	{ .entry = &syscall_fstatfs },
+	{ .entry = &syscall_stat64 },
+	{ .entry = &syscall_ni_syscall },	/* was socketcall */
+	{ .entry = &syscall_syslog },
+	{ .entry = &syscall_setitimer },
+	{ .entry = &syscall_getitimer },
+	{ .entry = &syscall_capget },
+	{ .entry = &syscall_capset },
+	{ .entry = &syscall_pread64 },
+	{ .entry = &syscall_pwrite64 },
+	{ .entry = &syscall_getcwd },
+	{ .entry = &syscall_vhangup },
+	{ .entry = &syscall_fstat64 },
+	{ .entry = &syscall_vfork },
+	{ .entry = &syscall_wait4 },
+	{ .entry = &syscall_swapoff },
+	{ .entry = &syscall_sysinfo },
+	{ .entry = &syscall_shutdown },
+	{ .entry = &syscall_fsync },
+	{ .entry = &syscall_madvise },
+	{ .entry = &syscall_clone },
+	{ .entry = &syscall_setdomainname },
+	{ .entry = &syscall_sendfile },
+	{ .entry = &syscall_recvfrom },
+	{ .entry = &syscall_adjtimex },
+	{ .entry = &syscall_mprotect },
+	{ .entry = &syscall_sigprocmask },
+	{ .entry = &syscall_ni_syscall },	/* obsolete "create_module" syscall */
+	{ .entry = &syscall_init_module },
+	{ .entry = &syscall_delete_module },
+	{ .entry = &syscall_ni_syscall },	/* was get_kernel_syms */
+	{ .entry = &syscall_quotactl },
+	{ .entry = &syscall_getpgid },
+	{ .entry = &syscall_fchdir },
+	{ .entry = &syscall_bdflush },
+	{ .entry = &syscall_sysfs },
+	{ .entry = &syscall_personality },
+	{ .entry = &syscall_ni_syscall },	/* obsolete "afs" syscall */
+	{ .entry = &syscall_setfsuid },
+	{ .entry = &syscall_setfsgid },
+	{ .entry = &syscall_llseek },
+	{ .entry = &syscall_getdents },
+	{ .entry = &syscall_select },
+	{ .entry = &syscall_flock },
+	{ .entry = &syscall_msync },
+	{ .entry = &syscall_readv },
+	{ .entry = &syscall_writev },
+	{ .entry = &syscall_getsid },
+	{ .entry = &syscall_fdatasync },
+	{ .entry = &syscall_sysctl },
+	{ .entry = &syscall_mlock },
+	{ .entry = &syscall_munlock },
+	{ .entry = &syscall_mlockall },
+	{ .entry = &syscall_munlockall },
+	{ .entry = &syscall_sched_setparam },
+	{ .entry = &syscall_sched_getparam },
+	{ .entry = &syscall_sched_setscheduler },
+	{ .entry = &syscall_sched_getscheduler },
+	{ .entry = &syscall_sched_yield },
+	{ .entry = &syscall_sched_get_priority_max },
+	{ .entry = &syscall_sched_get_priority_min },
+	{ .entry = &syscall_sched_rr_get_interval },
+	{ .entry = &syscall_nanosleep },
+	{ .entry = &syscall_mremap },
+	{ .entry = &syscall_setresuid },
+	{ .entry = &syscall_getresuid },
+	{ .entry = &syscall_sigaltstack },
+	{ .entry = &syscall_ni_syscall },	/* obsolete "query_module" syscall */
+	{ .entry = &syscall_poll },
+	{ .entry = &syscall_ni_syscall },	/* was nfsserverctl */
+	{ .entry = &syscall_setresgid },
+	{ .entry = &syscall_getresgid },
+	{ .entry = &syscall_prctl },
+	{ .entry = &syscall_rt_sigreturn },
+	{ .entry = &syscall_rt_sigaction },
+	{ .entry = &syscall_rt_sigprocmask },
+	{ .entry = &syscall_rt_sigpending },
+	{ .entry = &syscall_rt_sigtimedwait },
+	{ .entry = &syscall_rt_sigqueueinfo },
+	{ .entry = &syscall_rt_sigsuspend },
+	{ .entry = &syscall_chown },
+	{ .entry = &syscall_setsockopt },
+	{ .entry = &syscall_getsockopt },
+	{ .entry = &syscall_sendmsg },
+	{ .entry = &syscall_recvmsg },
+	{ .entry = &syscall_semop },
+	{ .entry = &syscall_semget },
+	{ .entry = &syscall_semctl },
+	{ .entry = &syscall_msgsnd },
+	{ .entry = &syscall_msgrcv },
+	{ .entry = &syscall_msgget },
+	{ .entry = &syscall_msgctl },
+	{ .entry = &syscall_shmat },
+	{ .entry = &syscall_shmdt },
+	{ .entry = &syscall_shmget },
+	{ .entry = &syscall_shmctl },
+	{ .entry = &syscall_ni_syscall },	/* streams1 */
+	{ .entry = &syscall_ni_syscall },	/* streams2 */
+	{ .entry = &syscall_lstat64 },
+	{ .entry = &syscall_truncate64 },
+	{ .entry = &syscall_ftruncate64 },
+	{ .entry = &syscall_getdents64 },
+	{ .entry = &syscall_ni_syscall },	// FIXME: fcntl64
+	{ .entry = &syscall_ni_syscall },	/* obsolete "attrctl" syscall */
+	{ .entry = &syscall_ni_syscall },	/* obsolete "acl_get" syscall */
+	{ .entry = &syscall_ni_syscall },	/* obsolete "acl_set" syscall */
+	{ .entry = &syscall_gettid },
+	{ .entry = &syscall_readahead },
+	{ .entry = &syscall_tkill },
+	{ .entry = &syscall_sendfile64 },
+	{ .entry = &syscall_futex },
+	{ .entry = &syscall_sched_setaffinity },
+	{ .entry = &syscall_sched_getaffinity },
+	{ .entry = &syscall_ni_syscall },	/* set_thread_area */
+	{ .entry = &syscall_ni_syscall },	/* get_thread_area */
+	{ .entry = &syscall_io_setup },
+	{ .entry = &syscall_io_destroy },
+	{ .entry = &syscall_io_getevents },
+	{ .entry = &syscall_io_submit },
+	{ .entry = &syscall_io_cancel },
+	{ .entry = &syscall_ni_syscall },	/* FIXME alloc_hugepages */
+	{ .entry = &syscall_ni_syscall },	/* FIXME free_hugepages */
+	{ .entry = &syscall_exit_group },
+	{ .entry = &syscall_lookup_dcookie },
+	{ .entry = &syscall_epoll_create },
+	{ .entry = &syscall_epoll_ctl },
+	{ .entry = &syscall_epoll_wait },
+	{ .entry = &syscall_remap_file_pages },
+	{ .entry = &syscall_semtimedop },
+	{ .entry = &syscall_mq_open },
+	{ .entry = &syscall_mq_unlink },
+	{ .entry = &syscall_mq_timedsend },
+	{ .entry = &syscall_mq_timedreceive },
+	{ .entry = &syscall_mq_notify },
+	{ .entry = &syscall_mq_getsetattr },
+	{ .entry = &syscall_waitid },
+	{ .entry = &syscall_fadvise64_64 },
+	{ .entry = &syscall_set_tid_address },
+	{ .entry = &syscall_setxattr },
+	{ .entry = &syscall_lsetxattr },
+	{ .entry = &syscall_fsetxattr },
+	{ .entry = &syscall_getxattr },
+	{ .entry = &syscall_lgetxattr },
+	{ .entry = &syscall_fgetxattr },
+	{ .entry = &syscall_listxattr },
+	{ .entry = &syscall_llistxattr },
+	{ .entry = &syscall_flistxattr },
+	{ .entry = &syscall_removexattr },
+	{ .entry = &syscall_lremovexattr },
+	{ .entry = &syscall_fremovexattr },
+	{ .entry = &syscall_timer_create },
+	{ .entry = &syscall_timer_settime },
+	{ .entry = &syscall_timer_gettime },
+	{ .entry = &syscall_timer_getoverrun },
+	{ .entry = &syscall_timer_delete },
+	{ .entry = &syscall_clock_settime },
+	{ .entry = &syscall_clock_gettime },
+	{ .entry = &syscall_clock_getres },
+	{ .entry = &syscall_clock_nanosleep },
+	{ .entry = &syscall_tgkill },
+	{ .entry = &syscall_mbind },
+	{ .entry = &syscall_get_mempolicy },
+	{ .entry = &syscall_set_mempolicy },
+	{ .entry = &syscall_ni_syscall },	/* obsolete "vserver" syscall */
+	{ .entry = &syscall_add_key },
+	{ .entry = &syscall_request_key },
+	{ .entry = &syscall_keyctl },
+	{ .entry = &syscall_ioprio_set },
+	{ .entry = &syscall_ioprio_get },
+	{ .entry = &syscall_inotify_init },
+	{ .entry = &syscall_inotify_add_watch },
+	{ .entry = &syscall_inotify_rm_watch },
+	{ .entry = &syscall_migrate_pages },
+	{ .entry = &syscall_pselect6 },
+	{ .entry = &syscall_ppoll },
+	{ .entry = &syscall_openat },
+	{ .entry = &syscall_mkdirat },
+	{ .entry = &syscall_mknodat },
+	{ .entry = &syscall_fchownat },
+	{ .entry = &syscall_futimesat },
+	{ .entry = &syscall_fstatat64 },
+	{ .entry = &syscall_unlinkat },
+	{ .entry = &syscall_renameat },
+	{ .entry = &syscall_linkat },
+	{ .entry = &syscall_symlinkat },
+	{ .entry = &syscall_readlinkat },
+	{ .entry = &syscall_fchmodat },
+	{ .entry = &syscall_faccessat },
+	{ .entry = &syscall_unshare },
+	{ .entry = &syscall_set_robust_list },
+	{ .entry = &syscall_get_robust_list },
+	{ .entry = &syscall_splice },
+	{ .entry = &syscall_sync_file_range },
+	{ .entry = &syscall_tee },
+	{ .entry = &syscall_vmsplice },
+	{ .entry = &syscall_move_pages },
+	{ .entry = &syscall_getcpu },
+	{ .entry = &syscall_epoll_pwait },
+	{ .entry = &syscall_statfs64 },
+	{ .entry = &syscall_fstatfs64 },
+	{ .entry = &syscall_kexec_load },
+	{ .entry = &syscall_utimensat },
+	{ .entry = &syscall_signalfd },
+	{ .entry = &syscall_ni_syscall },	/* was timerfd */
+	{ .entry = &syscall_eventfd },
+	{ .entry = &syscall_fallocate },
+	{ .entry = &syscall_timerfd_create },
+	{ .entry = &syscall_timerfd_settime },
+	{ .entry = &syscall_timerfd_gettime },
+	{ .entry = &syscall_signalfd4 },
+	{ .entry = &syscall_eventfd2 },
+	{ .entry = &syscall_epoll_create1 },
+	{ .entry = &syscall_dup3 },
+	{ .entry = &syscall_pipe2 },
+	{ .entry = &syscall_inotify_init1 },
+	{ .entry = &syscall_preadv },
+	{ .entry = &syscall_pwritev },
+	{ .entry = &syscall_rt_tgsigqueueinfo },
+	{ .entry = &syscall_perf_event_open },
+	{ .entry = &syscall_recvmmsg },
+	{ .entry = &syscall_accept4 },
+	{ .entry = &syscall_prlimit64 },
+	{ .entry = &syscall_fanotify_init },
+	{ .entry = &syscall_fanotify_mark },
+	{ .entry = &syscall_clock_adjtime },
+	{ .entry = &syscall_name_to_handle_at },
+	{ .entry = &syscall_open_by_handle_at },
+	{ .entry = &syscall_syncfs },
+	{ .entry = &syscall_setns },
+	{ .entry = &syscall_sendmmsg },	/* obsolete "putpmsg" syscall */
+	{ .entry = &syscall_process_vm_readv },
+	{ .entry = &syscall_process_vm_writev },
+	{ .entry = &syscall_kcmp },
+	{ .entry = &syscall_finit_module },
+};
+
+#endif	/* _SYSCALLS_PARISC_H */
-- 
1.8.3.2


[-- Attachment #1.3: 0002-add-more-headers-to-fix-compile-on-PA-RISC.patch --]
[-- Type: text/x-patch, Size: 1024 bytes --]

>From 3bb732227732e7577fe3e7c37a46eb05bea63cdc Mon Sep 17 00:00:00 2001
From: Rolf Eike Beer <eike-kernel@sf-tec.de>
Date: Tue, 22 Oct 2013 18:42:32 +0200
Subject: [PATCH 2/2] add more headers to fix compile on PA-RISC

---
 syscalls/msgrcv.c | 1 +
 syscalls/msgsnd.c | 1 +
 2 files changed, 2 insertions(+)

diff --git a/syscalls/msgrcv.c b/syscalls/msgrcv.c
index 2200472..5585b99 100644
--- a/syscalls/msgrcv.c
+++ b/syscalls/msgrcv.c
@@ -1,6 +1,7 @@
 /*
  * SYSCALL_DEFINE5(msgrcv, int, msqid, struct msgbuf __user *, msgp, size_t, msgsz, long, msgtyp, int, msgflg)
  */
+#include <sys/types.h>
 #include <linux/msg.h>
 #include "compat.h"
 #include "sanitise.h"
diff --git a/syscalls/msgsnd.c b/syscalls/msgsnd.c
index 3e3a91d..9eaf3d6 100644
--- a/syscalls/msgsnd.c
+++ b/syscalls/msgsnd.c
@@ -1,6 +1,7 @@
 /*
  * SYSCALL_DEFINE4(msgsnd, int, msqid, struct msgbuf __user *, msgp, size_t, msgsz, int, msgflg)
  */
+#include <sys/types.h>
 #include <linux/msg.h>
 #include "compat.h"
 #include "sanitise.h"
-- 
1.8.3.2


[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Rolf Eike Beer <eike-kernel@sf-tec.de>
To: linux-parisc <linux-parisc@vger.kernel.org>
Cc: trinity@vger.kernel.org
Subject: Trinity for PA-RISC
Date: Tue, 22 Oct 2013 20:33:20 +0200	[thread overview]
Message-ID: <3514559.IZDIRJtZo8@caliban.sf-tec.de> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 639 bytes --]

Hi all,

out of boredom I did the first steps to port trinity to PA-RISC. The second 
patch is needed to get it compile, but since those headers are apparently not 
needed on other archs I suspect something is wrong with the PA-RISC headers. 
The implementation for some syscalls is missing, I just picked up what was 
available by default. Also everything currently is 32 bit. In contrast to what 
other archs do there currently is only a 32 bit userspace on PA-RISC, but 
there are many systems with a 64 bit userspace.

I have the hope that one of the usual suspects would use this to hammer on the 
kernel and fix the fallout. ;)

Eike

[-- Attachment #1.2: 0001-add-basic-information-for-PA-RISC-architecture.patch --]
[-- Type: text/x-patch, Size: 14449 bytes --]

From 563bbaf50193df24f592f41f0c0306c32d2e457d Mon Sep 17 00:00:00 2001
From: Rolf Eike Beer <eike-kernel@sf-tec.de>
Date: Tue, 22 Oct 2013 18:39:48 +0200
Subject: [PATCH 1/2] add basic information for PA-RISC architecture

---
 include/arch-parisc.h     |  22 +++
 include/arch-syscalls.h   |   3 +
 include/arch.h            |   4 +
 include/syscalls-parisc.h | 347 ++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 376 insertions(+)
 create mode 100644 include/arch-parisc.h
 create mode 100644 include/syscalls-parisc.h

diff --git a/include/arch-parisc.h b/include/arch-parisc.h
new file mode 100644
index 0000000..757facf
--- /dev/null
+++ b/include/arch-parisc.h
@@ -0,0 +1,22 @@
+// FIXME: depends on kernel bit size, userspace is always 32 bit
+
+#define PAGE_OFFSET 0x10000000
+
+#if 0
+// for 64 bit
+#define PAGE_OFFSET 0x40000000
+#endif
+
+#define KERNEL_ADDR	0xa0000000	// FIXME: Placeholder
+#define MODULE_ADDR     0xa0000000L	// FIXME: Placeholder
+#define TASK_SIZE 0xa0000000	// FIXME: Placeholder
+
+#define PAGE_SHIFT 		12
+#define PTE_FILE_MAX_BITS	(32 - 11)
+
+#define PTRACE_GETREGS		0
+#define PTRACE_GETFPREGS	0
+#define PTRACE_SETREGS		0
+#define PTRACE_SETFPREGS	0
+
+#define SYSCALLS syscalls_parisc
diff --git a/include/arch-syscalls.h b/include/arch-syscalls.h
index b1cf265..22866f5 100644
--- a/include/arch-syscalls.h
+++ b/include/arch-syscalls.h
@@ -38,4 +38,7 @@
 #ifdef __aarch64__
 #include "syscalls-aarch64.h"
 #endif
+#ifdef __hppa__
+#include "syscalls-parisc.h"
+#endif
 #endif  /* _ARCH_SYSCALLS_H */
diff --git a/include/arch.h b/include/arch.h
index 1835204..fe91660 100644
--- a/include/arch.h
+++ b/include/arch.h
@@ -45,6 +45,10 @@
 #include "arch-aarch64.h"
 #endif
 
+#ifdef __hppa__
+#include "arch-parisc.h"
+#endif
+
 #ifndef SYSCALL_OFFSET
 #define SYSCALL_OFFSET 0
 #endif
diff --git a/include/syscalls-parisc.h b/include/syscalls-parisc.h
new file mode 100644
index 0000000..041d11e
--- /dev/null
+++ b/include/syscalls-parisc.h
@@ -0,0 +1,347 @@
+#ifndef _SYSCALLS_PARISC_H
+#define _SYSCALLS_PARISC_H 1
+
+/* Syscalls from arch/parisc/kernel/syscall_table.S as of 3.12-rc6 */
+
+#include "sanitise.h"
+#include "syscall.h"
+#include "syscalls/syscalls.h"
+
+struct syscalltable syscalls_parisc[] = {
+	{ .entry = &syscall_restart_syscall },
+	{ .entry = &syscall_exit },
+	{ .entry = &syscall_fork },	/* FIXME: fork_wrapper */
+	{ .entry = &syscall_read },
+	{ .entry = &syscall_write },
+	{ .entry = &syscall_open },
+	{ .entry = &syscall_close },
+	{ .entry = &syscall_waitpid },
+	{ .entry = &syscall_creat },
+	{ .entry = &syscall_link },
+	{ .entry = &syscall_unlink },
+	{ .entry = &syscall_execve },
+	{ .entry = &syscall_chdir },
+	{ .entry = &syscall_time },
+	{ .entry = &syscall_mknod },
+	{ .entry = &syscall_chmod },
+	{ .entry = &syscall_lchown },
+	{ .entry = &syscall_socket },
+	{ .entry = &syscall_newstat },
+	{ .entry = &syscall_lseek },
+	{ .entry = &syscall_getpid },
+	{ .entry = &syscall_mount },
+	{ .entry = &syscall_bind },
+	{ .entry = &syscall_setuid },
+	{ .entry = &syscall_getuid },
+	{ .entry = &syscall_stime },
+	{ .entry = &syscall_ptrace },
+	{ .entry = &syscall_alarm },
+	{ .entry = &syscall_newfstat },
+	{ .entry = &syscall_pause },
+	{ .entry = &syscall_utime },
+	{ .entry = &syscall_connect },
+	{ .entry = &syscall_listen },
+	{ .entry = &syscall_access },
+	{ .entry = &syscall_nice },
+	{ .entry = &syscall_accept },
+	{ .entry = &syscall_sync },
+	{ .entry = &syscall_kill },
+	{ .entry = &syscall_rename },
+	{ .entry = &syscall_mkdir },
+	{ .entry = &syscall_rmdir },
+	{ .entry = &syscall_dup },
+	{ .entry = &syscall_pipe },
+	{ .entry = &syscall_times },
+	{ .entry = &syscall_getsockname },
+	{ .entry = &syscall_brk },
+	{ .entry = &syscall_setgid },
+	{ .entry = &syscall_getgid },
+	{ .entry = &syscall_signal },
+	{ .entry = &syscall_geteuid },
+	{ .entry = &syscall_getegid },
+	{ .entry = &syscall_acct },
+	{ .entry = &syscall_umount },
+	{ .entry = &syscall_getpeername },
+	{ .entry = &syscall_ioctl },
+	{ .entry = &syscall_fcntl },
+	{ .entry = &syscall_socketpair },
+	{ .entry = &syscall_setpgid },
+	{ .entry = &syscall_send },
+	{ .entry = &syscall_newuname },
+	{ .entry = &syscall_umask },
+	{ .entry = &syscall_chroot },
+	{ .entry = &syscall_ustat },
+	{ .entry = &syscall_dup2 },
+	{ .entry = &syscall_getppid },
+	{ .entry = &syscall_getpgrp },
+	{ .entry = &syscall_setsid },
+	{ .entry = &syscall_pivot_root },
+	{ .entry = &syscall_sgetmask },
+	{ .entry = &syscall_ssetmask },
+	{ .entry = &syscall_setreuid },
+	{ .entry = &syscall_setregid },
+	{ .entry = &syscall_mincore },
+	{ .entry = &syscall_sigpending },
+	{ .entry = &syscall_sethostname },
+	{ .entry = &syscall_setrlimit },
+	{ .entry = &syscall_getrlimit },
+	{ .entry = &syscall_getrusage },
+	{ .entry = &syscall_gettimeofday },
+	{ .entry = &syscall_settimeofday },
+	{ .entry = &syscall_getgroups },
+	{ .entry = &syscall_setgroups },
+	{ .entry = &syscall_sendto },
+	{ .entry = &syscall_symlink },
+	{ .entry = &syscall_newlstat },
+	{ .entry = &syscall_readlink },
+	{ .entry = &syscall_ni_syscall },	/* was uselib */
+	{ .entry = &syscall_swapon },
+	{ .entry = &syscall_reboot },
+	{ .entry = &syscall_mmap2 },
+	{ .entry = &syscall_mmap },
+	{ .entry = &syscall_munmap },
+	{ .entry = &syscall_truncate },
+	{ .entry = &syscall_ftruncate },
+	{ .entry = &syscall_fchmod },
+	{ .entry = &syscall_fchown },
+	{ .entry = &syscall_getpriority },
+	{ .entry = &syscall_setpriority },
+	{ .entry = &syscall_recv },
+	{ .entry = &syscall_statfs },
+	{ .entry = &syscall_fstatfs },
+	{ .entry = &syscall_stat64 },
+	{ .entry = &syscall_ni_syscall },	/* was socketcall */
+	{ .entry = &syscall_syslog },
+	{ .entry = &syscall_setitimer },
+	{ .entry = &syscall_getitimer },
+	{ .entry = &syscall_capget },
+	{ .entry = &syscall_capset },
+	{ .entry = &syscall_pread64 },
+	{ .entry = &syscall_pwrite64 },
+	{ .entry = &syscall_getcwd },
+	{ .entry = &syscall_vhangup },
+	{ .entry = &syscall_fstat64 },
+	{ .entry = &syscall_vfork },
+	{ .entry = &syscall_wait4 },
+	{ .entry = &syscall_swapoff },
+	{ .entry = &syscall_sysinfo },
+	{ .entry = &syscall_shutdown },
+	{ .entry = &syscall_fsync },
+	{ .entry = &syscall_madvise },
+	{ .entry = &syscall_clone },
+	{ .entry = &syscall_setdomainname },
+	{ .entry = &syscall_sendfile },
+	{ .entry = &syscall_recvfrom },
+	{ .entry = &syscall_adjtimex },
+	{ .entry = &syscall_mprotect },
+	{ .entry = &syscall_sigprocmask },
+	{ .entry = &syscall_ni_syscall },	/* obsolete "create_module" syscall */
+	{ .entry = &syscall_init_module },
+	{ .entry = &syscall_delete_module },
+	{ .entry = &syscall_ni_syscall },	/* was get_kernel_syms */
+	{ .entry = &syscall_quotactl },
+	{ .entry = &syscall_getpgid },
+	{ .entry = &syscall_fchdir },
+	{ .entry = &syscall_bdflush },
+	{ .entry = &syscall_sysfs },
+	{ .entry = &syscall_personality },
+	{ .entry = &syscall_ni_syscall },	/* obsolete "afs" syscall */
+	{ .entry = &syscall_setfsuid },
+	{ .entry = &syscall_setfsgid },
+	{ .entry = &syscall_llseek },
+	{ .entry = &syscall_getdents },
+	{ .entry = &syscall_select },
+	{ .entry = &syscall_flock },
+	{ .entry = &syscall_msync },
+	{ .entry = &syscall_readv },
+	{ .entry = &syscall_writev },
+	{ .entry = &syscall_getsid },
+	{ .entry = &syscall_fdatasync },
+	{ .entry = &syscall_sysctl },
+	{ .entry = &syscall_mlock },
+	{ .entry = &syscall_munlock },
+	{ .entry = &syscall_mlockall },
+	{ .entry = &syscall_munlockall },
+	{ .entry = &syscall_sched_setparam },
+	{ .entry = &syscall_sched_getparam },
+	{ .entry = &syscall_sched_setscheduler },
+	{ .entry = &syscall_sched_getscheduler },
+	{ .entry = &syscall_sched_yield },
+	{ .entry = &syscall_sched_get_priority_max },
+	{ .entry = &syscall_sched_get_priority_min },
+	{ .entry = &syscall_sched_rr_get_interval },
+	{ .entry = &syscall_nanosleep },
+	{ .entry = &syscall_mremap },
+	{ .entry = &syscall_setresuid },
+	{ .entry = &syscall_getresuid },
+	{ .entry = &syscall_sigaltstack },
+	{ .entry = &syscall_ni_syscall },	/* obsolete "query_module" syscall */
+	{ .entry = &syscall_poll },
+	{ .entry = &syscall_ni_syscall },	/* was nfsserverctl */
+	{ .entry = &syscall_setresgid },
+	{ .entry = &syscall_getresgid },
+	{ .entry = &syscall_prctl },
+	{ .entry = &syscall_rt_sigreturn },
+	{ .entry = &syscall_rt_sigaction },
+	{ .entry = &syscall_rt_sigprocmask },
+	{ .entry = &syscall_rt_sigpending },
+	{ .entry = &syscall_rt_sigtimedwait },
+	{ .entry = &syscall_rt_sigqueueinfo },
+	{ .entry = &syscall_rt_sigsuspend },
+	{ .entry = &syscall_chown },
+	{ .entry = &syscall_setsockopt },
+	{ .entry = &syscall_getsockopt },
+	{ .entry = &syscall_sendmsg },
+	{ .entry = &syscall_recvmsg },
+	{ .entry = &syscall_semop },
+	{ .entry = &syscall_semget },
+	{ .entry = &syscall_semctl },
+	{ .entry = &syscall_msgsnd },
+	{ .entry = &syscall_msgrcv },
+	{ .entry = &syscall_msgget },
+	{ .entry = &syscall_msgctl },
+	{ .entry = &syscall_shmat },
+	{ .entry = &syscall_shmdt },
+	{ .entry = &syscall_shmget },
+	{ .entry = &syscall_shmctl },
+	{ .entry = &syscall_ni_syscall },	/* streams1 */
+	{ .entry = &syscall_ni_syscall },	/* streams2 */
+	{ .entry = &syscall_lstat64 },
+	{ .entry = &syscall_truncate64 },
+	{ .entry = &syscall_ftruncate64 },
+	{ .entry = &syscall_getdents64 },
+	{ .entry = &syscall_ni_syscall },	// FIXME: fcntl64
+	{ .entry = &syscall_ni_syscall },	/* obsolete "attrctl" syscall */
+	{ .entry = &syscall_ni_syscall },	/* obsolete "acl_get" syscall */
+	{ .entry = &syscall_ni_syscall },	/* obsolete "acl_set" syscall */
+	{ .entry = &syscall_gettid },
+	{ .entry = &syscall_readahead },
+	{ .entry = &syscall_tkill },
+	{ .entry = &syscall_sendfile64 },
+	{ .entry = &syscall_futex },
+	{ .entry = &syscall_sched_setaffinity },
+	{ .entry = &syscall_sched_getaffinity },
+	{ .entry = &syscall_ni_syscall },	/* set_thread_area */
+	{ .entry = &syscall_ni_syscall },	/* get_thread_area */
+	{ .entry = &syscall_io_setup },
+	{ .entry = &syscall_io_destroy },
+	{ .entry = &syscall_io_getevents },
+	{ .entry = &syscall_io_submit },
+	{ .entry = &syscall_io_cancel },
+	{ .entry = &syscall_ni_syscall },	/* FIXME alloc_hugepages */
+	{ .entry = &syscall_ni_syscall },	/* FIXME free_hugepages */
+	{ .entry = &syscall_exit_group },
+	{ .entry = &syscall_lookup_dcookie },
+	{ .entry = &syscall_epoll_create },
+	{ .entry = &syscall_epoll_ctl },
+	{ .entry = &syscall_epoll_wait },
+	{ .entry = &syscall_remap_file_pages },
+	{ .entry = &syscall_semtimedop },
+	{ .entry = &syscall_mq_open },
+	{ .entry = &syscall_mq_unlink },
+	{ .entry = &syscall_mq_timedsend },
+	{ .entry = &syscall_mq_timedreceive },
+	{ .entry = &syscall_mq_notify },
+	{ .entry = &syscall_mq_getsetattr },
+	{ .entry = &syscall_waitid },
+	{ .entry = &syscall_fadvise64_64 },
+	{ .entry = &syscall_set_tid_address },
+	{ .entry = &syscall_setxattr },
+	{ .entry = &syscall_lsetxattr },
+	{ .entry = &syscall_fsetxattr },
+	{ .entry = &syscall_getxattr },
+	{ .entry = &syscall_lgetxattr },
+	{ .entry = &syscall_fgetxattr },
+	{ .entry = &syscall_listxattr },
+	{ .entry = &syscall_llistxattr },
+	{ .entry = &syscall_flistxattr },
+	{ .entry = &syscall_removexattr },
+	{ .entry = &syscall_lremovexattr },
+	{ .entry = &syscall_fremovexattr },
+	{ .entry = &syscall_timer_create },
+	{ .entry = &syscall_timer_settime },
+	{ .entry = &syscall_timer_gettime },
+	{ .entry = &syscall_timer_getoverrun },
+	{ .entry = &syscall_timer_delete },
+	{ .entry = &syscall_clock_settime },
+	{ .entry = &syscall_clock_gettime },
+	{ .entry = &syscall_clock_getres },
+	{ .entry = &syscall_clock_nanosleep },
+	{ .entry = &syscall_tgkill },
+	{ .entry = &syscall_mbind },
+	{ .entry = &syscall_get_mempolicy },
+	{ .entry = &syscall_set_mempolicy },
+	{ .entry = &syscall_ni_syscall },	/* obsolete "vserver" syscall */
+	{ .entry = &syscall_add_key },
+	{ .entry = &syscall_request_key },
+	{ .entry = &syscall_keyctl },
+	{ .entry = &syscall_ioprio_set },
+	{ .entry = &syscall_ioprio_get },
+	{ .entry = &syscall_inotify_init },
+	{ .entry = &syscall_inotify_add_watch },
+	{ .entry = &syscall_inotify_rm_watch },
+	{ .entry = &syscall_migrate_pages },
+	{ .entry = &syscall_pselect6 },
+	{ .entry = &syscall_ppoll },
+	{ .entry = &syscall_openat },
+	{ .entry = &syscall_mkdirat },
+	{ .entry = &syscall_mknodat },
+	{ .entry = &syscall_fchownat },
+	{ .entry = &syscall_futimesat },
+	{ .entry = &syscall_fstatat64 },
+	{ .entry = &syscall_unlinkat },
+	{ .entry = &syscall_renameat },
+	{ .entry = &syscall_linkat },
+	{ .entry = &syscall_symlinkat },
+	{ .entry = &syscall_readlinkat },
+	{ .entry = &syscall_fchmodat },
+	{ .entry = &syscall_faccessat },
+	{ .entry = &syscall_unshare },
+	{ .entry = &syscall_set_robust_list },
+	{ .entry = &syscall_get_robust_list },
+	{ .entry = &syscall_splice },
+	{ .entry = &syscall_sync_file_range },
+	{ .entry = &syscall_tee },
+	{ .entry = &syscall_vmsplice },
+	{ .entry = &syscall_move_pages },
+	{ .entry = &syscall_getcpu },
+	{ .entry = &syscall_epoll_pwait },
+	{ .entry = &syscall_statfs64 },
+	{ .entry = &syscall_fstatfs64 },
+	{ .entry = &syscall_kexec_load },
+	{ .entry = &syscall_utimensat },
+	{ .entry = &syscall_signalfd },
+	{ .entry = &syscall_ni_syscall },	/* was timerfd */
+	{ .entry = &syscall_eventfd },
+	{ .entry = &syscall_fallocate },
+	{ .entry = &syscall_timerfd_create },
+	{ .entry = &syscall_timerfd_settime },
+	{ .entry = &syscall_timerfd_gettime },
+	{ .entry = &syscall_signalfd4 },
+	{ .entry = &syscall_eventfd2 },
+	{ .entry = &syscall_epoll_create1 },
+	{ .entry = &syscall_dup3 },
+	{ .entry = &syscall_pipe2 },
+	{ .entry = &syscall_inotify_init1 },
+	{ .entry = &syscall_preadv },
+	{ .entry = &syscall_pwritev },
+	{ .entry = &syscall_rt_tgsigqueueinfo },
+	{ .entry = &syscall_perf_event_open },
+	{ .entry = &syscall_recvmmsg },
+	{ .entry = &syscall_accept4 },
+	{ .entry = &syscall_prlimit64 },
+	{ .entry = &syscall_fanotify_init },
+	{ .entry = &syscall_fanotify_mark },
+	{ .entry = &syscall_clock_adjtime },
+	{ .entry = &syscall_name_to_handle_at },
+	{ .entry = &syscall_open_by_handle_at },
+	{ .entry = &syscall_syncfs },
+	{ .entry = &syscall_setns },
+	{ .entry = &syscall_sendmmsg },	/* obsolete "putpmsg" syscall */
+	{ .entry = &syscall_process_vm_readv },
+	{ .entry = &syscall_process_vm_writev },
+	{ .entry = &syscall_kcmp },
+	{ .entry = &syscall_finit_module },
+};
+
+#endif	/* _SYSCALLS_PARISC_H */
-- 
1.8.3.2


[-- Attachment #1.3: 0002-add-more-headers-to-fix-compile-on-PA-RISC.patch --]
[-- Type: text/x-patch, Size: 1023 bytes --]

From 3bb732227732e7577fe3e7c37a46eb05bea63cdc Mon Sep 17 00:00:00 2001
From: Rolf Eike Beer <eike-kernel@sf-tec.de>
Date: Tue, 22 Oct 2013 18:42:32 +0200
Subject: [PATCH 2/2] add more headers to fix compile on PA-RISC

---
 syscalls/msgrcv.c | 1 +
 syscalls/msgsnd.c | 1 +
 2 files changed, 2 insertions(+)

diff --git a/syscalls/msgrcv.c b/syscalls/msgrcv.c
index 2200472..5585b99 100644
--- a/syscalls/msgrcv.c
+++ b/syscalls/msgrcv.c
@@ -1,6 +1,7 @@
 /*
  * SYSCALL_DEFINE5(msgrcv, int, msqid, struct msgbuf __user *, msgp, size_t, msgsz, long, msgtyp, int, msgflg)
  */
+#include <sys/types.h>
 #include <linux/msg.h>
 #include "compat.h"
 #include "sanitise.h"
diff --git a/syscalls/msgsnd.c b/syscalls/msgsnd.c
index 3e3a91d..9eaf3d6 100644
--- a/syscalls/msgsnd.c
+++ b/syscalls/msgsnd.c
@@ -1,6 +1,7 @@
 /*
  * SYSCALL_DEFINE4(msgsnd, int, msqid, struct msgbuf __user *, msgp, size_t, msgsz, int, msgflg)
  */
+#include <sys/types.h>
 #include <linux/msg.h>
 #include "compat.h"
 #include "sanitise.h"
-- 
1.8.3.2


[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

             reply	other threads:[~2013-10-22 18:33 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-22 18:33 Rolf Eike Beer [this message]
2013-10-22 18:33 ` Trinity for PA-RISC Rolf Eike Beer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3514559.IZDIRJtZo8@caliban.sf-tec.de \
    --to=eike-kernel@sf-tec.de \
    --cc=linux-parisc@vger.kernel.org \
    --cc=trinity@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.