From b727b7affdbbae14d36ba9fafd898aa1d9756771 Mon Sep 17 00:00:00 2001 From: David Given Date: Sat, 23 Jun 2018 12:41:54 +0200 Subject: [PATCH] Make linuxppc work. --- build.lua | 4 +- lang/cem/libcc.ansi/headers/unistd.h | 3 + plat/linux/include/ack/signal.h | 17 +++ plat/linuxppc/include/ack/plat.h | 14 --- plat/linuxppc/include/build.lua | 10 +- plat/linuxppc/include/sys/ioctl.h | 76 -------------- plat/linuxppc/include/unistd.h | 151 --------------------------- 7 files changed, 29 insertions(+), 246 deletions(-) delete mode 100644 plat/linuxppc/include/ack/plat.h delete mode 100644 plat/linuxppc/include/sys/ioctl.h delete mode 100644 plat/linuxppc/include/unistd.h diff --git a/build.lua b/build.lua index 3476efaec..f182020b2 100644 --- a/build.lua +++ b/build.lua @@ -9,7 +9,7 @@ vars.plats = { "cpm", "linux386", "linux68k", --- "linuxppc", + "linuxppc", -- "osx386", -- "osxppc", -- --"qemuppc", @@ -21,7 +21,7 @@ vars.plats = { vars.plats_with_tests = { "linux68k", "linux386", --- "linuxppc", + "linuxppc", -- --"qemuppc", -- "pc86", } diff --git a/lang/cem/libcc.ansi/headers/unistd.h b/lang/cem/libcc.ansi/headers/unistd.h index 374a42070..8818fa66e 100644 --- a/lang/cem/libcc.ansi/headers/unistd.h +++ b/lang/cem/libcc.ansi/headers/unistd.h @@ -50,6 +50,8 @@ (not including real-time signals). */ typedef void (*sighandler_t)(int); typedef uint16_t sigset_t; + + struct sigaction; #else #include #endif @@ -86,6 +88,7 @@ extern int kill(pid_t old, int sig); extern int open(const char* path, int access, ...); extern int raise(int signum); extern int settimeofday(const struct timeval* tv, const struct timezone* tz); +extern int sigaction(int, const struct sigaction *, struct sigaction *); extern int sigprocmask(int, const sigset_t *, sigset_t *); extern int unlink(const char* path); extern off_t lseek(int fildes, off_t offset, int whence); diff --git a/plat/linux/include/ack/signal.h b/plat/linux/include/ack/signal.h index 1f41234b6..d7ec086b2 100644 --- a/plat/linux/include/ack/signal.h +++ b/plat/linux/include/ack/signal.h @@ -56,4 +56,21 @@ typedef unsigned long sigset_t; typedef void (*sighandler_t)(int); +/* sa_flags */ +#define SA_NODEFER 0x40000000UL +#define SA_RESETHAND 0x80000000UL + +struct __siginfo; +struct sigaction { + union { + void (*__sa_handler)(int); + void (*__sa_sigaction)(int, struct __siginfo *, void *); + } __sigaction_u; + sigset_t sa_mask; + unsigned long sa_flags; + void (*sa_restorer)(void); +}; +#define sa_handler __sigaction_u.__sa_handler +#define sa_sigaction __sigaction_u.__sa_sigaction + #endif diff --git a/plat/linuxppc/include/ack/plat.h b/plat/linuxppc/include/ack/plat.h deleted file mode 100644 index 9145197c4..000000000 --- a/plat/linuxppc/include/ack/plat.h +++ /dev/null @@ -1,14 +0,0 @@ -/* $Source: /cvsroot/tack/Ack/plat/linux386/include/ack/config.h,v $ - * $State: Exp $ - * $Revision: 1.1 $ - */ - -#ifndef _ACK_PLAT_H -#define _ACK_PLAT_H - -/* We're providing a time() system call rather than wanting a wrapper around - * gettimeofday() in the libc. */ - -/* #define ACKCONF_TIME_IS_A_SYSCALL */ - -#endif diff --git a/plat/linuxppc/include/build.lua b/plat/linuxppc/include/build.lua index 5fef69c6e..8adc0c7d1 100644 --- a/plat/linuxppc/include/build.lua +++ b/plat/linuxppc/include/build.lua @@ -4,13 +4,15 @@ headermap = {} packagemap = {} local function addheader(h) - headermap[h] = "./"..h - packagemap["$(PLATIND)/linuxppc/include/"..h] = "./"..h + headermap[h] = "plat/linux/include/"..h + packagemap["$(PLATIND)/linuxppc/include/"..h] = "plat/linux/include/"..h end addheader("ack/plat.h") +addheader("ack/fcntl.h") +addheader("ack/signal.h") addheader("sys/ioctl.h") -addheader("unistd.h") +addheader("sys/types.h") acklibrary { name = "headers", @@ -22,3 +24,5 @@ installable { map = packagemap } + + diff --git a/plat/linuxppc/include/sys/ioctl.h b/plat/linuxppc/include/sys/ioctl.h deleted file mode 100644 index af41165d7..000000000 --- a/plat/linuxppc/include/sys/ioctl.h +++ /dev/null @@ -1,76 +0,0 @@ -/* $Source: /cvsroot/tack/Ack/plat/linux386/include/sys/ioctl.h,v $ - * $State: Exp $ - * $Revision: 1.1 $ - */ - -#ifndef _SYS_IOCTL_H -#define _SYS_IOCTL_H - -/* These are copied from the ioctl_list(2) man page. */ - -/* */ - -#define FIOSETOWN 0x00008901 -#define SIOCSPGRP 0x00008902 -#define FIOGETOWN 0x00008903 -#define SIOCGPGRP 0x00008904 -#define SIOCATMARK 0x00008905 -#define SIOCGSTAMP 0x00008906 - -/* */ - -#define TCGETS 0x00005401 -#define TCSETS 0x00005402 -#define TCSETSW 0x00005403 -#define TCSETSF 0x00005404 -#define TCGETA 0x00005405 -#define TCSETA 0x00005406 -#define TCSETAW 0x00005407 -#define TCSETAF 0x00005408 -#define TCSBRK 0x00005409 -#define TCXONC 0x0000540A -#define TCFLSH 0x0000540B -#define TIOCEXCL 0x0000540C -#define TIOCNXCL 0x0000540D -#define TIOCSCTTY 0x0000540E -#define TIOCGPGRP 0x0000540F -#define TIOCSPGRP 0x00005410 -#define TIOCOUTQ 0x00005411 -#define TIOCSTI 0x00005412 -#define TIOCGWINSZ 0x00005413 -#define TIOCSWINSZ 0x00005414 -#define TIOCMGET 0x00005415 -#define TIOCMBIS 0x00005416 -#define TIOCMBIC 0x00005417 -#define TIOCMSET 0x00005418 -#define TIOCGSOFTCAR 0x00005419 -#define TIOCSSOFTCAR 0x0000541A -#define FIONREAD 0x0000541B -#define TIOCINQ 0x0000541B -#define TIOCLINUX 0x0000541C -#define TIOCCONS 0x0000541D -#define TIOCGSERIAL 0x0000541E -#define TIOCSSERIAL 0x0000541F -#define TIOCPKT 0x00005420 -#define FIONBIO 0x00005421 -#define TIOCNOTTY 0x00005422 -#define TIOCSETD 0x00005423 -#define TIOCGETD 0x00005424 -#define TCSBRKP 0x00005425 -#define TIOCTTYGSTRUCT 0x00005426 -#define FIONCLEX 0x00005450 -#define FIOCLEX 0x00005451 -#define FIOASYNC 0x00005452 -#define TIOCSERCONFIG 0x00005453 -#define TIOCSERGWILD 0x00005454 -#define TIOCSERSWILD 0x00005455 -#define TIOCGLCKTRMIOS 0x00005456 -#define TIOCSLCKTRMIOS 0x00005457 -#define TIOCSERGSTRUCT 0x00005458 -#define TIOCSERGETLSR 0x00005459 -#define TIOCSERGETMULTI 0x0000545A -#define TIOCSERSETMULTI 0x0000545B - - - -#endif diff --git a/plat/linuxppc/include/unistd.h b/plat/linuxppc/include/unistd.h deleted file mode 100644 index f57705365..000000000 --- a/plat/linuxppc/include/unistd.h +++ /dev/null @@ -1,151 +0,0 @@ -/* - * unistd.h - standard system calls - */ -/* $Id$ */ - -#ifndef _UNISTD_H -#define _UNISTD_H - -#include -#include - -/* Types */ - -typedef int pid_t; -typedef int mode_t; - -typedef long suseconds_t; - -/* Time handling. */ - -struct timeval -{ - time_t tv_sec; - suseconds_t tv_usec; -}; - -struct timezone -{ - int tz_minuteswest; - int tz_dsttime; -}; /* obsolete, unused */ - -extern int gettimeofday(struct timeval* tv, struct timezone* tz); -extern int settimeofday(const struct timeval* tv, const struct timezone* tz); - -/* File access. */ - -enum -{ - O_ACCMODE = 0x3, - - O_RDONLY = 0, - O_WRONLY = 1, - O_RDWR = 2, - - O_CREAT = 0x10, - O_TRUNC = 0x20, - O_APPEND = 0x40 -}; - -extern int open(const char* path, int access, ...); -extern int creat(const char* path, mode_t mode); -extern int close(int d); -extern int read(int fd, void* buffer, size_t count); -extern int write(int fd, void* buffer, size_t count); -extern off_t lseek(int fildes, off_t offset, int whence); -extern int fcntl(int fd, int op, ...); -extern int unlink(const char* path); - -/* Special variables */ - -extern char** environ; - -/* Implemented system calls */ - -extern void _exit(int); -extern pid_t getpid(void); -extern int brk(void* ptr); -extern void* sbrk(int increment); -extern int isatty(int d); -extern int execve(const char *path, char *const argv[], char *const envp[]); - -/* Signal handling */ - -typedef int sig_atomic_t; - -#define SIG_ERR ((sighandler_t) -1) /* Error return. */ -#define SIG_DFL ((sighandler_t) 0) /* Default action. */ -#define SIG_IGN ((sighandler_t) 1) /* Ignore signal. */ - -#define SIGHUP 1 /* Hangup (POSIX). */ -#define SIGINT 2 /* Interrupt (ANSI). */ -#define SIGQUIT 3 /* Quit (POSIX). */ -#define SIGILL 4 /* Illegal instruction (ANSI). */ -#define SIGTRAP 5 /* Trace trap (POSIX). */ -#define SIGABRT 6 /* Abort (ANSI). */ -#define SIGIOT 6 /* IOT trap (4.2 BSD). */ -#define SIGBUS 7 /* BUS error (4.2 BSD). */ -#define SIGFPE 8 /* Floating-point exception (ANSI). */ -#define SIGKILL 9 /* Kill, unblockable (POSIX). */ -#define SIGUSR1 10 /* User-defined signal 1 (POSIX). */ -#define SIGSEGV 11 /* Segmentation violation (ANSI). */ -#define SIGUSR2 12 /* User-defined signal 2 (POSIX). */ -#define SIGPIPE 13 /* Broken pipe (POSIX). */ -#define SIGALRM 14 /* Alarm clock (POSIX). */ -#define SIGTERM 15 /* Termination (ANSI). */ -#define SIGSTKFLT 16 /* Stack fault. */ -#define SIGCLD SIGCHLD /* Same as SIGCHLD (System V). */ -#define SIGCHLD 17 /* Child status has changed (POSIX). */ -#define SIGCONT 18 /* Continue (POSIX). */ -#define SIGSTOP 19 /* Stop, unblockable (POSIX). */ -#define SIGTSTP 20 /* Keyboard stop (POSIX). */ -#define SIGTTIN 21 /* Background read from tty (POSIX). */ -#define SIGTTOU 22 /* Background write to tty (POSIX). */ -#define SIGURG 23 /* Urgent condition on socket (4.2 BSD). */ -#define SIGXCPU 24 /* CPU limit exceeded (4.2 BSD). */ -#define SIGXFSZ 25 /* File size limit exceeded (4.2 BSD). */ -#define SIGVTALRM 26 /* Virtual alarm clock (4.2 BSD). */ -#define SIGPROF 27 /* Profiling alarm clock (4.2 BSD). */ -#define SIGWINCH 28 /* Window size change (4.3 BSD, Sun). */ -#define SIGPOLL SIGIO /* Pollable event occurred (System V). */ -#define SIGIO 29 /* I/O now possible (4.2 BSD). */ -#define SIGPWR 30 /* Power failure restart (System V). */ -#define SIGSYS 31 /* Bad system call. */ -#define SIGUNUSED 31 - -#define _NSIG 32 /* Biggest signal number + 1 - (not including real-time signals). */ - -/* sigprocmask */ -#define SIG_BLOCK 0 -#define SIG_UNBLOCK 1 -#define SIG_SETMASK 2 -typedef unsigned long sigset_t; - -/* sa_flags */ -#define SA_NODEFER 0x40000000UL -#define SA_RESETHAND 0x80000000UL - -struct __siginfo; -struct sigaction { - union { - void (*__sa_handler)(int); - void (*__sa_sigaction)(int, struct __siginfo *, void *); - } __sigaction_u; - sigset_t sa_mask; - unsigned long sa_flags; - void (*sa_restorer)(void); -}; -#define sa_handler __sigaction_u.__sa_handler -#define sa_sigaction __sigaction_u.__sa_sigaction - -typedef void (*sighandler_t)(int); -extern int sigaction(int, const struct sigaction *, struct sigaction *); -extern sighandler_t signal(int signum, sighandler_t handler); -extern int sigprocmask(int, const sigset_t *, sigset_t *); -extern int raise(int signum); - - - -#endif -- 2.34.1