summary refs log tree commit diff stats
path: root/linux-user
diff options
context:
space:
mode:
Diffstat (limited to 'linux-user')
-rw-r--r--linux-user/elfload.c23
-rw-r--r--linux-user/main.c1
-rw-r--r--linux-user/sh4/signal.c8
-rw-r--r--linux-user/syscall.c18
-rw-r--r--linux-user/syscall_defs.h10
-rw-r--r--linux-user/tilegx/cpu_loop.c287
-rw-r--r--linux-user/tilegx/signal.c178
-rw-r--r--linux-user/tilegx/sockbits.h1
-rw-r--r--linux-user/tilegx/syscall_nr.h327
-rw-r--r--linux-user/tilegx/target_cpu.h44
-rw-r--r--linux-user/tilegx/target_elf.h14
-rw-r--r--linux-user/tilegx/target_fcntl.h11
-rw-r--r--linux-user/tilegx/target_signal.h23
-rw-r--r--linux-user/tilegx/target_structs.h46
-rw-r--r--linux-user/tilegx/target_syscall.h44
-rw-r--r--linux-user/tilegx/termbits.h1
16 files changed, 18 insertions, 1018 deletions
diff --git a/linux-user/elfload.c b/linux-user/elfload.c
index bab4237e90..140a971632 100644
--- a/linux-user/elfload.c
+++ b/linux-user/elfload.c
@@ -1387,29 +1387,6 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i
 
 #endif /* TARGET_S390X */
 
-#ifdef TARGET_TILEGX
-
-/* 42 bits real used address, a half for user mode */
-#define ELF_START_MMAP (0x00000020000000000ULL)
-
-#define elf_check_arch(x) ((x) == EM_TILEGX)
-
-#define ELF_CLASS   ELFCLASS64
-#define ELF_DATA    ELFDATA2LSB
-#define ELF_ARCH    EM_TILEGX
-
-static inline void init_thread(struct target_pt_regs *regs,
-                               struct image_info *infop)
-{
-    regs->pc = infop->entry;
-    regs->sp = infop->start_stack;
-
-}
-
-#define ELF_EXEC_PAGESIZE        65536 /* TILE-Gx page size is 64KB */
-
-#endif /* TARGET_TILEGX */
-
 #ifdef TARGET_RISCV
 
 #define ELF_START_MMAP 0x80000000
diff --git a/linux-user/main.c b/linux-user/main.c
index 81f48ff54e..4f4746dce8 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -205,6 +205,7 @@ CPUArchState *cpu_copy(CPUArchState *env)
     /* Reset non arch specific state */
     cpu_reset(new_cpu);
 
+    new_cpu->tcg_cflags = cpu->tcg_cflags;
     memcpy(new_env, env, sizeof(CPUArchState));
 
     /* Clone all break/watchpoints.
diff --git a/linux-user/sh4/signal.c b/linux-user/sh4/signal.c
index cc89a48ff8..29c1ee30e6 100644
--- a/linux-user/sh4/signal.c
+++ b/linux-user/sh4/signal.c
@@ -82,9 +82,11 @@ static abi_ulong get_sigframe(struct target_sigaction *ka,
     return (sp - frame_size) & -8ul;
 }
 
-/* Notice when we're in the middle of a gUSA region and reset.
-   Note that this will only occur for !parallel_cpus, as we will
-   translate such sequences differently in a parallel context.  */
+/*
+ * Notice when we're in the middle of a gUSA region and reset.
+ * Note that this will only occur when #CF_PARALLEL is unset, as we
+ * will translate such sequences differently in a parallel context.
+ */
 static void unwind_gusa(CPUSH4State *regs)
 {
     /* If the stack pointer is sufficiently negative, and we haven't
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 389ec09764..9522f603aa 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -6481,6 +6481,16 @@ static int do_fork(CPUArchState *env, unsigned int flags, abi_ulong newsp,
         /* Grab a mutex so that thread setup appears atomic.  */
         pthread_mutex_lock(&clone_lock);
 
+        /*
+         * If this is our first additional thread, we need to ensure we
+         * generate code for parallel execution and flush old translations.
+         * Do this now so that the copy gets CF_PARALLEL too.
+         */
+        if (!(cpu->tcg_cflags & CF_PARALLEL)) {
+            cpu->tcg_cflags |= CF_PARALLEL;
+            tb_flush(cpu);
+        }
+
         /* we create a new CPU instance. */
         new_env = cpu_copy(env);
         /* Init regs that differ from the parent.  */
@@ -6521,14 +6531,6 @@ static int do_fork(CPUArchState *env, unsigned int flags, abi_ulong newsp,
         sigprocmask(SIG_BLOCK, &sigmask, &info.sigmask);
         cpu->random_seed = qemu_guest_random_seed_thread_part1();
 
-        /* If this is our first additional thread, we need to ensure we
-         * generate code for parallel execution and flush old translations.
-         */
-        if (!parallel_cpus) {
-            parallel_cpus = true;
-            tb_flush(cpu);
-        }
-
         ret = pthread_create(&info.thread, &attr, clone_func, &info);
         /* TODO: Free new CPU state if thread creation failed.  */
 
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index 6823d8646c..25be414727 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -72,8 +72,7 @@
 
 #if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_SH4) \
     || defined(TARGET_M68K) || defined(TARGET_CRIS) \
-    || defined(TARGET_S390X) \
-    || defined(TARGET_OPENRISC) || defined(TARGET_TILEGX) \
+    || defined(TARGET_S390X) || defined(TARGET_OPENRISC) \
     || defined(TARGET_NIOS2) || defined(TARGET_RISCV) \
     || defined(TARGET_XTENSA)
 
@@ -691,10 +690,6 @@ typedef struct target_siginfo {
 #define TARGET_ILL_PRVREG	(6)	/* privileged register */
 #define TARGET_ILL_COPROC	(7)	/* coprocessor error */
 #define TARGET_ILL_BADSTK	(8)	/* internal stack error */
-#ifdef TARGET_TILEGX
-#define TARGET_ILL_DBLFLT       (9)     /* double fault */
-#define TARGET_ILL_HARDWALL     (10)    /* user networks hardwall violation */
-#endif
 
 /*
  * SIGFPE si_codes
@@ -2149,8 +2144,7 @@ struct target_stat64  {
     abi_ulong __unused5;
 };
 
-#elif defined(TARGET_OPENRISC) || defined(TARGET_TILEGX) || \
-      defined(TARGET_NIOS2) || defined(TARGET_RISCV)
+#elif defined(TARGET_OPENRISC) || defined(TARGET_NIOS2) || defined(TARGET_RISCV)
 
 /* These are the asm-generic versions of the stat and stat64 structures */
 
diff --git a/linux-user/tilegx/cpu_loop.c b/linux-user/tilegx/cpu_loop.c
deleted file mode 100644
index 490a8f38e5..0000000000
--- a/linux-user/tilegx/cpu_loop.c
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- *  qemu user cpu loop
- *
- *  Copyright (c) 2003-2008 Fabrice Bellard
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "qemu/osdep.h"
-#include "qemu-common.h"
-#include "qemu.h"
-#include "cpu_loop-common.h"
-
-static void gen_sigill_reg(CPUTLGState *env)
-{
-    target_siginfo_t info;
-
-    info.si_signo = TARGET_SIGILL;
-    info.si_errno = 0;
-    info.si_code = TARGET_ILL_PRVREG;
-    info._sifields._sigfault._addr = env->pc;
-    queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info);
-}
-
-static void do_signal(CPUTLGState *env, int signo, int sigcode)
-{
-    target_siginfo_t info;
-
-    info.si_signo = signo;
-    info.si_errno = 0;
-    info._sifields._sigfault._addr = env->pc;
-
-    if (signo == TARGET_SIGSEGV) {
-        /* The passed in sigcode is a dummy; check for a page mapping
-           and pass either MAPERR or ACCERR.  */
-        target_ulong addr = env->excaddr;
-        info._sifields._sigfault._addr = addr;
-        if (page_check_range(addr, 1, PAGE_VALID) < 0) {
-            sigcode = TARGET_SEGV_MAPERR;
-        } else {
-            sigcode = TARGET_SEGV_ACCERR;
-        }
-    }
-    info.si_code = sigcode;
-
-    queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info);
-}
-
-static void gen_sigsegv_maperr(CPUTLGState *env, target_ulong addr)
-{
-    env->excaddr = addr;
-    do_signal(env, TARGET_SIGSEGV, 0);
-}
-
-static void set_regval(CPUTLGState *env, uint8_t reg, uint64_t val)
-{
-    if (unlikely(reg >= TILEGX_R_COUNT)) {
-        switch (reg) {
-        case TILEGX_R_SN:
-        case TILEGX_R_ZERO:
-            return;
-        case TILEGX_R_IDN0:
-        case TILEGX_R_IDN1:
-        case TILEGX_R_UDN0:
-        case TILEGX_R_UDN1:
-        case TILEGX_R_UDN2:
-        case TILEGX_R_UDN3:
-            gen_sigill_reg(env);
-            return;
-        default:
-            g_assert_not_reached();
-        }
-    }
-    env->regs[reg] = val;
-}
-
-/*
- * Compare the 8-byte contents of the CmpValue SPR with the 8-byte value in
- * memory at the address held in the first source register. If the values are
- * not equal, then no memory operation is performed. If the values are equal,
- * the 8-byte quantity from the second source register is written into memory
- * at the address held in the first source register. In either case, the result
- * of the instruction is the value read from memory. The compare and write to
- * memory are atomic and thus can be used for synchronization purposes. This
- * instruction only operates for addresses aligned to a 8-byte boundary.
- * Unaligned memory access causes an Unaligned Data Reference interrupt.
- *
- * Functional Description (64-bit)
- *       uint64_t memVal = memoryReadDoubleWord (rf[SrcA]);
- *       rf[Dest] = memVal;
- *       if (memVal == SPR[CmpValueSPR])
- *           memoryWriteDoubleWord (rf[SrcA], rf[SrcB]);
- *
- * Functional Description (32-bit)
- *       uint64_t memVal = signExtend32 (memoryReadWord (rf[SrcA]));
- *       rf[Dest] = memVal;
- *       if (memVal == signExtend32 (SPR[CmpValueSPR]))
- *           memoryWriteWord (rf[SrcA], rf[SrcB]);
- *
- *
- * This function also processes exch and exch4 which need not process SPR.
- */
-static void do_exch(CPUTLGState *env, bool quad, bool cmp)
-{
-    target_ulong addr;
-    target_long val, sprval;
-
-    start_exclusive();
-
-    addr = env->atomic_srca;
-    if (quad ? get_user_s64(val, addr) : get_user_s32(val, addr)) {
-        goto sigsegv_maperr;
-    }
-
-    if (cmp) {
-        if (quad) {
-            sprval = env->spregs[TILEGX_SPR_CMPEXCH];
-        } else {
-            sprval = sextract64(env->spregs[TILEGX_SPR_CMPEXCH], 0, 32);
-        }
-    }
-
-    if (!cmp || val == sprval) {
-        target_long valb = env->atomic_srcb;
-        if (quad ? put_user_u64(valb, addr) : put_user_u32(valb, addr)) {
-            goto sigsegv_maperr;
-        }
-    }
-
-    set_regval(env, env->atomic_dstr, val);
-    end_exclusive();
-    return;
-
- sigsegv_maperr:
-    end_exclusive();
-    gen_sigsegv_maperr(env, addr);
-}
-
-static void do_fetch(CPUTLGState *env, int trapnr, bool quad)
-{
-    int8_t write = 1;
-    target_ulong addr;
-    target_long val, valb;
-
-    start_exclusive();
-
-    addr = env->atomic_srca;
-    valb = env->atomic_srcb;
-    if (quad ? get_user_s64(val, addr) : get_user_s32(val, addr)) {
-        goto sigsegv_maperr;
-    }
-
-    switch (trapnr) {
-    case TILEGX_EXCP_OPCODE_FETCHADD:
-    case TILEGX_EXCP_OPCODE_FETCHADD4:
-        valb += val;
-        break;
-    case TILEGX_EXCP_OPCODE_FETCHADDGEZ:
-        valb += val;
-        if (valb < 0) {
-            write = 0;
-        }
-        break;
-    case TILEGX_EXCP_OPCODE_FETCHADDGEZ4:
-        valb += val;
-        if ((int32_t)valb < 0) {
-            write = 0;
-        }
-        break;
-    case TILEGX_EXCP_OPCODE_FETCHAND:
-    case TILEGX_EXCP_OPCODE_FETCHAND4:
-        valb &= val;
-        break;
-    case TILEGX_EXCP_OPCODE_FETCHOR:
-    case TILEGX_EXCP_OPCODE_FETCHOR4:
-        valb |= val;
-        break;
-    default:
-        g_assert_not_reached();
-    }
-
-    if (write) {
-        if (quad ? put_user_u64(valb, addr) : put_user_u32(valb, addr)) {
-            goto sigsegv_maperr;
-        }
-    }
-
-    set_regval(env, env->atomic_dstr, val);
-    end_exclusive();
-    return;
-
- sigsegv_maperr:
-    end_exclusive();
-    gen_sigsegv_maperr(env, addr);
-}
-
-void cpu_loop(CPUTLGState *env)
-{
-    CPUState *cs = env_cpu(env);
-    int trapnr;
-
-    while (1) {
-        cpu_exec_start(cs);
-        trapnr = cpu_exec(cs);
-        cpu_exec_end(cs);
-        process_queued_cpu_work(cs);
-
-        switch (trapnr) {
-        case TILEGX_EXCP_SYSCALL:
-        {
-            abi_ulong ret = do_syscall(env, env->regs[TILEGX_R_NR],
-                                       env->regs[0], env->regs[1],
-                                       env->regs[2], env->regs[3],
-                                       env->regs[4], env->regs[5],
-                                       env->regs[6], env->regs[7]);
-            if (ret == -TARGET_ERESTARTSYS) {
-                env->pc -= 8;
-            } else if (ret != -TARGET_QEMU_ESIGRETURN) {
-                env->regs[TILEGX_R_RE] = ret;
-                env->regs[TILEGX_R_ERR] = TILEGX_IS_ERRNO(ret) ? -ret : 0;
-            }
-            break;
-        }
-        case TILEGX_EXCP_OPCODE_EXCH:
-            do_exch(env, true, false);
-            break;
-        case TILEGX_EXCP_OPCODE_EXCH4:
-            do_exch(env, false, false);
-            break;
-        case TILEGX_EXCP_OPCODE_CMPEXCH:
-            do_exch(env, true, true);
-            break;
-        case TILEGX_EXCP_OPCODE_CMPEXCH4:
-            do_exch(env, false, true);
-            break;
-        case TILEGX_EXCP_OPCODE_FETCHADD:
-        case TILEGX_EXCP_OPCODE_FETCHADDGEZ:
-        case TILEGX_EXCP_OPCODE_FETCHAND:
-        case TILEGX_EXCP_OPCODE_FETCHOR:
-            do_fetch(env, trapnr, true);
-            break;
-        case TILEGX_EXCP_OPCODE_FETCHADD4:
-        case TILEGX_EXCP_OPCODE_FETCHADDGEZ4:
-        case TILEGX_EXCP_OPCODE_FETCHAND4:
-        case TILEGX_EXCP_OPCODE_FETCHOR4:
-            do_fetch(env, trapnr, false);
-            break;
-        case TILEGX_EXCP_SIGNAL:
-            do_signal(env, env->signo, env->sigcode);
-            break;
-        case TILEGX_EXCP_REG_IDN_ACCESS:
-        case TILEGX_EXCP_REG_UDN_ACCESS:
-            gen_sigill_reg(env);
-            break;
-        case EXCP_ATOMIC:
-            cpu_exec_step_atomic(cs);
-            break;
-        default:
-            fprintf(stderr, "trapnr is %d[0x%x].\n", trapnr, trapnr);
-            g_assert_not_reached();
-        }
-        process_pending_signals(env);
-    }
-}
-
-void target_cpu_copy_regs(CPUArchState *env, struct target_pt_regs *regs)
-{
-    int i;
-    for (i = 0; i < TILEGX_R_COUNT; i++) {
-        env->regs[i] = regs->regs[i];
-    }
-    for (i = 0; i < TILEGX_SPR_COUNT; i++) {
-        env->spregs[i] = 0;
-    }
-    env->pc = regs->pc;
-}
diff --git a/linux-user/tilegx/signal.c b/linux-user/tilegx/signal.c
deleted file mode 100644
index c5a1c7161d..0000000000
--- a/linux-user/tilegx/signal.c
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- *  Emulation of Linux signals
- *
- *  Copyright (c) 2003 Fabrice Bellard
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-#include "qemu/osdep.h"
-#include "qemu.h"
-#include "signal-common.h"
-#include "linux-user/trace.h"
-
-struct target_sigcontext {
-    union {
-        /* General-purpose registers.  */
-        abi_ulong gregs[56];
-        struct {
-            abi_ulong __gregs[53];
-            abi_ulong tp;        /* Aliases gregs[TREG_TP].  */
-            abi_ulong sp;        /* Aliases gregs[TREG_SP].  */
-            abi_ulong lr;        /* Aliases gregs[TREG_LR].  */
-        };
-    };
-    abi_ulong pc;        /* Program counter.  */
-    abi_ulong ics;       /* In Interrupt Critical Section?  */
-    abi_ulong faultnum;  /* Fault number.  */
-    abi_ulong pad[5];
-};
-
-struct target_ucontext {
-    abi_ulong tuc_flags;
-    abi_ulong tuc_link;
-    target_stack_t tuc_stack;
-    struct target_sigcontext tuc_mcontext;
-    target_sigset_t tuc_sigmask;   /* mask last for extensibility */
-};
-
-struct target_rt_sigframe {
-    unsigned char save_area[16]; /* caller save area */
-    struct target_siginfo info;
-    struct target_ucontext uc;
-    abi_ulong retcode[2];
-};
-
-#define INSN_MOVELI_R10_139  0x00045fe551483000ULL /* { moveli r10, 139 } */
-#define INSN_SWINT1          0x286b180051485000ULL /* { swint1 } */
-
-
-static void setup_sigcontext(struct target_sigcontext *sc,
-                             CPUArchState *env, int signo)
-{
-    int i;
-
-    for (i = 0; i < TILEGX_R_COUNT; ++i) {
-        __put_user(env->regs[i], &sc->gregs[i]);
-    }
-
-    __put_user(env->pc, &sc->pc);
-    __put_user(0, &sc->ics);
-    __put_user(signo, &sc->faultnum);
-}
-
-static void restore_sigcontext(CPUTLGState *env, struct target_sigcontext *sc)
-{
-    int i;
-
-    for (i = 0; i < TILEGX_R_COUNT; ++i) {
-        __get_user(env->regs[i], &sc->gregs[i]);
-    }
-
-    __get_user(env->pc, &sc->pc);
-}
-
-static abi_ulong get_sigframe(struct target_sigaction *ka, CPUArchState *env,
-                              size_t frame_size)
-{
-    unsigned long sp = get_sp_from_cpustate(env);
-
-    if (on_sig_stack(sp) && !likely(on_sig_stack(sp - frame_size))) {
-        return -1UL;
-    }
-
-    sp = target_sigsp(sp, ka) - frame_size;
-    sp &= -16UL;
-    return sp;
-}
-
-void setup_rt_frame(int sig, struct target_sigaction *ka,
-                    target_siginfo_t *info,
-                    target_sigset_t *set, CPUArchState *env)
-{
-    abi_ulong frame_addr;
-    struct target_rt_sigframe *frame;
-    unsigned long restorer;
-
-    frame_addr = get_sigframe(ka, env, sizeof(*frame));
-    trace_user_setup_rt_frame(env, frame_addr);
-    if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) {
-        goto give_sigsegv;
-    }
-
-    /* Always write at least the signal number for the stack backtracer. */
-    if (ka->sa_flags & TARGET_SA_SIGINFO) {
-        /* At sigreturn time, restore the callee-save registers too. */
-        tswap_siginfo(&frame->info, info);
-        /* regs->flags |= PT_FLAGS_RESTORE_REGS; FIXME: we can skip it? */
-    } else {
-        __put_user(info->si_signo, &frame->info.si_signo);
-    }
-
-    /* Create the ucontext.  */
-    __put_user(0, &frame->uc.tuc_flags);
-    __put_user(0, &frame->uc.tuc_link);
-    target_save_altstack(&frame->uc.tuc_stack, env);
-    setup_sigcontext(&frame->uc.tuc_mcontext, env, info->si_signo);
-
-    if (ka->sa_flags & TARGET_SA_RESTORER) {
-        restorer = (unsigned long) ka->sa_restorer;
-    } else {
-        __put_user(INSN_MOVELI_R10_139, &frame->retcode[0]);
-        __put_user(INSN_SWINT1, &frame->retcode[1]);
-        restorer = frame_addr + offsetof(struct target_rt_sigframe, retcode);
-    }
-    env->pc = (unsigned long) ka->_sa_handler;
-    env->regs[TILEGX_R_SP] = (unsigned long) frame;
-    env->regs[TILEGX_R_LR] = restorer;
-    env->regs[0] = (unsigned long) sig;
-    env->regs[1] = (unsigned long) &frame->info;
-    env->regs[2] = (unsigned long) &frame->uc;
-    /* regs->flags |= PT_FLAGS_CALLER_SAVES; FIXME: we can skip it? */
-
-    unlock_user_struct(frame, frame_addr, 1);
-    return;
-
-give_sigsegv:
-    force_sigsegv(sig);
-}
-
-long do_rt_sigreturn(CPUTLGState *env)
-{
-    abi_ulong frame_addr = env->regs[TILEGX_R_SP];
-    struct target_rt_sigframe *frame;
-    sigset_t set;
-
-    trace_user_do_rt_sigreturn(env, frame_addr);
-    if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1)) {
-        goto badframe;
-    }
-    target_to_host_sigset(&set, &frame->uc.tuc_sigmask);
-    set_sigmask(&set);
-
-    restore_sigcontext(env, &frame->uc.tuc_mcontext);
-    if (do_sigaltstack(frame_addr + offsetof(struct target_rt_sigframe,
-                                             uc.tuc_stack),
-                       0, env->regs[TILEGX_R_SP]) == -EFAULT) {
-        goto badframe;
-    }
-
-    unlock_user_struct(frame, frame_addr, 0);
-    return -TARGET_QEMU_ESIGRETURN;
-
-
- badframe:
-    unlock_user_struct(frame, frame_addr, 0);
-    force_sig(TARGET_SIGSEGV);
-    return -TARGET_QEMU_ESIGRETURN;
-}
diff --git a/linux-user/tilegx/sockbits.h b/linux-user/tilegx/sockbits.h
deleted file mode 100644
index 0e4c8f012d..0000000000
--- a/linux-user/tilegx/sockbits.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../generic/sockbits.h"
diff --git a/linux-user/tilegx/syscall_nr.h b/linux-user/tilegx/syscall_nr.h
deleted file mode 100644
index c104b94230..0000000000
--- a/linux-user/tilegx/syscall_nr.h
+++ /dev/null
@@ -1,327 +0,0 @@
-#ifndef TILEGX_SYSCALL_NR_H
-#define TILEGX_SYSCALL_NR_H
-
-/*
- * Copy from linux kernel asm-generic/unistd.h, which tilegx uses.
- */
-#define TARGET_NR_io_setup                      0
-#define TARGET_NR_io_destroy                    1
-#define TARGET_NR_io_submit                     2
-#define TARGET_NR_io_cancel                     3
-#define TARGET_NR_io_getevents                  4
-#define TARGET_NR_setxattr                      5
-#define TARGET_NR_lsetxattr                     6
-#define TARGET_NR_fsetxattr                     7
-#define TARGET_NR_getxattr                      8
-#define TARGET_NR_lgetxattr                     9
-#define TARGET_NR_fgetxattr                     10
-#define TARGET_NR_listxattr                     11
-#define TARGET_NR_llistxattr                    12
-#define TARGET_NR_flistxattr                    13
-#define TARGET_NR_removexattr                   14
-#define TARGET_NR_lremovexattr                  15
-#define TARGET_NR_fremovexattr                  16
-#define TARGET_NR_getcwd                        17
-#define TARGET_NR_lookup_dcookie                18
-#define TARGET_NR_eventfd2                      19
-#define TARGET_NR_epoll_create1                 20
-#define TARGET_NR_epoll_ctl                     21
-#define TARGET_NR_epoll_pwait                   22
-#define TARGET_NR_dup                           23
-#define TARGET_NR_dup3                          24
-#define TARGET_NR_fcntl                         25
-#define TARGET_NR_inotify_init1                 26
-#define TARGET_NR_inotify_add_watch             27
-#define TARGET_NR_inotify_rm_watch              28
-#define TARGET_NR_ioctl                         29
-#define TARGET_NR_ioprio_set                    30
-#define TARGET_NR_ioprio_get                    31
-#define TARGET_NR_flock                         32
-#define TARGET_NR_mknodat                       33
-#define TARGET_NR_mkdirat                       34
-#define TARGET_NR_unlinkat                      35
-#define TARGET_NR_symlinkat                     36
-#define TARGET_NR_linkat                        37
-#define TARGET_NR_renameat                      38
-#define TARGET_NR_umount2                       39
-#define TARGET_NR_mount                         40
-#define TARGET_NR_pivot_root                    41
-#define TARGET_NR_nfsservctl                    42
-#define TARGET_NR_statfs                        43
-#define TARGET_NR_fstatfs                       44
-#define TARGET_NR_truncate                      45
-#define TARGET_NR_ftruncate                     46
-#define TARGET_NR_fallocate                     47
-#define TARGET_NR_faccessat                     48
-#define TARGET_NR_chdir                         49
-#define TARGET_NR_fchdir                        50
-#define TARGET_NR_chroot                        51
-#define TARGET_NR_fchmod                        52
-#define TARGET_NR_fchmodat                      53
-#define TARGET_NR_fchownat                      54
-#define TARGET_NR_fchown                        55
-#define TARGET_NR_openat                        56
-#define TARGET_NR_close                         57
-#define TARGET_NR_vhangup                       58
-#define TARGET_NR_pipe2                         59
-#define TARGET_NR_quotactl                      60
-#define TARGET_NR_getdents64                    61
-#define TARGET_NR_lseek                         62
-#define TARGET_NR_read                          63
-#define TARGET_NR_write                         64
-#define TARGET_NR_readv                         65
-#define TARGET_NR_writev                        66
-#define TARGET_NR_pread64                       67
-#define TARGET_NR_pwrite64                      68
-#define TARGET_NR_preadv                        69
-#define TARGET_NR_pwritev                       70
-#define TARGET_NR_sendfile                      71
-#define TARGET_NR_pselect6                      72
-#define TARGET_NR_ppoll                         73
-#define TARGET_NR_signalfd4                     74
-#define TARGET_NR_vmsplice                      75
-#define TARGET_NR_splice                        76
-#define TARGET_NR_tee                           77
-#define TARGET_NR_readlinkat                    78
-#define TARGET_NR_fstatat64                     79 /* let syscall.c known */
-#define TARGET_NR_fstat                         80
-#define TARGET_NR_sync                          81
-#define TARGET_NR_fsync                         82
-#define TARGET_NR_fdatasync                     83
-#define TARGET_NR_sync_file_range               84 /* For tilegx, no range2 */
-#define TARGET_NR_timerfd_create                85
-#define TARGET_NR_timerfd_settime               86
-#define TARGET_NR_timerfd_gettime               87
-#define TARGET_NR_utimensat                     88
-#define TARGET_NR_acct                          89
-#define TARGET_NR_capget                        90
-#define TARGET_NR_capset                        91
-#define TARGET_NR_personality                   92
-#define TARGET_NR_exit                          93
-#define TARGET_NR_exit_group                    94
-#define TARGET_NR_waitid                        95
-#define TARGET_NR_set_tid_address               96
-#define TARGET_NR_unshare                       97
-#define TARGET_NR_futex                         98
-#define TARGET_NR_set_robust_list               99
-#define TARGET_NR_get_robust_list               100
-#define TARGET_NR_nanosleep                     101
-#define TARGET_NR_getitimer                     102
-#define TARGET_NR_setitimer                     103
-#define TARGET_NR_kexec_load                    104
-#define TARGET_NR_init_module                   105
-#define TARGET_NR_delete_module                 106
-#define TARGET_NR_timer_create                  107
-#define TARGET_NR_timer_gettime                 108
-#define TARGET_NR_timer_getoverrun              109
-#define TARGET_NR_timer_settime                 110
-#define TARGET_NR_timer_delete                  111
-#define TARGET_NR_clock_settime                 112
-#define TARGET_NR_clock_gettime                 113
-#define TARGET_NR_clock_getres                  114
-#define TARGET_NR_clock_nanosleep               115
-#define TARGET_NR_syslog                        116
-#define TARGET_NR_ptrace                        117
-#define TARGET_NR_sched_setparam                118
-#define TARGET_NR_sched_setscheduler            119
-#define TARGET_NR_sched_getscheduler            120
-#define TARGET_NR_sched_getparam                121
-#define TARGET_NR_sched_setaffinity             122
-#define TARGET_NR_sched_getaffinity             123
-#define TARGET_NR_sched_yield                   124
-#define TARGET_NR_sched_get_priority_max        125
-#define TARGET_NR_sched_get_priority_min        126
-#define TARGET_NR_sched_rr_get_interval         127
-#define TARGET_NR_restart_syscall               128
-#define TARGET_NR_kill                          129
-#define TARGET_NR_tkill                         130
-#define TARGET_NR_tgkill                        131
-#define TARGET_NR_sigaltstack                   132
-#define TARGET_NR_rt_sigsuspend                 133
-#define TARGET_NR_rt_sigaction                  134
-#define TARGET_NR_rt_sigprocmask                135
-#define TARGET_NR_rt_sigpending                 136
-#define TARGET_NR_rt_sigtimedwait               137
-#define TARGET_NR_rt_sigqueueinfo               138
-#define TARGET_NR_rt_sigreturn                  139
-#define TARGET_NR_setpriority                   140
-#define TARGET_NR_getpriority                   141
-#define TARGET_NR_reboot                        142
-#define TARGET_NR_setregid                      143
-#define TARGET_NR_setgid                        144
-#define TARGET_NR_setreuid                      145
-#define TARGET_NR_setuid                        146
-#define TARGET_NR_setresuid                     147
-#define TARGET_NR_getresuid                     148
-#define TARGET_NR_setresgid                     149
-#define TARGET_NR_getresgid                     150
-#define TARGET_NR_setfsuid                      151
-#define TARGET_NR_setfsgid                      152
-#define TARGET_NR_times                         153
-#define TARGET_NR_setpgid                       154
-#define TARGET_NR_getpgid                       155
-#define TARGET_NR_getsid                        156
-#define TARGET_NR_setsid                        157
-#define TARGET_NR_getgroups                     158
-#define TARGET_NR_setgroups                     159
-#define TARGET_NR_uname                         160
-#define TARGET_NR_sethostname                   161
-#define TARGET_NR_setdomainname                 162
-#define TARGET_NR_getrlimit                     163
-#define TARGET_NR_setrlimit                     164
-#define TARGET_NR_getrusage                     165
-#define TARGET_NR_umask                         166
-#define TARGET_NR_prctl                         167
-#define TARGET_NR_getcpu                        168
-#define TARGET_NR_gettimeofday                  169
-#define TARGET_NR_settimeofday                  170
-#define TARGET_NR_adjtimex                      171
-#define TARGET_NR_getpid                        172
-#define TARGET_NR_getppid                       173
-#define TARGET_NR_getuid                        174
-#define TARGET_NR_geteuid                       175
-#define TARGET_NR_getgid                        176
-#define TARGET_NR_getegid                       177
-#define TARGET_NR_gettid                        178
-#define TARGET_NR_sysinfo                       179
-#define TARGET_NR_mq_open                       180
-#define TARGET_NR_mq_unlink                     181
-#define TARGET_NR_mq_timedsend                  182
-#define TARGET_NR_mq_timedreceive               183
-#define TARGET_NR_mq_notify                     184
-#define TARGET_NR_mq_getsetattr                 185
-#define TARGET_NR_msgget                        186
-#define TARGET_NR_msgctl                        187
-#define TARGET_NR_msgrcv                        188
-#define TARGET_NR_msgsnd                        189
-#define TARGET_NR_semget                        190
-#define TARGET_NR_semctl                        191
-#define TARGET_NR_semtimedop                    192
-#define TARGET_NR_semop                         193
-#define TARGET_NR_shmget                        194
-#define TARGET_NR_shmctl                        195
-#define TARGET_NR_shmat                         196
-#define TARGET_NR_shmdt                         197
-#define TARGET_NR_socket                        198
-#define TARGET_NR_socketpair                    199
-#define TARGET_NR_bind                          200
-#define TARGET_NR_listen                        201
-#define TARGET_NR_accept                        202
-#define TARGET_NR_connect                       203
-#define TARGET_NR_getsockname                   204
-#define TARGET_NR_getpeername                   205
-#define TARGET_NR_sendto                        206
-#define TARGET_NR_recvfrom                      207
-#define TARGET_NR_setsockopt                    208
-#define TARGET_NR_getsockopt                    209
-#define TARGET_NR_shutdown                      210
-#define TARGET_NR_sendmsg                       211
-#define TARGET_NR_recvmsg                       212
-#define TARGET_NR_readahead                     213
-#define TARGET_NR_brk                           214
-#define TARGET_NR_munmap                        215
-#define TARGET_NR_mremap                        216
-#define TARGET_NR_add_key                       217
-#define TARGET_NR_request_key                   218
-#define TARGET_NR_keyctl                        219
-#define TARGET_NR_clone                         220
-#define TARGET_NR_execve                        221
-#define TARGET_NR_mmap                          222
-#define TARGET_NR_fadvise64                     223
-#define TARGET_NR_swapon                        224
-#define TARGET_NR_swapoff                       225
-#define TARGET_NR_mprotect                      226
-#define TARGET_NR_msync                         227
-#define TARGET_NR_mlock                         228
-#define TARGET_NR_munlock                       229
-#define TARGET_NR_mlockall                      230
-#define TARGET_NR_munlockall                    231
-#define TARGET_NR_mincore                       232
-#define TARGET_NR_madvise                       233
-#define TARGET_NR_remap_file_pages              234
-#define TARGET_NR_mbind                         235
-#define TARGET_NR_get_mempolicy                 236
-#define TARGET_NR_set_mempolicy                 237
-#define TARGET_NR_migrate_pages                 238
-#define TARGET_NR_move_pages                    239
-#define TARGET_NR_rt_tgsigqueueinfo             240
-#define TARGET_NR_perf_event_open               241
-#define TARGET_NR_accept4                       242
-#define TARGET_NR_recvmmsg                      243
-
-#define TARGET_NR_arch_specific_syscall         244
-#define TARGET_NR_cacheflush                    245  /* tilegx own syscall */
-
-#define TARGET_NR_wait4                         260
-#define TARGET_NR_prlimit64                     261
-#define TARGET_NR_fanotify_init                 262
-#define TARGET_NR_fanotify_mark                 263
-#define TARGET_NR_name_to_handle_at             264
-#define TARGET_NR_open_by_handle_at             265
-#define TARGET_NR_clock_adjtime                 266
-#define TARGET_NR_syncfs                        267
-#define TARGET_NR_setns                         268
-#define TARGET_NR_sendmmsg                      269
-#define TARGET_NR_process_vm_readv              270
-#define TARGET_NR_process_vm_writev             271
-#define TARGET_NR_kcmp                          272
-#define TARGET_NR_finit_module                  273
-#define TARGET_NR_sched_setattr                 274
-#define TARGET_NR_sched_getattr                 275
-#define TARGET_NR_renameat2                     276
-#define TARGET_NR_seccomp                       277
-#define TARGET_NR_getrandom                     278
-#define TARGET_NR_memfd_create                  279
-#define TARGET_NR_bpf                           280
-#define TARGET_NR_execveat                      281
-#define TARGET_NR_userfaultfd                   282
-#define TARGET_NR_membarrier                    283
-#define TARGET_NR_mlock2                        284
-#define TARGET_NR_copy_file_range               285
-
-#define TARGET_NR_open                          1024
-#define TARGET_NR_link                          1025
-#define TARGET_NR_unlink                        1026
-#define TARGET_NR_mknod                         1027
-#define TARGET_NR_chmod                         1028
-#define TARGET_NR_chown                         1029
-#define TARGET_NR_mkdir                         1030
-#define TARGET_NR_rmdir                         1031
-#define TARGET_NR_lchown                        1032
-#define TARGET_NR_access                        1033
-#define TARGET_NR_rename                        1034
-#define TARGET_NR_readlink                      1035
-#define TARGET_NR_symlink                       1036
-#define TARGET_NR_utimes                        1037
-#define TARGET_NR_stat64                        1038 /* let syscall.c known */
-#define TARGET_NR_lstat                         1039
-
-#define TARGET_NR_pipe                          1040
-#define TARGET_NR_dup2                          1041
-#define TARGET_NR_epoll_create                  1042
-#define TARGET_NR_inotify_init                  1043
-#define TARGET_NR_eventfd                       1044
-#define TARGET_NR_signalfd                      1045
-
-#define TARGET_NR_alarm                         1059
-#define TARGET_NR_getpgrp                       1060
-#define TARGET_NR_pause                         1061
-#define TARGET_NR_time                          1062
-#define TARGET_NR_utime                         1063
-#define TARGET_NR_creat                         1064
-#define TARGET_NR_getdents                      1065
-#define TARGET_NR_futimesat                     1066
-#define TARGET_NR_poll                          1068
-#define TARGET_NR_epoll_wait                    1069
-#define TARGET_NR_ustat                         1070
-#define TARGET_NR_vfork                         1071
-#define TARGET_NR_oldwait4                      1072
-#define TARGET_NR_recv                          1073
-#define TARGET_NR_send                          1074
-#define TARGET_NR_bdflush                       1075
-#define TARGET_NR_umount                        1076
-#define TARGET_NR_uselib                        1077
-#define TARGET_NR__sysctl                       1078
-#define TARGET_NR_fork                          1079
-
-#endif
diff --git a/linux-user/tilegx/target_cpu.h b/linux-user/tilegx/target_cpu.h
deleted file mode 100644
index 5fa9e2a9a4..0000000000
--- a/linux-user/tilegx/target_cpu.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * TILE-Gx specific CPU ABI and functions for linux-user
- *
- * Copyright (c) 2015 Chen Gang
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef TILEGX_TARGET_CPU_H
-#define TILEGX_TARGET_CPU_H
-
-static inline void cpu_clone_regs_child(CPUTLGState *env, target_ulong newsp,
-                                        unsigned flags)
-{
-    if (newsp) {
-        env->regs[TILEGX_R_SP] = newsp;
-    }
-    env->regs[TILEGX_R_RE] = 0;
-}
-
-static inline void cpu_clone_regs_parent(CPUTLGState *env, unsigned flags)
-{
-}
-
-static inline void cpu_set_tls(CPUTLGState *env, target_ulong newtls)
-{
-    env->regs[TILEGX_R_TP] = newtls;
-}
-
-static inline abi_ulong get_sp_from_cpustate(CPUTLGState *state)
-{
-    return state->regs[TILEGX_R_SP];
-}
-#endif
diff --git a/linux-user/tilegx/target_elf.h b/linux-user/tilegx/target_elf.h
deleted file mode 100644
index 7197bb0005..0000000000
--- a/linux-user/tilegx/target_elf.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation, or (at your option) any
- * later version. See the COPYING file in the top-level directory.
- */
-
-#ifndef TILEGX_TARGET_ELF_H
-#define TILEGX_TARGET_ELF_H
-static inline const char *cpu_get_model(uint32_t eflags)
-{
-    return "any";
-}
-#endif
diff --git a/linux-user/tilegx/target_fcntl.h b/linux-user/tilegx/target_fcntl.h
deleted file mode 100644
index 5ed7438459..0000000000
--- a/linux-user/tilegx/target_fcntl.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation, or (at your option) any
- * later version. See the COPYING file in the top-level directory.
- */
-
-#ifndef TILEGX_TARGET_FCNTL_H
-#define TILEGX_TARGET_FCNTL_H
-#include "../generic/fcntl.h"
-#endif
diff --git a/linux-user/tilegx/target_signal.h b/linux-user/tilegx/target_signal.h
deleted file mode 100644
index 655be13009..0000000000
--- a/linux-user/tilegx/target_signal.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef TILEGX_TARGET_SIGNAL_H
-#define TILEGX_TARGET_SIGNAL_H
-
-/* this struct defines a stack used during syscall handling */
-
-typedef struct target_sigaltstack {
-    abi_ulong ss_sp;
-    abi_int ss_flags;
-    abi_ulong ss_size;
-} target_stack_t;
-
-/*
- * sigaltstack controls
- */
-#define TARGET_SS_ONSTACK     1
-#define TARGET_SS_DISABLE     2
-
-#define TARGET_MINSIGSTKSZ    2048
-#define TARGET_SIGSTKSZ       8192
-
-#include "../generic/signal.h"
-
-#endif /* TILEGX_TARGET_SIGNAL_H */
diff --git a/linux-user/tilegx/target_structs.h b/linux-user/tilegx/target_structs.h
deleted file mode 100644
index 1df000cc96..0000000000
--- a/linux-user/tilegx/target_structs.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * TILE-Gx specific structures for linux-user
- *
- * Copyright (c) 2015 Chen Gang
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef TILEGX_TARGET_STRUCTS_H
-#define TILEGX_TARGET_STRUCTS_H
-
-struct target_ipc_perm {
-    abi_int __key;                      /* Key.  */
-    abi_uint uid;                       /* Owner's user ID.  */
-    abi_uint gid;                       /* Owner's group ID.  */
-    abi_uint cuid;                      /* Creator's user ID.  */
-    abi_uint cgid;                      /* Creator's group ID.  */
-    abi_uint mode;                      /* Read/write permission.  */
-    abi_ushort __seq;                   /* Sequence number.  */
-};
-
-struct target_shmid_ds {
-    struct target_ipc_perm shm_perm;    /* operation permission struct */
-    abi_long shm_segsz;                 /* size of segment in bytes */
-    abi_ulong shm_atime;                /* time of last shmat() */
-    abi_ulong shm_dtime;                /* time of last shmdt() */
-    abi_ulong shm_ctime;                /* time of last change by shmctl() */
-    abi_int shm_cpid;                   /* pid of creator */
-    abi_int shm_lpid;                   /* pid of last shmop */
-    abi_ushort shm_nattch;              /* number of current attaches */
-    abi_ushort shm_unused;              /* compatibility */
-    abi_ulong __unused4;
-    abi_ulong __unused5;
-};
-
-#endif
diff --git a/linux-user/tilegx/target_syscall.h b/linux-user/tilegx/target_syscall.h
deleted file mode 100644
index 8e9db734b8..0000000000
--- a/linux-user/tilegx/target_syscall.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef TILEGX_TARGET_SYSCALL_H
-#define TILEGX_TARGET_SYSCALL_H
-
-#define UNAME_MACHINE "tilegx"
-#define UNAME_MINIMUM_RELEASE "3.19"
-
-#define MMAP_SHIFT TARGET_PAGE_BITS
-
-#define TILEGX_IS_ERRNO(ret) \
-                       ((ret) > 0xfffffffffffff000ULL) /* errno is 0 -- 4096 */
-
-typedef uint64_t tilegx_reg_t;
-
-struct target_pt_regs {
-
-    union {
-        /* Saved main processor registers; 56..63 are special. */
-        tilegx_reg_t regs[56];
-        struct {
-            tilegx_reg_t __regs[53];
-            tilegx_reg_t tp;    /* aliases regs[TREG_TP] */
-            tilegx_reg_t sp;    /* aliases regs[TREG_SP] */
-            tilegx_reg_t lr;    /* aliases regs[TREG_LR] */
-        };
-    };
-
-    /* Saved special registers. */
-    tilegx_reg_t pc;            /* stored in EX_CONTEXT_K_0 */
-    tilegx_reg_t ex1;           /* stored in EX_CONTEXT_K_1 (PL and ICS bit) */
-    tilegx_reg_t faultnum;      /* fault number (INT_SWINT_1 for syscall) */
-    tilegx_reg_t orig_r0;       /* r0 at syscall entry, else zero */
-    tilegx_reg_t flags;         /* flags (see below) */
-    tilegx_reg_t cmpexch;       /* value of CMPEXCH_VALUE SPR at interrupt */
-    tilegx_reg_t pad[2];
-};
-
-#define TARGET_MCL_CURRENT 1
-#define TARGET_MCL_FUTURE  2
-#define TARGET_MCL_ONFAULT 4
-
-/* For faultnum */
-#define TARGET_INT_SWINT_1            14
-
-#endif
diff --git a/linux-user/tilegx/termbits.h b/linux-user/tilegx/termbits.h
deleted file mode 100644
index b1d4f4fedb..0000000000
--- a/linux-user/tilegx/termbits.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../generic/termbits.h"