Import QEMU upstream snapshot d2e570c
Upstream: https://gitlab.com/qemu-project/qemu.git Upstream-Commit: d2e570cc0f97b936902a5b1b86b73c0f5998b475
This commit is contained in:
commit
cf256aa081
11315 files changed
+3598369
No files matched your search
@@ -0,0 +1,177 @@
|
||||
/*
|
||||
* 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.h"
|
||||
#include "user-internals.h"
|
||||
#include "user/cpu_loop.h"
|
||||
#include "signal-common.h"
|
||||
|
||||
void cpu_loop(CPUAlphaState *env)
|
||||
{
|
||||
CPUState *cs = env_cpu(env);
|
||||
int trapnr, si_code;
|
||||
abi_long sysret;
|
||||
|
||||
while (1) {
|
||||
bool arch_interrupt = true;
|
||||
|
||||
cpu_exec_start(cs);
|
||||
trapnr = cpu_exec(cs);
|
||||
cpu_exec_end(cs);
|
||||
qemu_process_cpu_events(cs);
|
||||
|
||||
switch (trapnr) {
|
||||
case EXCP_RESET:
|
||||
fprintf(stderr, "Reset requested. Exit\n");
|
||||
exit(EXIT_FAILURE);
|
||||
break;
|
||||
case EXCP_MCHK:
|
||||
fprintf(stderr, "Machine check exception. Exit\n");
|
||||
exit(EXIT_FAILURE);
|
||||
break;
|
||||
case EXCP_SMP_INTERRUPT:
|
||||
case EXCP_CLK_INTERRUPT:
|
||||
case EXCP_DEV_INTERRUPT:
|
||||
fprintf(stderr, "External interrupt. Exit\n");
|
||||
exit(EXIT_FAILURE);
|
||||
break;
|
||||
case EXCP_OPCDEC:
|
||||
do_sigill:
|
||||
force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPC, env->pc);
|
||||
break;
|
||||
case EXCP_ARITH:
|
||||
force_sig_fault(TARGET_SIGFPE, TARGET_FPE_FLTINV, env->pc);
|
||||
break;
|
||||
case EXCP_FEN:
|
||||
/* No-op. Linux simply re-enables the FPU. */
|
||||
break;
|
||||
case EXCP_CALL_PAL:
|
||||
switch (env->error_code) {
|
||||
case 0x80:
|
||||
/* BPT */
|
||||
goto do_sigtrap_brkpt;
|
||||
case 0x81:
|
||||
/* BUGCHK */
|
||||
goto do_sigtrap_unk;
|
||||
case 0x83:
|
||||
/* CALLSYS */
|
||||
trapnr = env->ir[IR_V0];
|
||||
sysret = do_syscall(env, trapnr,
|
||||
env->ir[IR_A0], env->ir[IR_A1],
|
||||
env->ir[IR_A2], env->ir[IR_A3],
|
||||
env->ir[IR_A4], env->ir[IR_A5],
|
||||
0, 0);
|
||||
if (sysret == -QEMU_ERESTARTSYS) {
|
||||
env->pc -= 4;
|
||||
break;
|
||||
}
|
||||
if (sysret == -QEMU_ESIGRETURN || sysret == -QEMU_ESETPC) {
|
||||
break;
|
||||
}
|
||||
/* Syscall writes 0 to V0 to bypass error check, similar
|
||||
to how this is handled internal to Linux kernel.
|
||||
(Ab)use trapnr temporarily as boolean indicating error. */
|
||||
trapnr = (env->ir[IR_V0] != 0 && sysret < 0);
|
||||
env->ir[IR_V0] = (trapnr ? -sysret : sysret);
|
||||
env->ir[IR_A3] = trapnr;
|
||||
break;
|
||||
case 0x86:
|
||||
/* IMB */
|
||||
break;
|
||||
case 0x9E:
|
||||
/* RDUNIQUE */
|
||||
/* Handled in the translator for usermode. */
|
||||
abort();
|
||||
case 0x9F:
|
||||
/* WRUNIQUE */
|
||||
/* Handled in the translator for usermode. */
|
||||
abort();
|
||||
case 0xAA:
|
||||
/* GENTRAP */
|
||||
switch (env->ir[IR_A0]) {
|
||||
case TARGET_GEN_INTOVF:
|
||||
si_code = TARGET_FPE_INTOVF;
|
||||
break;
|
||||
case TARGET_GEN_INTDIV:
|
||||
si_code = TARGET_FPE_INTDIV;
|
||||
break;
|
||||
case TARGET_GEN_FLTOVF:
|
||||
si_code = TARGET_FPE_FLTOVF;
|
||||
break;
|
||||
case TARGET_GEN_FLTUND:
|
||||
si_code = TARGET_FPE_FLTUND;
|
||||
break;
|
||||
case TARGET_GEN_FLTINV:
|
||||
si_code = TARGET_FPE_FLTINV;
|
||||
break;
|
||||
case TARGET_GEN_FLTINE:
|
||||
si_code = TARGET_FPE_FLTRES;
|
||||
break;
|
||||
case TARGET_GEN_ROPRAND:
|
||||
si_code = TARGET_FPE_FLTUNK;
|
||||
break;
|
||||
default:
|
||||
goto do_sigtrap_unk;
|
||||
}
|
||||
force_sig_fault(TARGET_SIGFPE, si_code, env->pc);
|
||||
break;
|
||||
default:
|
||||
goto do_sigill;
|
||||
}
|
||||
break;
|
||||
case EXCP_DEBUG:
|
||||
do_sigtrap_brkpt:
|
||||
force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->pc);
|
||||
break;
|
||||
do_sigtrap_unk:
|
||||
force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_UNK, env->pc);
|
||||
break;
|
||||
case EXCP_INTERRUPT:
|
||||
/* Just indicate that signals should be handled asap. */
|
||||
break;
|
||||
case EXCP_ATOMIC:
|
||||
cpu_exec_step_atomic(cs);
|
||||
arch_interrupt = false;
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "Unhandled trap: 0x%x\n", trapnr);
|
||||
cpu_dump_state(cs, stderr, 0);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
process_pending_signals (env);
|
||||
|
||||
/* Most of the traps imply a transition through PALcode, which
|
||||
implies an REI instruction has been executed. Which means
|
||||
that RX and LOCK_ADDR should be cleared. But there are a
|
||||
few exceptions for traps internal to QEMU. */
|
||||
if (arch_interrupt) {
|
||||
env->flags &= ~ENV_FLAG_RX_FLAG;
|
||||
env->lock_addr = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void init_main_thread(CPUState *cs, struct image_info *info)
|
||||
{
|
||||
CPUArchState *env = cpu_env(cs);
|
||||
|
||||
env->pc = info->entry;
|
||||
env->ir[IR_SP] = info->start_stack;
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "qemu.h"
|
||||
#include "loader.h"
|
||||
#include "target_elf.h"
|
||||
|
||||
|
||||
abi_ulong get_elf_hwcap(CPUState *cs)
|
||||
{
|
||||
/*
|
||||
* The Linux kernel computes ELF_HWCAP as ~amask(-1), which clears a bit
|
||||
* for each supported ISA extension. env->amask stores exactly those bits
|
||||
* set for the extensions supported by the emulated CPU model, matching
|
||||
* the kernel's convention: bit set in AT_HWCAP ↔ extension present.
|
||||
*/
|
||||
return cpu_env(cs)->amask;
|
||||
}
|
||||
|
||||
void elf_core_copy_regs(target_elf_gregset_t *r, const CPUAlphaState *env)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 31; i++) {
|
||||
r->regs[i] = tswap64(env->ir[i]);
|
||||
}
|
||||
r->pc = tswap64(env->pc);
|
||||
r->unique = tswap64(env->unique);
|
||||
}
|
||||
|
||||
const char *get_elf_cpu_model(uint32_t eflags)
|
||||
{
|
||||
return "ev67";
|
||||
}
|
||||
|
||||
void elf_core_copy_fpregs(target_elf_fpregset_t *r, const CPUAlphaState *env)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 31; i++) {
|
||||
r->fpr[i] = tswap64(env->fir[i]);
|
||||
}
|
||||
r->fpcr = tswap64(cpu_alpha_load_fpcr((CPUAlphaState *)env));
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
syscall_nr_generators += {
|
||||
'alpha': generator(sh,
|
||||
arguments: [ meson.current_source_dir() / 'syscallhdr.sh', '@INPUT@', '@OUTPUT@', '@EXTRA_ARGS@' ],
|
||||
output: '@BASENAME@_nr.h')
|
||||
}
|
||||
@@ -0,0 +1,277 @@
|
||||
/*
|
||||
* 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 "user-internals.h"
|
||||
#include "signal-common.h"
|
||||
#include "linux-user/trace.h"
|
||||
|
||||
struct target_sigcontext {
|
||||
abi_long sc_onstack;
|
||||
abi_long sc_mask;
|
||||
abi_long sc_pc;
|
||||
abi_long sc_ps;
|
||||
abi_long sc_regs[32];
|
||||
abi_long sc_ownedfp;
|
||||
abi_long sc_fpregs[32];
|
||||
abi_ulong sc_fpcr;
|
||||
abi_ulong sc_fp_control;
|
||||
abi_ulong sc_reserved1;
|
||||
abi_ulong sc_reserved2;
|
||||
abi_ulong sc_ssize;
|
||||
abi_ulong sc_sbase;
|
||||
abi_ulong sc_traparg_a0;
|
||||
abi_ulong sc_traparg_a1;
|
||||
abi_ulong sc_traparg_a2;
|
||||
abi_ulong sc_fp_trap_pc;
|
||||
abi_ulong sc_fp_trigger_sum;
|
||||
abi_ulong sc_fp_trigger_inst;
|
||||
};
|
||||
|
||||
struct target_ucontext {
|
||||
abi_ulong tuc_flags;
|
||||
abi_ulong tuc_link;
|
||||
abi_ulong tuc_osf_sigmask;
|
||||
target_stack_t tuc_stack;
|
||||
struct target_sigcontext tuc_mcontext;
|
||||
target_sigset_t tuc_sigmask;
|
||||
};
|
||||
|
||||
struct target_sigframe {
|
||||
struct target_sigcontext sc;
|
||||
};
|
||||
|
||||
struct target_rt_sigframe {
|
||||
target_siginfo_t info;
|
||||
struct target_ucontext uc;
|
||||
};
|
||||
|
||||
#define INSN_MOV_R30_R16 0x47fe0410
|
||||
#define INSN_LDI_R0 0x201f0000
|
||||
#define INSN_CALLSYS 0x00000083
|
||||
|
||||
static void setup_sigcontext(struct target_sigcontext *sc, CPUAlphaState *env,
|
||||
abi_ulong frame_addr, target_sigset_t *set)
|
||||
{
|
||||
int i;
|
||||
|
||||
__put_user(on_sig_stack(frame_addr), &sc->sc_onstack);
|
||||
__put_user(set->sig[0], &sc->sc_mask);
|
||||
__put_user(env->pc, &sc->sc_pc);
|
||||
__put_user(8, &sc->sc_ps);
|
||||
|
||||
for (i = 0; i < 31; ++i) {
|
||||
__put_user(env->ir[i], &sc->sc_regs[i]);
|
||||
}
|
||||
__put_user(0, &sc->sc_regs[31]);
|
||||
|
||||
for (i = 0; i < 31; ++i) {
|
||||
__put_user(env->fir[i], &sc->sc_fpregs[i]);
|
||||
}
|
||||
__put_user(0, &sc->sc_fpregs[31]);
|
||||
__put_user(cpu_alpha_load_fpcr(env), &sc->sc_fpcr);
|
||||
|
||||
__put_user(0, &sc->sc_traparg_a0); /* FIXME */
|
||||
__put_user(0, &sc->sc_traparg_a1); /* FIXME */
|
||||
__put_user(0, &sc->sc_traparg_a2); /* FIXME */
|
||||
}
|
||||
|
||||
static void restore_sigcontext(CPUAlphaState *env,
|
||||
struct target_sigcontext *sc)
|
||||
{
|
||||
uint64_t fpcr;
|
||||
int i;
|
||||
|
||||
__get_user(env->pc, &sc->sc_pc);
|
||||
|
||||
for (i = 0; i < 31; ++i) {
|
||||
__get_user(env->ir[i], &sc->sc_regs[i]);
|
||||
}
|
||||
for (i = 0; i < 31; ++i) {
|
||||
__get_user(env->fir[i], &sc->sc_fpregs[i]);
|
||||
}
|
||||
|
||||
__get_user(fpcr, &sc->sc_fpcr);
|
||||
cpu_alpha_store_fpcr(env, fpcr);
|
||||
}
|
||||
|
||||
static inline abi_ulong get_sigframe(struct target_sigaction *sa,
|
||||
CPUAlphaState *env,
|
||||
unsigned long framesize)
|
||||
{
|
||||
abi_ulong sp;
|
||||
|
||||
sp = target_sigsp(get_sp_from_cpustate(env), sa);
|
||||
|
||||
return (sp - framesize) & -32;
|
||||
}
|
||||
|
||||
void setup_frame(int sig, struct target_sigaction *ka,
|
||||
target_sigset_t *set, CPUAlphaState *env)
|
||||
{
|
||||
abi_ulong frame_addr, r26;
|
||||
struct target_sigframe *frame;
|
||||
int err = 0;
|
||||
|
||||
frame_addr = get_sigframe(ka, env, sizeof(*frame));
|
||||
trace_user_setup_frame(env, frame_addr);
|
||||
if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) {
|
||||
goto give_sigsegv;
|
||||
}
|
||||
|
||||
setup_sigcontext(&frame->sc, env, frame_addr, set);
|
||||
|
||||
if (ka->ka_restorer) {
|
||||
r26 = ka->ka_restorer;
|
||||
} else {
|
||||
r26 = default_sigreturn;
|
||||
}
|
||||
|
||||
unlock_user_struct(frame, frame_addr, 1);
|
||||
|
||||
if (err) {
|
||||
give_sigsegv:
|
||||
force_sigsegv(sig);
|
||||
return;
|
||||
}
|
||||
|
||||
env->ir[IR_RA] = r26;
|
||||
env->ir[IR_PV] = env->pc = ka->_sa_handler;
|
||||
env->ir[IR_A0] = sig;
|
||||
env->ir[IR_A1] = 0;
|
||||
env->ir[IR_A2] = frame_addr + offsetof(struct target_sigframe, sc);
|
||||
env->ir[IR_SP] = frame_addr;
|
||||
}
|
||||
|
||||
void setup_rt_frame(int sig, struct target_sigaction *ka,
|
||||
target_siginfo_t *info,
|
||||
target_sigset_t *set, CPUAlphaState *env)
|
||||
{
|
||||
abi_ulong frame_addr, r26;
|
||||
struct target_rt_sigframe *frame;
|
||||
int i, err = 0;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
frame->info = *info;
|
||||
|
||||
__put_user(0, &frame->uc.tuc_flags);
|
||||
__put_user(0, &frame->uc.tuc_link);
|
||||
__put_user(set->sig[0], &frame->uc.tuc_osf_sigmask);
|
||||
|
||||
target_save_altstack(&frame->uc.tuc_stack, env);
|
||||
|
||||
setup_sigcontext(&frame->uc.tuc_mcontext, env, frame_addr, set);
|
||||
for (i = 0; i < TARGET_NSIG_WORDS; ++i) {
|
||||
__put_user(set->sig[i], &frame->uc.tuc_sigmask.sig[i]);
|
||||
}
|
||||
|
||||
if (ka->ka_restorer) {
|
||||
r26 = ka->ka_restorer;
|
||||
} else {
|
||||
r26 = default_rt_sigreturn;
|
||||
}
|
||||
|
||||
if (err) {
|
||||
give_sigsegv:
|
||||
force_sigsegv(sig);
|
||||
return;
|
||||
}
|
||||
|
||||
env->ir[IR_RA] = r26;
|
||||
env->ir[IR_PV] = env->pc = ka->_sa_handler;
|
||||
env->ir[IR_A0] = sig;
|
||||
env->ir[IR_A1] = frame_addr + offsetof(struct target_rt_sigframe, info);
|
||||
env->ir[IR_A2] = frame_addr + offsetof(struct target_rt_sigframe, uc);
|
||||
env->ir[IR_SP] = frame_addr;
|
||||
}
|
||||
|
||||
long do_sigreturn(CPUAlphaState *env)
|
||||
{
|
||||
struct target_sigcontext *sc;
|
||||
abi_ulong sc_addr = env->ir[IR_A0];
|
||||
target_sigset_t target_set;
|
||||
sigset_t set;
|
||||
|
||||
if (!lock_user_struct(VERIFY_READ, sc, sc_addr, 1)) {
|
||||
goto badframe;
|
||||
}
|
||||
|
||||
target_sigemptyset(&target_set);
|
||||
__get_user(target_set.sig[0], &sc->sc_mask);
|
||||
|
||||
target_to_host_sigset_internal(&set, &target_set);
|
||||
set_sigmask(&set);
|
||||
|
||||
restore_sigcontext(env, sc);
|
||||
unlock_user_struct(sc, sc_addr, 0);
|
||||
return -QEMU_ESIGRETURN;
|
||||
|
||||
badframe:
|
||||
force_sig(TARGET_SIGSEGV);
|
||||
return -QEMU_ESIGRETURN;
|
||||
}
|
||||
|
||||
long do_rt_sigreturn(CPUAlphaState *env)
|
||||
{
|
||||
abi_ulong frame_addr = env->ir[IR_A0];
|
||||
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);
|
||||
target_restore_altstack(&frame->uc.tuc_stack, env);
|
||||
|
||||
unlock_user_struct(frame, frame_addr, 0);
|
||||
return -QEMU_ESIGRETURN;
|
||||
|
||||
|
||||
badframe:
|
||||
unlock_user_struct(frame, frame_addr, 0);
|
||||
force_sig(TARGET_SIGSEGV);
|
||||
return -QEMU_ESIGRETURN;
|
||||
}
|
||||
|
||||
void setup_sigtramp(abi_ulong sigtramp_page)
|
||||
{
|
||||
uint32_t *tramp = lock_user(VERIFY_WRITE, sigtramp_page, 6 * 4, 0);
|
||||
assert(tramp != NULL);
|
||||
|
||||
default_sigreturn = sigtramp_page;
|
||||
__put_user(INSN_MOV_R30_R16, &tramp[0]);
|
||||
__put_user(INSN_LDI_R0 + TARGET_NR_sigreturn, &tramp[1]);
|
||||
__put_user(INSN_CALLSYS, &tramp[2]);
|
||||
|
||||
default_rt_sigreturn = sigtramp_page + 3 * 4;
|
||||
__put_user(INSN_MOV_R30_R16, &tramp[3]);
|
||||
__put_user(INSN_LDI_R0 + TARGET_NR_rt_sigreturn, &tramp[4]);
|
||||
__put_user(INSN_CALLSYS, &tramp[5]);
|
||||
|
||||
unlock_user(tramp, sigtramp_page, 6 * 4);
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
/*
|
||||
* 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 ALPHA_SOCKBITS_H
|
||||
#define ALPHA_SOCKBITS_H
|
||||
|
||||
/* For setsockopt(2) */
|
||||
#define TARGET_SOL_SOCKET 0xffff
|
||||
|
||||
#define TARGET_SO_DEBUG 0x0001
|
||||
#define TARGET_SO_REUSEADDR 0x0004
|
||||
#define TARGET_SO_KEEPALIVE 0x0008
|
||||
#define TARGET_SO_DONTROUTE 0x0010
|
||||
#define TARGET_SO_BROADCAST 0x0020
|
||||
#define TARGET_SO_LINGER 0x0080
|
||||
#define TARGET_SO_OOBINLINE 0x0100
|
||||
#define TARGET_SO_REUSEPORT 0x0200
|
||||
|
||||
#define TARGET_SO_TYPE 0x1008
|
||||
#define TARGET_SO_ERROR 0x1007
|
||||
#define TARGET_SO_SNDBUF 0x1001
|
||||
#define TARGET_SO_RCVBUF 0x1002
|
||||
#define TARGET_SO_SNDBUFFORCE 0x100a
|
||||
#define TARGET_SO_RCVBUFFORCE 0x100b
|
||||
#define TARGET_SO_RCVLOWAT 0x1010
|
||||
#define TARGET_SO_SNDLOWAT 0x1011
|
||||
#define TARGET_SO_RCVTIMEO 0x1012
|
||||
#define TARGET_SO_SNDTIMEO 0x1013
|
||||
#define TARGET_SO_ACCEPTCONN 0x1014
|
||||
#define TARGET_SO_PROTOCOL 0x1028
|
||||
#define TARGET_SO_DOMAIN 0x1029
|
||||
|
||||
/* linux-specific, might as well be the same as on i386 */
|
||||
#define TARGET_SO_NO_CHECK 11
|
||||
#define TARGET_SO_PRIORITY 12
|
||||
#define TARGET_SO_BSDCOMPAT 14
|
||||
|
||||
#define TARGET_SO_PASSCRED 17
|
||||
#define TARGET_SO_PEERCRED 18
|
||||
#define TARGET_SO_BINDTODEVICE 25
|
||||
|
||||
/* Socket filtering */
|
||||
#define TARGET_SO_ATTACH_FILTER 26
|
||||
#define TARGET_SO_DETACH_FILTER 27
|
||||
|
||||
#define TARGET_SO_PEERNAME 28
|
||||
#define TARGET_SO_TIMESTAMP 29
|
||||
#define TARGET_SCM_TIMESTAMP TARGET_SO_TIMESTAMP
|
||||
|
||||
#define TARGET_SO_PEERSEC 30
|
||||
#define TARGET_SO_PASSSEC 34
|
||||
#define TARGET_SO_TIMESTAMPNS 35
|
||||
#define TARGET_SCM_TIMESTAMPNS TARGET_SO_TIMESTAMPNS
|
||||
|
||||
/* Security levels - as per NRL IPv6 - don't actually do anything */
|
||||
#define TARGET_SO_SECURITY_AUTHENTICATION 19
|
||||
#define TARGET_SO_SECURITY_ENCRYPTION_TRANSPORT 20
|
||||
#define TARGET_SO_SECURITY_ENCRYPTION_NETWORK 21
|
||||
|
||||
#define TARGET_SO_MARK 36
|
||||
|
||||
#define TARGET_SO_TIMESTAMPING 37
|
||||
#define TARGET_SCM_TIMESTAMPING TARGET_SO_TIMESTAMPING
|
||||
|
||||
#define TARGET_SO_RXQ_OVFL 40
|
||||
|
||||
#define TARGET_SO_WIFI_STATUS 41
|
||||
#define TARGET_SCM_WIFI_STATUS TARGET_SO_WIFI_STATUS
|
||||
#define TARGET_SO_PEEK_OFF 42
|
||||
|
||||
/* Instruct lower device to use last 4-bytes of skb data as FCS */
|
||||
#define TARGET_SO_NOFCS 43
|
||||
|
||||
#define TARGET_SO_TIMESTAMP_NEW 63
|
||||
#define TARGET_SO_TIMESTAMPNS_NEW 64
|
||||
#define TARGET_SO_TIMESTAMPING_NEW 65
|
||||
|
||||
#define TARGET_SO_RCVTIMEO_NEW 66
|
||||
#define TARGET_SO_SNDTIMEO_NEW 67
|
||||
|
||||
/* TARGET_O_NONBLOCK clashes with the bits used for socket types. Therefore we
|
||||
* have to define SOCK_NONBLOCK to a different value here.
|
||||
*/
|
||||
#define TARGET_SOCK_NONBLOCK 0x40000000
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,504 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note
|
||||
#
|
||||
# system call numbers and entry vectors for alpha
|
||||
#
|
||||
# The format is:
|
||||
# <number> <abi> <name> <entry point>
|
||||
#
|
||||
# The <abi> is always "common" for this file
|
||||
#
|
||||
0 common osf_syscall alpha_syscall_zero
|
||||
1 common exit sys_exit
|
||||
2 common fork alpha_fork
|
||||
3 common read sys_read
|
||||
4 common write sys_write
|
||||
5 common osf_old_open sys_ni_syscall
|
||||
6 common close sys_close
|
||||
7 common osf_wait4 sys_osf_wait4
|
||||
8 common osf_old_creat sys_ni_syscall
|
||||
9 common link sys_link
|
||||
10 common unlink sys_unlink
|
||||
11 common osf_execve sys_ni_syscall
|
||||
12 common chdir sys_chdir
|
||||
13 common fchdir sys_fchdir
|
||||
14 common mknod sys_mknod
|
||||
15 common chmod sys_chmod
|
||||
16 common chown sys_chown
|
||||
17 common brk sys_osf_brk
|
||||
18 common osf_getfsstat sys_ni_syscall
|
||||
19 common lseek sys_lseek
|
||||
20 common getxpid sys_getxpid
|
||||
21 common osf_mount sys_osf_mount
|
||||
22 common umount2 sys_umount
|
||||
23 common setuid sys_setuid
|
||||
24 common getxuid sys_getxuid
|
||||
25 common exec_with_loader sys_ni_syscall
|
||||
26 common ptrace sys_ptrace
|
||||
27 common osf_nrecvmsg sys_ni_syscall
|
||||
28 common osf_nsendmsg sys_ni_syscall
|
||||
29 common osf_nrecvfrom sys_ni_syscall
|
||||
30 common osf_naccept sys_ni_syscall
|
||||
31 common osf_ngetpeername sys_ni_syscall
|
||||
32 common osf_ngetsockname sys_ni_syscall
|
||||
33 common access sys_access
|
||||
34 common osf_chflags sys_ni_syscall
|
||||
35 common osf_fchflags sys_ni_syscall
|
||||
36 common sync sys_sync
|
||||
37 common kill sys_kill
|
||||
38 common osf_old_stat sys_ni_syscall
|
||||
39 common setpgid sys_setpgid
|
||||
40 common osf_old_lstat sys_ni_syscall
|
||||
41 common dup sys_dup
|
||||
42 common pipe sys_alpha_pipe
|
||||
43 common osf_set_program_attributes sys_osf_set_program_attributes
|
||||
44 common osf_profil sys_ni_syscall
|
||||
45 common open sys_open
|
||||
46 common osf_old_sigaction sys_ni_syscall
|
||||
47 common getxgid sys_getxgid
|
||||
48 common osf_sigprocmask sys_osf_sigprocmask
|
||||
49 common osf_getlogin sys_ni_syscall
|
||||
50 common osf_setlogin sys_ni_syscall
|
||||
51 common acct sys_acct
|
||||
52 common sigpending sys_sigpending
|
||||
54 common ioctl sys_ioctl
|
||||
55 common osf_reboot sys_ni_syscall
|
||||
56 common osf_revoke sys_ni_syscall
|
||||
57 common symlink sys_symlink
|
||||
58 common readlink sys_readlink
|
||||
59 common execve sys_execve
|
||||
60 common umask sys_umask
|
||||
61 common chroot sys_chroot
|
||||
62 common osf_old_fstat sys_ni_syscall
|
||||
63 common getpgrp sys_getpgrp
|
||||
64 common getpagesize sys_getpagesize
|
||||
65 common osf_mremap sys_ni_syscall
|
||||
66 common vfork alpha_vfork
|
||||
67 common stat sys_newstat
|
||||
68 common lstat sys_newlstat
|
||||
69 common osf_sbrk sys_ni_syscall
|
||||
70 common osf_sstk sys_ni_syscall
|
||||
71 common mmap sys_osf_mmap
|
||||
72 common osf_old_vadvise sys_ni_syscall
|
||||
73 common munmap sys_munmap
|
||||
74 common mprotect sys_mprotect
|
||||
75 common madvise sys_madvise
|
||||
76 common vhangup sys_vhangup
|
||||
77 common osf_kmodcall sys_ni_syscall
|
||||
78 common osf_mincore sys_ni_syscall
|
||||
79 common getgroups sys_getgroups
|
||||
80 common setgroups sys_setgroups
|
||||
81 common osf_old_getpgrp sys_ni_syscall
|
||||
82 common setpgrp sys_setpgid
|
||||
83 common osf_setitimer compat_sys_setitimer
|
||||
84 common osf_old_wait sys_ni_syscall
|
||||
85 common osf_table sys_ni_syscall
|
||||
86 common osf_getitimer compat_sys_getitimer
|
||||
87 common gethostname sys_gethostname
|
||||
88 common sethostname sys_sethostname
|
||||
89 common getdtablesize sys_getdtablesize
|
||||
90 common dup2 sys_dup2
|
||||
91 common fstat sys_newfstat
|
||||
92 common fcntl sys_fcntl
|
||||
93 common osf_select sys_osf_select
|
||||
94 common poll sys_poll
|
||||
95 common fsync sys_fsync
|
||||
96 common setpriority sys_setpriority
|
||||
97 common socket sys_socket
|
||||
98 common connect sys_connect
|
||||
99 common accept sys_accept
|
||||
100 common getpriority sys_osf_getpriority
|
||||
101 common send sys_send
|
||||
102 common recv sys_recv
|
||||
103 common sigreturn sys_sigreturn
|
||||
104 common bind sys_bind
|
||||
105 common setsockopt sys_setsockopt
|
||||
106 common listen sys_listen
|
||||
107 common osf_plock sys_ni_syscall
|
||||
108 common osf_old_sigvec sys_ni_syscall
|
||||
109 common osf_old_sigblock sys_ni_syscall
|
||||
110 common osf_old_sigsetmask sys_ni_syscall
|
||||
111 common sigsuspend sys_sigsuspend
|
||||
112 common osf_sigstack sys_osf_sigstack
|
||||
113 common recvmsg sys_recvmsg
|
||||
114 common sendmsg sys_sendmsg
|
||||
115 common osf_old_vtrace sys_ni_syscall
|
||||
116 common osf_gettimeofday sys_osf_gettimeofday
|
||||
117 common osf_getrusage sys_osf_getrusage
|
||||
118 common getsockopt sys_getsockopt
|
||||
120 common readv sys_readv
|
||||
121 common writev sys_writev
|
||||
122 common osf_settimeofday sys_osf_settimeofday
|
||||
123 common fchown sys_fchown
|
||||
124 common fchmod sys_fchmod
|
||||
125 common recvfrom sys_recvfrom
|
||||
126 common setreuid sys_setreuid
|
||||
127 common setregid sys_setregid
|
||||
128 common rename sys_rename
|
||||
129 common truncate sys_truncate
|
||||
130 common ftruncate sys_ftruncate
|
||||
131 common flock sys_flock
|
||||
132 common setgid sys_setgid
|
||||
133 common sendto sys_sendto
|
||||
134 common shutdown sys_shutdown
|
||||
135 common socketpair sys_socketpair
|
||||
136 common mkdir sys_mkdir
|
||||
137 common rmdir sys_rmdir
|
||||
138 common osf_utimes sys_osf_utimes
|
||||
139 common osf_old_sigreturn sys_ni_syscall
|
||||
140 common osf_adjtime sys_ni_syscall
|
||||
141 common getpeername sys_getpeername
|
||||
142 common osf_gethostid sys_ni_syscall
|
||||
143 common osf_sethostid sys_ni_syscall
|
||||
144 common getrlimit sys_getrlimit
|
||||
145 common setrlimit sys_setrlimit
|
||||
146 common osf_old_killpg sys_ni_syscall
|
||||
147 common setsid sys_setsid
|
||||
148 common quotactl sys_quotactl
|
||||
149 common osf_oldquota sys_ni_syscall
|
||||
150 common getsockname sys_getsockname
|
||||
153 common osf_pid_block sys_ni_syscall
|
||||
154 common osf_pid_unblock sys_ni_syscall
|
||||
156 common sigaction sys_osf_sigaction
|
||||
157 common osf_sigwaitprim sys_ni_syscall
|
||||
158 common osf_nfssvc sys_ni_syscall
|
||||
159 common osf_getdirentries sys_osf_getdirentries
|
||||
160 common osf_statfs sys_osf_statfs
|
||||
161 common osf_fstatfs sys_osf_fstatfs
|
||||
163 common osf_asynch_daemon sys_ni_syscall
|
||||
164 common osf_getfh sys_ni_syscall
|
||||
165 common osf_getdomainname sys_osf_getdomainname
|
||||
166 common setdomainname sys_setdomainname
|
||||
169 common osf_exportfs sys_ni_syscall
|
||||
181 common osf_alt_plock sys_ni_syscall
|
||||
184 common osf_getmnt sys_ni_syscall
|
||||
187 common osf_alt_sigpending sys_ni_syscall
|
||||
188 common osf_alt_setsid sys_ni_syscall
|
||||
199 common osf_swapon sys_swapon
|
||||
200 common msgctl sys_old_msgctl
|
||||
201 common msgget sys_msgget
|
||||
202 common msgrcv sys_msgrcv
|
||||
203 common msgsnd sys_msgsnd
|
||||
204 common semctl sys_old_semctl
|
||||
205 common semget sys_semget
|
||||
206 common semop sys_semop
|
||||
207 common osf_utsname sys_osf_utsname
|
||||
208 common lchown sys_lchown
|
||||
209 common shmat sys_shmat
|
||||
210 common shmctl sys_old_shmctl
|
||||
211 common shmdt sys_shmdt
|
||||
212 common shmget sys_shmget
|
||||
213 common osf_mvalid sys_ni_syscall
|
||||
214 common osf_getaddressconf sys_ni_syscall
|
||||
215 common osf_msleep sys_ni_syscall
|
||||
216 common osf_mwakeup sys_ni_syscall
|
||||
217 common msync sys_msync
|
||||
218 common osf_signal sys_ni_syscall
|
||||
219 common osf_utc_gettime sys_ni_syscall
|
||||
220 common osf_utc_adjtime sys_ni_syscall
|
||||
222 common osf_security sys_ni_syscall
|
||||
223 common osf_kloadcall sys_ni_syscall
|
||||
224 common osf_stat sys_osf_stat
|
||||
225 common osf_lstat sys_osf_lstat
|
||||
226 common osf_fstat sys_osf_fstat
|
||||
227 common osf_statfs64 sys_osf_statfs64
|
||||
228 common osf_fstatfs64 sys_osf_fstatfs64
|
||||
233 common getpgid sys_getpgid
|
||||
234 common getsid sys_getsid
|
||||
235 common sigaltstack sys_sigaltstack
|
||||
236 common osf_waitid sys_ni_syscall
|
||||
237 common osf_priocntlset sys_ni_syscall
|
||||
238 common osf_sigsendset sys_ni_syscall
|
||||
239 common osf_set_speculative sys_ni_syscall
|
||||
240 common osf_msfs_syscall sys_ni_syscall
|
||||
241 common osf_sysinfo sys_osf_sysinfo
|
||||
242 common osf_uadmin sys_ni_syscall
|
||||
243 common osf_fuser sys_ni_syscall
|
||||
244 common osf_proplist_syscall sys_osf_proplist_syscall
|
||||
245 common osf_ntp_adjtime sys_ni_syscall
|
||||
246 common osf_ntp_gettime sys_ni_syscall
|
||||
247 common osf_pathconf sys_ni_syscall
|
||||
248 common osf_fpathconf sys_ni_syscall
|
||||
250 common osf_uswitch sys_ni_syscall
|
||||
251 common osf_usleep_thread sys_osf_usleep_thread
|
||||
252 common osf_audcntl sys_ni_syscall
|
||||
253 common osf_audgen sys_ni_syscall
|
||||
254 common sysfs sys_sysfs
|
||||
255 common osf_subsys_info sys_ni_syscall
|
||||
256 common osf_getsysinfo sys_osf_getsysinfo
|
||||
257 common osf_setsysinfo sys_osf_setsysinfo
|
||||
258 common osf_afs_syscall sys_ni_syscall
|
||||
259 common osf_swapctl sys_ni_syscall
|
||||
260 common osf_memcntl sys_ni_syscall
|
||||
261 common osf_fdatasync sys_ni_syscall
|
||||
300 common bdflush sys_ni_syscall
|
||||
301 common sethae sys_sethae
|
||||
302 common mount sys_mount
|
||||
303 common old_adjtimex sys_old_adjtimex
|
||||
304 common swapoff sys_swapoff
|
||||
305 common getdents sys_getdents
|
||||
306 common create_module sys_ni_syscall
|
||||
307 common init_module sys_init_module
|
||||
308 common delete_module sys_delete_module
|
||||
309 common get_kernel_syms sys_ni_syscall
|
||||
310 common syslog sys_syslog
|
||||
311 common reboot sys_reboot
|
||||
312 common clone alpha_clone
|
||||
313 common uselib sys_uselib
|
||||
314 common mlock sys_mlock
|
||||
315 common munlock sys_munlock
|
||||
316 common mlockall sys_mlockall
|
||||
317 common munlockall sys_munlockall
|
||||
318 common sysinfo sys_sysinfo
|
||||
319 common _sysctl sys_ni_syscall
|
||||
# 320 was sys_idle
|
||||
321 common oldumount sys_oldumount
|
||||
322 common swapon sys_swapon
|
||||
323 common times sys_times
|
||||
324 common personality sys_personality
|
||||
325 common setfsuid sys_setfsuid
|
||||
326 common setfsgid sys_setfsgid
|
||||
327 common ustat sys_ustat
|
||||
328 common statfs sys_statfs
|
||||
329 common fstatfs sys_fstatfs
|
||||
330 common sched_setparam sys_sched_setparam
|
||||
331 common sched_getparam sys_sched_getparam
|
||||
332 common sched_setscheduler sys_sched_setscheduler
|
||||
333 common sched_getscheduler sys_sched_getscheduler
|
||||
334 common sched_yield sys_sched_yield
|
||||
335 common sched_get_priority_max sys_sched_get_priority_max
|
||||
336 common sched_get_priority_min sys_sched_get_priority_min
|
||||
337 common sched_rr_get_interval sys_sched_rr_get_interval
|
||||
338 common afs_syscall sys_ni_syscall
|
||||
339 common uname sys_newuname
|
||||
340 common nanosleep sys_nanosleep
|
||||
341 common mremap sys_mremap
|
||||
342 common nfsservctl sys_ni_syscall
|
||||
343 common setresuid sys_setresuid
|
||||
344 common getresuid sys_getresuid
|
||||
345 common pciconfig_read sys_pciconfig_read
|
||||
346 common pciconfig_write sys_pciconfig_write
|
||||
347 common query_module sys_ni_syscall
|
||||
348 common prctl sys_prctl
|
||||
349 common pread64 sys_pread64
|
||||
350 common pwrite64 sys_pwrite64
|
||||
351 common rt_sigreturn sys_rt_sigreturn
|
||||
352 common rt_sigaction sys_rt_sigaction
|
||||
353 common rt_sigprocmask sys_rt_sigprocmask
|
||||
354 common rt_sigpending sys_rt_sigpending
|
||||
355 common rt_sigtimedwait sys_rt_sigtimedwait
|
||||
356 common rt_sigqueueinfo sys_rt_sigqueueinfo
|
||||
357 common rt_sigsuspend sys_rt_sigsuspend
|
||||
358 common select sys_select
|
||||
359 common gettimeofday sys_gettimeofday
|
||||
360 common settimeofday sys_settimeofday
|
||||
361 common getitimer sys_getitimer
|
||||
362 common setitimer sys_setitimer
|
||||
363 common utimes sys_utimes
|
||||
364 common getrusage sys_getrusage
|
||||
365 common wait4 sys_wait4
|
||||
366 common adjtimex sys_adjtimex
|
||||
367 common getcwd sys_getcwd
|
||||
368 common capget sys_capget
|
||||
369 common capset sys_capset
|
||||
370 common sendfile sys_sendfile64
|
||||
371 common setresgid sys_setresgid
|
||||
372 common getresgid sys_getresgid
|
||||
373 common dipc sys_ni_syscall
|
||||
374 common pivot_root sys_pivot_root
|
||||
375 common mincore sys_mincore
|
||||
376 common pciconfig_iobase sys_pciconfig_iobase
|
||||
377 common getdents64 sys_getdents64
|
||||
378 common gettid sys_gettid
|
||||
379 common readahead sys_readahead
|
||||
# 380 is unused
|
||||
381 common tkill sys_tkill
|
||||
382 common setxattr sys_setxattr
|
||||
383 common lsetxattr sys_lsetxattr
|
||||
384 common fsetxattr sys_fsetxattr
|
||||
385 common getxattr sys_getxattr
|
||||
386 common lgetxattr sys_lgetxattr
|
||||
387 common fgetxattr sys_fgetxattr
|
||||
388 common listxattr sys_listxattr
|
||||
389 common llistxattr sys_llistxattr
|
||||
390 common flistxattr sys_flistxattr
|
||||
391 common removexattr sys_removexattr
|
||||
392 common lremovexattr sys_lremovexattr
|
||||
393 common fremovexattr sys_fremovexattr
|
||||
394 common futex sys_futex
|
||||
395 common sched_setaffinity sys_sched_setaffinity
|
||||
396 common sched_getaffinity sys_sched_getaffinity
|
||||
397 common tuxcall sys_ni_syscall
|
||||
398 common io_setup sys_io_setup
|
||||
399 common io_destroy sys_io_destroy
|
||||
400 common io_getevents sys_io_getevents
|
||||
401 common io_submit sys_io_submit
|
||||
402 common io_cancel sys_io_cancel
|
||||
405 common exit_group sys_exit_group
|
||||
406 common lookup_dcookie sys_ni_syscall
|
||||
407 common epoll_create sys_epoll_create
|
||||
408 common epoll_ctl sys_epoll_ctl
|
||||
409 common epoll_wait sys_epoll_wait
|
||||
410 common remap_file_pages sys_remap_file_pages
|
||||
411 common set_tid_address sys_set_tid_address
|
||||
412 common restart_syscall sys_restart_syscall
|
||||
413 common fadvise64 sys_fadvise64
|
||||
414 common timer_create sys_timer_create
|
||||
415 common timer_settime sys_timer_settime
|
||||
416 common timer_gettime sys_timer_gettime
|
||||
417 common timer_getoverrun sys_timer_getoverrun
|
||||
418 common timer_delete sys_timer_delete
|
||||
419 common clock_settime sys_clock_settime
|
||||
420 common clock_gettime sys_clock_gettime
|
||||
421 common clock_getres sys_clock_getres
|
||||
422 common clock_nanosleep sys_clock_nanosleep
|
||||
423 common semtimedop sys_semtimedop
|
||||
424 common tgkill sys_tgkill
|
||||
425 common stat64 sys_stat64
|
||||
426 common lstat64 sys_lstat64
|
||||
427 common fstat64 sys_fstat64
|
||||
428 common vserver sys_ni_syscall
|
||||
429 common mbind sys_ni_syscall
|
||||
430 common get_mempolicy sys_ni_syscall
|
||||
431 common set_mempolicy sys_ni_syscall
|
||||
432 common mq_open sys_mq_open
|
||||
433 common mq_unlink sys_mq_unlink
|
||||
434 common mq_timedsend sys_mq_timedsend
|
||||
435 common mq_timedreceive sys_mq_timedreceive
|
||||
436 common mq_notify sys_mq_notify
|
||||
437 common mq_getsetattr sys_mq_getsetattr
|
||||
438 common waitid sys_waitid
|
||||
439 common add_key sys_add_key
|
||||
440 common request_key sys_request_key
|
||||
441 common keyctl sys_keyctl
|
||||
442 common ioprio_set sys_ioprio_set
|
||||
443 common ioprio_get sys_ioprio_get
|
||||
444 common inotify_init sys_inotify_init
|
||||
445 common inotify_add_watch sys_inotify_add_watch
|
||||
446 common inotify_rm_watch sys_inotify_rm_watch
|
||||
447 common fdatasync sys_fdatasync
|
||||
448 common kexec_load sys_kexec_load
|
||||
449 common migrate_pages sys_migrate_pages
|
||||
450 common openat sys_openat
|
||||
451 common mkdirat sys_mkdirat
|
||||
452 common mknodat sys_mknodat
|
||||
453 common fchownat sys_fchownat
|
||||
454 common futimesat sys_futimesat
|
||||
455 common fstatat64 sys_fstatat64
|
||||
456 common unlinkat sys_unlinkat
|
||||
457 common renameat sys_renameat
|
||||
458 common linkat sys_linkat
|
||||
459 common symlinkat sys_symlinkat
|
||||
460 common readlinkat sys_readlinkat
|
||||
461 common fchmodat sys_fchmodat
|
||||
462 common faccessat sys_faccessat
|
||||
463 common pselect6 sys_pselect6
|
||||
464 common ppoll sys_ppoll
|
||||
465 common unshare sys_unshare
|
||||
466 common set_robust_list sys_set_robust_list
|
||||
467 common get_robust_list sys_get_robust_list
|
||||
468 common splice sys_splice
|
||||
469 common sync_file_range sys_sync_file_range
|
||||
470 common tee sys_tee
|
||||
471 common vmsplice sys_vmsplice
|
||||
472 common move_pages sys_move_pages
|
||||
473 common getcpu sys_getcpu
|
||||
474 common epoll_pwait sys_epoll_pwait
|
||||
475 common utimensat sys_utimensat
|
||||
476 common signalfd sys_signalfd
|
||||
477 common timerfd sys_ni_syscall
|
||||
478 common eventfd sys_eventfd
|
||||
479 common recvmmsg sys_recvmmsg
|
||||
480 common fallocate sys_fallocate
|
||||
481 common timerfd_create sys_timerfd_create
|
||||
482 common timerfd_settime sys_timerfd_settime
|
||||
483 common timerfd_gettime sys_timerfd_gettime
|
||||
484 common signalfd4 sys_signalfd4
|
||||
485 common eventfd2 sys_eventfd2
|
||||
486 common epoll_create1 sys_epoll_create1
|
||||
487 common dup3 sys_dup3
|
||||
488 common pipe2 sys_pipe2
|
||||
489 common inotify_init1 sys_inotify_init1
|
||||
490 common preadv sys_preadv
|
||||
491 common pwritev sys_pwritev
|
||||
492 common rt_tgsigqueueinfo sys_rt_tgsigqueueinfo
|
||||
493 common perf_event_open sys_perf_event_open
|
||||
494 common fanotify_init sys_fanotify_init
|
||||
495 common fanotify_mark sys_fanotify_mark
|
||||
496 common prlimit64 sys_prlimit64
|
||||
497 common name_to_handle_at sys_name_to_handle_at
|
||||
498 common open_by_handle_at sys_open_by_handle_at
|
||||
499 common clock_adjtime sys_clock_adjtime
|
||||
500 common syncfs sys_syncfs
|
||||
501 common setns sys_setns
|
||||
502 common accept4 sys_accept4
|
||||
503 common sendmmsg sys_sendmmsg
|
||||
504 common process_vm_readv sys_process_vm_readv
|
||||
505 common process_vm_writev sys_process_vm_writev
|
||||
506 common kcmp sys_kcmp
|
||||
507 common finit_module sys_finit_module
|
||||
508 common sched_setattr sys_sched_setattr
|
||||
509 common sched_getattr sys_sched_getattr
|
||||
510 common renameat2 sys_renameat2
|
||||
511 common getrandom sys_getrandom
|
||||
512 common memfd_create sys_memfd_create
|
||||
513 common execveat sys_execveat
|
||||
514 common seccomp sys_seccomp
|
||||
515 common bpf sys_bpf
|
||||
516 common userfaultfd sys_userfaultfd
|
||||
517 common membarrier sys_membarrier
|
||||
518 common mlock2 sys_mlock2
|
||||
519 common copy_file_range sys_copy_file_range
|
||||
520 common preadv2 sys_preadv2
|
||||
521 common pwritev2 sys_pwritev2
|
||||
522 common statx sys_statx
|
||||
523 common io_pgetevents sys_io_pgetevents
|
||||
524 common pkey_mprotect sys_pkey_mprotect
|
||||
525 common pkey_alloc sys_pkey_alloc
|
||||
526 common pkey_free sys_pkey_free
|
||||
527 common rseq sys_rseq
|
||||
528 common statfs64 sys_statfs64
|
||||
529 common fstatfs64 sys_fstatfs64
|
||||
530 common getegid sys_getegid
|
||||
531 common geteuid sys_geteuid
|
||||
532 common getppid sys_getppid
|
||||
# all other architectures have common numbers for new syscall, alpha
|
||||
# is the exception.
|
||||
534 common pidfd_send_signal sys_pidfd_send_signal
|
||||
535 common io_uring_setup sys_io_uring_setup
|
||||
536 common io_uring_enter sys_io_uring_enter
|
||||
537 common io_uring_register sys_io_uring_register
|
||||
538 common open_tree sys_open_tree
|
||||
539 common move_mount sys_move_mount
|
||||
540 common fsopen sys_fsopen
|
||||
541 common fsconfig sys_fsconfig
|
||||
542 common fsmount sys_fsmount
|
||||
543 common fspick sys_fspick
|
||||
544 common pidfd_open sys_pidfd_open
|
||||
545 common clone3 alpha_clone3
|
||||
546 common close_range sys_close_range
|
||||
547 common openat2 sys_openat2
|
||||
548 common pidfd_getfd sys_pidfd_getfd
|
||||
549 common faccessat2 sys_faccessat2
|
||||
550 common process_madvise sys_process_madvise
|
||||
551 common epoll_pwait2 sys_epoll_pwait2
|
||||
552 common mount_setattr sys_mount_setattr
|
||||
553 common quotactl_fd sys_quotactl_fd
|
||||
554 common landlock_create_ruleset sys_landlock_create_ruleset
|
||||
555 common landlock_add_rule sys_landlock_add_rule
|
||||
556 common landlock_restrict_self sys_landlock_restrict_self
|
||||
# 557 reserved for memfd_secret
|
||||
558 common process_mrelease sys_process_mrelease
|
||||
559 common futex_waitv sys_futex_waitv
|
||||
560 common set_mempolicy_home_node sys_ni_syscall
|
||||
561 common cachestat sys_cachestat
|
||||
562 common fchmodat2 sys_fchmodat2
|
||||
563 common map_shadow_stack sys_map_shadow_stack
|
||||
564 common futex_wake sys_futex_wake
|
||||
565 common futex_wait sys_futex_wait
|
||||
566 common futex_requeue sys_futex_requeue
|
||||
567 common statmount sys_statmount
|
||||
568 common listmount sys_listmount
|
||||
569 common lsm_get_self_attr sys_lsm_get_self_attr
|
||||
570 common lsm_set_self_attr sys_lsm_set_self_attr
|
||||
571 common lsm_list_modules sys_lsm_list_modules
|
||||
572 common mseal sys_mseal
|
||||
@@ -0,0 +1,32 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
in="$1"
|
||||
out="$2"
|
||||
my_abis=`echo "($3)" | tr ',' '|'`
|
||||
prefix="$4"
|
||||
offset="$5"
|
||||
|
||||
fileguard=LINUX_USER_ALPHA_`basename "$out" | sed \
|
||||
-e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
|
||||
-e 's/[^A-Z0-9_]/_/g' -e 's/__/_/g'`
|
||||
grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
|
||||
printf "#ifndef %s\n" "${fileguard}"
|
||||
printf "#define %s\n" "${fileguard}"
|
||||
printf "\n"
|
||||
|
||||
nxt=0
|
||||
while read nr abi name entry ; do
|
||||
if [ -z "$offset" ]; then
|
||||
printf "#define TARGET_NR_%s%s\t%s\n" \
|
||||
"${prefix}" "${name}" "${nr}"
|
||||
else
|
||||
printf "#define TARGET_NR_%s%s\t(%s + %s)\n" \
|
||||
"${prefix}" "${name}" "${offset}" "${nr}"
|
||||
fi
|
||||
nxt=$((nr+1))
|
||||
done
|
||||
|
||||
printf "\n"
|
||||
printf "#endif /* %s */" "${fileguard}"
|
||||
) > "$out"
|
||||
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Alpha specific CPU ABI and functions for linux-user
|
||||
*
|
||||
* Copyright (c) 2007 Jocelyn Mayer
|
||||
*
|
||||
* 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 ALPHA_TARGET_CPU_H
|
||||
#define ALPHA_TARGET_CPU_H
|
||||
|
||||
static inline void cpu_clone_regs_child(CPUAlphaState *env, target_ulong newsp,
|
||||
unsigned flags)
|
||||
{
|
||||
if (newsp) {
|
||||
env->ir[IR_SP] = newsp;
|
||||
}
|
||||
env->ir[IR_V0] = 0;
|
||||
env->ir[IR_A3] = 0;
|
||||
env->ir[IR_A4] = 1; /* OSF/1 secondary return: child */
|
||||
}
|
||||
|
||||
static inline void cpu_clone_regs_parent(CPUAlphaState *env, unsigned flags)
|
||||
{
|
||||
/*
|
||||
* OSF/1 secondary return: parent
|
||||
* Note that the kernel does not do this if SETTLS, because the
|
||||
* settls argument register is still live after copy_thread.
|
||||
*/
|
||||
if (!(flags & CLONE_SETTLS)) {
|
||||
env->ir[IR_A4] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static inline void cpu_set_tls(CPUAlphaState *env, target_ulong newtls)
|
||||
{
|
||||
env->unique = newtls;
|
||||
}
|
||||
|
||||
static inline abi_ulong get_sp_from_cpustate(CPUAlphaState *state)
|
||||
{
|
||||
return state->ir[IR_SP];
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* 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 ALPHA_TARGET_ELF_H
|
||||
#define ALPHA_TARGET_ELF_H
|
||||
|
||||
#define ELF_CLASS ELFCLASS64
|
||||
#define ELF_MACHINE EM_ALPHA
|
||||
|
||||
#define HAVE_ELF_CORE_DUMP 1
|
||||
#define HAVE_ELF_HWCAP 1
|
||||
|
||||
/*
|
||||
* Matches the kernel's elf_gregset_t (ELF_NGREG = 33):
|
||||
* r0-r30 at indices 0-30, pc at 31, ps at 32.
|
||||
* r31 (hardwired zero) is not stored; pc occupies index 31.
|
||||
*/
|
||||
/*
|
||||
* The floating-point note holds $f0 through $f30 and then the control
|
||||
* register in the slot $f31 would occupy; $f31 reads as zero.
|
||||
*/
|
||||
#define HAVE_ELF_CORE_FPREGS 1
|
||||
|
||||
typedef struct target_elf_fpregset_t {
|
||||
uint64_t fpr[31]; /* $f0-$f30 */
|
||||
uint64_t fpcr; /* the slot for $f31 */
|
||||
} target_elf_fpregset_t;
|
||||
|
||||
typedef struct target_elf_gregset_t {
|
||||
abi_ulong regs[31]; /* integer registers r0-r30 [0..30] */
|
||||
abi_ulong pc; /* program counter [31] */
|
||||
abi_ulong unique; /* thread's UNIQUE field [32] */
|
||||
} target_elf_gregset_t;
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,204 @@
|
||||
#ifndef ALPHA_TARGET_ERRNO_DEFS_H
|
||||
#define ALPHA_TARGET_ERRNO_DEFS_H
|
||||
|
||||
#include "../generic/target_errno_defs.h"
|
||||
|
||||
/*
|
||||
* Generic target errno overridden with definitions taken
|
||||
* from asm-alpha/errno.h
|
||||
*/
|
||||
#undef TARGET_EWOULDBLOCK
|
||||
#define TARGET_EWOULDBLOCK TARGET_EAGAIN
|
||||
#undef TARGET_EDEADLK
|
||||
#define TARGET_EDEADLK 11
|
||||
#undef TARGET_EAGAIN
|
||||
#define TARGET_EAGAIN 35
|
||||
#undef TARGET_EINPROGRESS
|
||||
#define TARGET_EINPROGRESS 36
|
||||
#undef TARGET_EALREADY
|
||||
#define TARGET_EALREADY 37
|
||||
#undef TARGET_ENOTSOCK
|
||||
#define TARGET_ENOTSOCK 38
|
||||
#undef TARGET_EDESTADDRREQ
|
||||
#define TARGET_EDESTADDRREQ 39
|
||||
#undef TARGET_EMSGSIZE
|
||||
#define TARGET_EMSGSIZE 40
|
||||
#undef TARGET_EPROTOTYPE
|
||||
#define TARGET_EPROTOTYPE 41
|
||||
#undef TARGET_ENOPROTOOPT
|
||||
#define TARGET_ENOPROTOOPT 42
|
||||
#undef TARGET_EPROTONOSUPPORT
|
||||
#define TARGET_EPROTONOSUPPORT 43
|
||||
#undef TARGET_ESOCKTNOSUPPORT
|
||||
#define TARGET_ESOCKTNOSUPPORT 44
|
||||
#undef TARGET_EOPNOTSUPP
|
||||
#define TARGET_EOPNOTSUPP 45
|
||||
#undef TARGET_EPFNOSUPPORT
|
||||
#define TARGET_EPFNOSUPPORT 46
|
||||
#undef TARGET_EAFNOSUPPORT
|
||||
#define TARGET_EAFNOSUPPORT 47
|
||||
#undef TARGET_EADDRINUSE
|
||||
#define TARGET_EADDRINUSE 48
|
||||
#undef TARGET_EADDRNOTAVAIL
|
||||
#define TARGET_EADDRNOTAVAIL 49
|
||||
#undef TARGET_ENETDOWN
|
||||
#define TARGET_ENETDOWN 50
|
||||
#undef TARGET_ENETUNREACH
|
||||
#define TARGET_ENETUNREACH 51
|
||||
#undef TARGET_ENETRESET
|
||||
#define TARGET_ENETRESET 52
|
||||
#undef TARGET_ECONNABORTED
|
||||
#define TARGET_ECONNABORTED 53
|
||||
#undef TARGET_ECONNRESET
|
||||
#define TARGET_ECONNRESET 54
|
||||
#undef TARGET_ENOBUFS
|
||||
#define TARGET_ENOBUFS 55
|
||||
#undef TARGET_EISCONN
|
||||
#define TARGET_EISCONN 56
|
||||
#undef TARGET_ENOTCONN
|
||||
#define TARGET_ENOTCONN 57
|
||||
#undef TARGET_ESHUTDOWN
|
||||
#define TARGET_ESHUTDOWN 58
|
||||
#undef TARGET_ETOOMANYREFS
|
||||
#define TARGET_ETOOMANYREFS 59
|
||||
#undef TARGET_ETIMEDOUT
|
||||
#define TARGET_ETIMEDOUT 60
|
||||
#undef TARGET_ECONNREFUSED
|
||||
#define TARGET_ECONNREFUSED 61
|
||||
#undef TARGET_ELOOP
|
||||
#define TARGET_ELOOP 62
|
||||
#undef TARGET_ENAMETOOLONG
|
||||
#define TARGET_ENAMETOOLONG 63
|
||||
#undef TARGET_EHOSTDOWN
|
||||
#define TARGET_EHOSTDOWN 64
|
||||
#undef TARGET_EHOSTUNREACH
|
||||
#define TARGET_EHOSTUNREACH 65
|
||||
#undef TARGET_ENOTEMPTY
|
||||
#define TARGET_ENOTEMPTY 66
|
||||
/* Unused 67 */
|
||||
#undef TARGET_EUSERS
|
||||
#define TARGET_EUSERS 68
|
||||
#undef TARGET_EDQUOT
|
||||
#define TARGET_EDQUOT 69
|
||||
#undef TARGET_ESTALE
|
||||
#define TARGET_ESTALE 70
|
||||
#undef TARGET_EREMOTE
|
||||
#define TARGET_EREMOTE 71
|
||||
/* Unused 72-76 */
|
||||
#undef TARGET_ENOLCK
|
||||
#define TARGET_ENOLCK 77
|
||||
#undef TARGET_ENOSYS
|
||||
#define TARGET_ENOSYS 78
|
||||
/* Unused 79 */
|
||||
#undef TARGET_ENOMSG
|
||||
#define TARGET_ENOMSG 80
|
||||
#undef TARGET_EIDRM
|
||||
#define TARGET_EIDRM 81
|
||||
#undef TARGET_ENOSR
|
||||
#define TARGET_ENOSR 82
|
||||
#undef TARGET_ETIME
|
||||
#define TARGET_ETIME 83
|
||||
#undef TARGET_EBADMSG
|
||||
#define TARGET_EBADMSG 84
|
||||
#undef TARGET_EPROTO
|
||||
#define TARGET_EPROTO 85
|
||||
#undef TARGET_ENODATA
|
||||
#define TARGET_ENODATA 86
|
||||
#undef TARGET_ENOSTR
|
||||
#define TARGET_ENOSTR 87
|
||||
#undef TARGET_ECHRNG
|
||||
#define TARGET_ECHRNG 88
|
||||
#undef TARGET_EL2NSYNC
|
||||
#define TARGET_EL2NSYNC 89
|
||||
#undef TARGET_EL3HLT
|
||||
#define TARGET_EL3HLT 90
|
||||
#undef TARGET_EL3RST
|
||||
#define TARGET_EL3RST 91
|
||||
#undef TARGET_ENOPKG
|
||||
#define TARGET_ENOPKG 92
|
||||
#undef TARGET_ELNRNG
|
||||
#define TARGET_ELNRNG 93
|
||||
#undef TARGET_EUNATCH
|
||||
#define TARGET_EUNATCH 94
|
||||
#undef TARGET_ENOCSI
|
||||
#define TARGET_ENOCSI 95
|
||||
#undef TARGET_EL2HLT
|
||||
#define TARGET_EL2HLT 96
|
||||
#undef TARGET_EBADE
|
||||
#define TARGET_EBADE 97
|
||||
#undef TARGET_EBADR
|
||||
#define TARGET_EBADR 98
|
||||
#undef TARGET_EXFULL
|
||||
#define TARGET_EXFULL 99
|
||||
#undef TARGET_ENOANO
|
||||
#define TARGET_ENOANO 100
|
||||
#undef TARGET_EBADRQC
|
||||
#define TARGET_EBADRQC 101
|
||||
#undef TARGET_EBADSLT
|
||||
#define TARGET_EBADSLT 102
|
||||
/* Unused 103 */
|
||||
#undef TARGET_EBFONT
|
||||
#define TARGET_EBFONT 104
|
||||
#undef TARGET_ENONET
|
||||
#define TARGET_ENONET 105
|
||||
#undef TARGET_ENOLINK
|
||||
#define TARGET_ENOLINK 106
|
||||
#undef TARGET_EADV
|
||||
#define TARGET_EADV 107
|
||||
#undef TARGET_ESRMNT
|
||||
#define TARGET_ESRMNT 108
|
||||
#undef TARGET_ECOMM
|
||||
#define TARGET_ECOMM 109
|
||||
#undef TARGET_EMULTIHOP
|
||||
#define TARGET_EMULTIHOP 110
|
||||
#undef TARGET_EDOTDOT
|
||||
#define TARGET_EDOTDOT 111
|
||||
#undef TARGET_EOVERFLOW
|
||||
#define TARGET_EOVERFLOW 112
|
||||
#undef TARGET_ENOTUNIQ
|
||||
#define TARGET_ENOTUNIQ 113
|
||||
#undef TARGET_EBADFD
|
||||
#define TARGET_EBADFD 114
|
||||
#undef TARGET_EREMCHG
|
||||
#define TARGET_EREMCHG 115
|
||||
#undef TARGET_EILSEQ
|
||||
#define TARGET_EILSEQ 116
|
||||
/* Same as default 117-121 */
|
||||
#undef TARGET_ELIBACC
|
||||
#define TARGET_ELIBACC 122
|
||||
#undef TARGET_ELIBBAD
|
||||
#define TARGET_ELIBBAD 123
|
||||
#undef TARGET_ELIBSCN
|
||||
#define TARGET_ELIBSCN 124
|
||||
#undef TARGET_ELIBMAX
|
||||
#define TARGET_ELIBMAX 125
|
||||
#undef TARGET_ELIBEXEC
|
||||
#define TARGET_ELIBEXEC 126
|
||||
#undef TARGET_ERESTART
|
||||
#define TARGET_ERESTART 127
|
||||
#undef TARGET_ESTRPIPE
|
||||
#define TARGET_ESTRPIPE 128
|
||||
#undef TARGET_ENOMEDIUM
|
||||
#define TARGET_ENOMEDIUM 129
|
||||
#undef TARGET_EMEDIUMTYPE
|
||||
#define TARGET_EMEDIUMTYPE 130
|
||||
#undef TARGET_ECANCELED
|
||||
#define TARGET_ECANCELED 131
|
||||
#undef TARGET_ENOKEY
|
||||
#define TARGET_ENOKEY 132
|
||||
#undef TARGET_EKEYEXPIRED
|
||||
#define TARGET_EKEYEXPIRED 133
|
||||
#undef TARGET_EKEYREVOKED
|
||||
#define TARGET_EKEYREVOKED 134
|
||||
#undef TARGET_EKEYREJECTED
|
||||
#define TARGET_EKEYREJECTED 135
|
||||
#undef TARGET_EOWNERDEAD
|
||||
#define TARGET_EOWNERDEAD 136
|
||||
#undef TARGET_ENOTRECOVERABLE
|
||||
#define TARGET_ENOTRECOVERABLE 137
|
||||
#undef TARGET_ERFKILL
|
||||
#define TARGET_ERFKILL 138
|
||||
#undef TARGET_EHWPOISON
|
||||
#define TARGET_EHWPOISON 139
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* 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 ALPHA_TARGET_FCNTL_H
|
||||
#define ALPHA_TARGET_FCNTL_H
|
||||
|
||||
#define TARGET_O_NONBLOCK 04
|
||||
#define TARGET_O_APPEND 010
|
||||
#define TARGET_O_CREAT 01000 /* not fcntl */
|
||||
#define TARGET_O_TRUNC 02000 /* not fcntl */
|
||||
#define TARGET_O_EXCL 04000 /* not fcntl */
|
||||
#define TARGET_O_NOCTTY 010000 /* not fcntl */
|
||||
#define TARGET_O_DSYNC 040000
|
||||
#define TARGET_O_LARGEFILE 0 /* not necessary, always 64-bit */
|
||||
#define TARGET_O_DIRECTORY 0100000 /* must be a directory */
|
||||
#define TARGET_O_NOFOLLOW 0200000 /* don't follow links */
|
||||
#define TARGET_O_DIRECT 02000000 /* direct disk access hint */
|
||||
#define TARGET_O_NOATIME 04000000
|
||||
#define TARGET_O_CLOEXEC 010000000
|
||||
#define TARGET___O_SYNC 020000000
|
||||
#define TARGET_O_PATH 040000000
|
||||
#define TARGET___O_TMPFILE 0100000000
|
||||
|
||||
#define TARGET_F_GETLK 7
|
||||
#define TARGET_F_SETLK 8
|
||||
#define TARGET_F_SETLKW 9
|
||||
#define TARGET_F_SETOWN 5 /* for sockets. */
|
||||
#define TARGET_F_GETOWN 6 /* for sockets. */
|
||||
|
||||
#define TARGET_F_RDLCK 1
|
||||
#define TARGET_F_WRLCK 2
|
||||
#define TARGET_F_UNLCK 8
|
||||
|
||||
#include "../generic/fcntl.h"
|
||||
#endif
|
||||
@@ -0,0 +1,36 @@
|
||||
#ifndef ALPHA_TARGET_MMAN_H
|
||||
#define ALPHA_TARGET_MMAN_H
|
||||
|
||||
#define TARGET_MAP_ANONYMOUS 0x10
|
||||
#define TARGET_MAP_FIXED 0x100
|
||||
#define TARGET_MAP_GROWSDOWN 0x01000
|
||||
#define TARGET_MAP_DENYWRITE 0x02000
|
||||
#define TARGET_MAP_EXECUTABLE 0x04000
|
||||
#define TARGET_MAP_LOCKED 0x08000
|
||||
#define TARGET_MAP_NORESERVE 0x10000
|
||||
#define TARGET_MAP_POPULATE 0x20000
|
||||
#define TARGET_MAP_NONBLOCK 0x40000
|
||||
#define TARGET_MAP_STACK 0x80000
|
||||
#define TARGET_MAP_HUGETLB 0x100000
|
||||
#define TARGET_MAP_FIXED_NOREPLACE 0x200000
|
||||
|
||||
#define TARGET_MADV_DONTNEED 6
|
||||
|
||||
#define TARGET_MS_ASYNC 1
|
||||
#define TARGET_MS_SYNC 2
|
||||
#define TARGET_MS_INVALIDATE 4
|
||||
|
||||
/*
|
||||
* arch/alpha/include/asm/processor.h:
|
||||
*
|
||||
* TASK_UNMAPPED_BASE TASK_SIZE / 2
|
||||
* TASK_SIZE 0x40000000000UL
|
||||
*/
|
||||
#define TASK_UNMAPPED_BASE 0x20000000000ull
|
||||
|
||||
/* arch/alpha/include/asm/elf.h */
|
||||
#define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x1000000)
|
||||
|
||||
#include "../generic/target_mman.h"
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1 @@
|
||||
#include "../generic/target_prctl_unalign.h"
|
||||
@@ -0,0 +1,87 @@
|
||||
/*
|
||||
* Alpha specific proc functions for linux-user
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
#ifndef ALPHA_TARGET_PROC_H
|
||||
#define ALPHA_TARGET_PROC_H
|
||||
|
||||
#include "target/alpha/cpu.h"
|
||||
|
||||
static uint8_t alpha_phys_addr_space_bits(CPUAlphaState *env)
|
||||
{
|
||||
switch (env->implver) {
|
||||
case IMPLVER_2106x:
|
||||
/* EV4 */
|
||||
return 34;
|
||||
case IMPLVER_21164:
|
||||
/* EV5 */
|
||||
return 40;
|
||||
case IMPLVER_21264:
|
||||
case IMPLVER_21364:
|
||||
/* EV6 and EV7*/
|
||||
return 44;
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
}
|
||||
}
|
||||
|
||||
static int open_cpuinfo(CPUArchState *cpu_env, int fd)
|
||||
{
|
||||
int max_cpus = sysconf(_SC_NPROCESSORS_CONF);
|
||||
int num_cpus = sysconf(_SC_NPROCESSORS_ONLN);
|
||||
unsigned long cpu_mask;
|
||||
char model[32];
|
||||
const char *p, *q;
|
||||
int t;
|
||||
|
||||
p = object_class_get_name(OBJECT_CLASS(env_cpu(cpu_env)->cc));
|
||||
q = strchr(p, '-');
|
||||
t = q - p;
|
||||
assert(t < sizeof(model));
|
||||
memcpy(model, p, t);
|
||||
model[t] = 0;
|
||||
|
||||
t = sched_getaffinity(getpid(), sizeof(cpu_mask), (cpu_set_t *)&cpu_mask);
|
||||
if (t < 0) {
|
||||
if (num_cpus >= sizeof(cpu_mask) * 8) {
|
||||
cpu_mask = -1;
|
||||
} else {
|
||||
cpu_mask = (1UL << num_cpus) - 1;
|
||||
}
|
||||
}
|
||||
|
||||
dprintf(fd,
|
||||
"cpu\t\t\t: Alpha\n"
|
||||
"cpu model\t\t: %s\n"
|
||||
"cpu variation\t\t: 0\n"
|
||||
"cpu revision\t\t: 0\n"
|
||||
"cpu serial number\t: JA00000000\n"
|
||||
"system type\t\t: QEMU\n"
|
||||
"system variation\t: QEMU_v" QEMU_VERSION "\n"
|
||||
"system revision\t\t: 0\n"
|
||||
"system serial number\t: AY00000000\n"
|
||||
"cycle frequency [Hz]\t: 250000000\n"
|
||||
"timer frequency [Hz]\t: 250.00\n"
|
||||
"page size [bytes]\t: %d\n"
|
||||
"phys. address bits\t: %d\n"
|
||||
"max. addr. space #\t: 255\n"
|
||||
"BogoMIPS\t\t: 2500.00\n"
|
||||
"kernel unaligned acc\t: 0 (pc=0,va=0)\n"
|
||||
"user unaligned acc\t: 0 (pc=0,va=0)\n"
|
||||
"platform string\t\t: AlphaServer QEMU user-mode VM\n"
|
||||
"cpus detected\t\t: %d\n"
|
||||
"cpus active\t\t: %d\n"
|
||||
"cpu active mask\t\t: %016lx\n"
|
||||
"L1 Icache\t\t: n/a\n"
|
||||
"L1 Dcache\t\t: n/a\n"
|
||||
"L2 cache\t\t: n/a\n"
|
||||
"L3 cache\t\t: n/a\n",
|
||||
model, TARGET_PAGE_SIZE, alpha_phys_addr_space_bits(cpu_env),
|
||||
max_cpus, num_cpus, cpu_mask);
|
||||
|
||||
return 0;
|
||||
}
|
||||
#define HAVE_ARCH_PROC_CPUINFO
|
||||
|
||||
#endif /* ALPHA_TARGET_PROC_H */
|
||||
@@ -0,0 +1,21 @@
|
||||
#ifndef ALPHA_TARGET_RESOURCE_H
|
||||
#define ALPHA_TARGET_RESOURCE_H
|
||||
|
||||
#include "../generic/target_resource.h"
|
||||
|
||||
#undef TARGET_RLIM_INFINITY
|
||||
#define TARGET_RLIM_INFINITY 0x7fffffffffffffffull
|
||||
|
||||
#undef TARGET_RLIMIT_NOFILE
|
||||
#define TARGET_RLIMIT_NOFILE 6
|
||||
|
||||
#undef TARGET_RLIMIT_AS
|
||||
#define TARGET_RLIMIT_AS 7
|
||||
|
||||
#undef TARGET_RLIMIT_NPROC
|
||||
#define TARGET_RLIMIT_NPROC 8
|
||||
|
||||
#undef TARGET_RLIMIT_MEMLOCK
|
||||
#define TARGET_RLIMIT_MEMLOCK 9
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,102 @@
|
||||
#ifndef ALPHA_TARGET_SIGNAL_H
|
||||
#define ALPHA_TARGET_SIGNAL_H
|
||||
|
||||
#define TARGET_SIGHUP 1
|
||||
#define TARGET_SIGINT 2
|
||||
#define TARGET_SIGQUIT 3
|
||||
#define TARGET_SIGILL 4
|
||||
#define TARGET_SIGTRAP 5
|
||||
#define TARGET_SIGABRT 6
|
||||
#define TARGET_SIGSTKFLT 7 /* actually SIGEMT */
|
||||
#define TARGET_SIGFPE 8
|
||||
#define TARGET_SIGKILL 9
|
||||
#define TARGET_SIGBUS 10
|
||||
#define TARGET_SIGSEGV 11
|
||||
#define TARGET_SIGSYS 12
|
||||
#define TARGET_SIGPIPE 13
|
||||
#define TARGET_SIGALRM 14
|
||||
#define TARGET_SIGTERM 15
|
||||
#define TARGET_SIGURG 16
|
||||
#define TARGET_SIGSTOP 17
|
||||
#define TARGET_SIGTSTP 18
|
||||
#define TARGET_SIGCONT 19
|
||||
#define TARGET_SIGCHLD 20
|
||||
#define TARGET_SIGTTIN 21
|
||||
#define TARGET_SIGTTOU 22
|
||||
#define TARGET_SIGIO 23
|
||||
#define TARGET_SIGXCPU 24
|
||||
#define TARGET_SIGXFSZ 25
|
||||
#define TARGET_SIGVTALRM 26
|
||||
#define TARGET_SIGPROF 27
|
||||
#define TARGET_SIGWINCH 28
|
||||
#define TARGET_SIGPWR 29 /* actually SIGINFO */
|
||||
#define TARGET_SIGUSR1 30
|
||||
#define TARGET_SIGUSR2 31
|
||||
#define TARGET_SIGRTMIN 32
|
||||
|
||||
#define TARGET_SIG_BLOCK 1
|
||||
#define TARGET_SIG_UNBLOCK 2
|
||||
#define TARGET_SIG_SETMASK 3
|
||||
|
||||
/* 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_SA_ONSTACK 0x00000001
|
||||
#define TARGET_SA_RESTART 0x00000002
|
||||
#define TARGET_SA_NOCLDSTOP 0x00000004
|
||||
#define TARGET_SA_NODEFER 0x00000008
|
||||
#define TARGET_SA_RESETHAND 0x00000010
|
||||
#define TARGET_SA_NOCLDWAIT 0x00000020 /* not supported yet */
|
||||
#define TARGET_SA_SIGINFO 0x00000040
|
||||
|
||||
#define TARGET_MINSIGSTKSZ 4096
|
||||
|
||||
/* From <asm/gentrap.h>. */
|
||||
#define TARGET_GEN_INTOVF -1 /* integer overflow */
|
||||
#define TARGET_GEN_INTDIV -2 /* integer division by zero */
|
||||
#define TARGET_GEN_FLTOVF -3 /* fp overflow */
|
||||
#define TARGET_GEN_FLTDIV -4 /* fp division by zero */
|
||||
#define TARGET_GEN_FLTUND -5 /* fp underflow */
|
||||
#define TARGET_GEN_FLTINV -6 /* invalid fp operand */
|
||||
#define TARGET_GEN_FLTINE -7 /* inexact fp operand */
|
||||
#define TARGET_GEN_DECOVF -8 /* decimal overflow (for COBOL??) */
|
||||
#define TARGET_GEN_DECDIV -9 /* decimal division by zero */
|
||||
#define TARGET_GEN_DECINV -10 /* invalid decimal operand */
|
||||
#define TARGET_GEN_ROPRAND -11 /* reserved operand */
|
||||
#define TARGET_GEN_ASSERTERR -12 /* assertion error */
|
||||
#define TARGET_GEN_NULPTRERR -13 /* null pointer error */
|
||||
#define TARGET_GEN_STKOVF -14 /* stack overflow */
|
||||
#define TARGET_GEN_STRLENERR -15 /* string length error */
|
||||
#define TARGET_GEN_SUBSTRERR -16 /* substring error */
|
||||
#define TARGET_GEN_RANGERR -17 /* range error */
|
||||
#define TARGET_GEN_SUBRNG -18
|
||||
#define TARGET_GEN_SUBRNG1 -19
|
||||
#define TARGET_GEN_SUBRNG2 -20
|
||||
#define TARGET_GEN_SUBRNG3 -21
|
||||
#define TARGET_GEN_SUBRNG4 -22
|
||||
#define TARGET_GEN_SUBRNG5 -23
|
||||
#define TARGET_GEN_SUBRNG6 -24
|
||||
#define TARGET_GEN_SUBRNG7 -25
|
||||
|
||||
#define TARGET_ARCH_HAS_SETUP_FRAME
|
||||
#define TARGET_ARCH_HAS_KA_RESTORER
|
||||
#define TARGET_ARCH_HAS_SIGTRAMP_PAGE 1
|
||||
|
||||
/* bit-flags */
|
||||
#define TARGET_SS_AUTODISARM (1U << 31) /* disable sas during sighandling */
|
||||
/* mask for all SS_xxx flags */
|
||||
#define TARGET_SS_FLAG_BITS TARGET_SS_AUTODISARM
|
||||
|
||||
#endif /* ALPHA_TARGET_SIGNAL_H */
|
||||
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Alpha specific structures for linux-user
|
||||
*
|
||||
* Copyright (c) 2013 Fabrice Bellard
|
||||
*
|
||||
* 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 ALPHA_TARGET_STRUCTS_H
|
||||
#define ALPHA_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. */
|
||||
abi_ushort __pad1;
|
||||
abi_ulong __unused1;
|
||||
abi_ulong __unused2;
|
||||
};
|
||||
|
||||
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_ulong shm_nattch; /* number of current attaches */
|
||||
abi_ulong __unused1;
|
||||
abi_ulong __unused2;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,30 @@
|
||||
#ifndef ALPHA_TARGET_SYSCALL_H
|
||||
#define ALPHA_TARGET_SYSCALL_H
|
||||
|
||||
#define UNAME_MACHINE "alpha"
|
||||
#define UNAME_MINIMUM_RELEASE "2.6.32"
|
||||
|
||||
// For sys_osf_getsysinfo
|
||||
#define TARGET_GSI_UACPROC 8
|
||||
#define TARGET_GSI_IEEE_FP_CONTROL 45
|
||||
#define TARGET_GSI_IEEE_STATE_AT_SIGNAL 46
|
||||
#define TARGET_GSI_PROC_TYPE 60
|
||||
#define TARGET_GSI_GET_HWRPB 101
|
||||
|
||||
// For sys_ofs_setsysinfo
|
||||
#define TARGET_SSI_NVPAIRS 1
|
||||
#define TARGET_SSI_IEEE_FP_CONTROL 14
|
||||
#define TARGET_SSI_IEEE_STATE_AT_SIGNAL 15
|
||||
#define TARGET_SSI_IEEE_IGNORE_STATE_AT_SIGNAL 16
|
||||
#define TARGET_SSI_IEEE_RAISE_EXCEPTION 1001
|
||||
|
||||
#define TARGET_SSIN_UACPROC 6
|
||||
|
||||
#define TARGET_UAC_NOPRINT 1
|
||||
#define TARGET_UAC_NOFIX 2
|
||||
#define TARGET_UAC_SIGBUS 4
|
||||
#define TARGET_MCL_CURRENT 0x2000
|
||||
#define TARGET_MCL_FUTURE 0x4000
|
||||
#define TARGET_MCL_ONFAULT 0x8000
|
||||
|
||||
#endif /* ALPHA_TARGET_SYSCALL_H */
|
||||
@@ -0,0 +1,301 @@
|
||||
#ifndef LINUX_USER_ALPHA_TERMBITS_H
|
||||
#define LINUX_USER_ALPHA_TERMBITS_H
|
||||
|
||||
typedef unsigned char target_cc_t;
|
||||
typedef unsigned int target_speed_t;
|
||||
typedef unsigned int target_tcflag_t;
|
||||
|
||||
#define TARGET_NCCS 19
|
||||
struct target_termios {
|
||||
target_tcflag_t c_iflag; /* input mode flags */
|
||||
target_tcflag_t c_oflag; /* output mode flags */
|
||||
target_tcflag_t c_cflag; /* control mode flags */
|
||||
target_tcflag_t c_lflag; /* local mode flags */
|
||||
target_cc_t c_cc[TARGET_NCCS]; /* control characters */
|
||||
target_cc_t c_line; /* line discipline (== c_cc[19]) */
|
||||
target_speed_t c_ispeed; /* input speed */
|
||||
target_speed_t c_ospeed; /* output speed */
|
||||
};
|
||||
|
||||
struct target_termios2 {
|
||||
target_tcflag_t c_iflag; /* input mode flags */
|
||||
target_tcflag_t c_oflag; /* output mode flags */
|
||||
target_tcflag_t c_cflag; /* control mode flags */
|
||||
target_tcflag_t c_lflag; /* local mode flags */
|
||||
target_cc_t c_cc[TARGET_NCCS]; /* control characters */
|
||||
target_cc_t c_line; /* line discipline (== c_cc[19]) */
|
||||
target_speed_t c_ispeed; /* input speed */
|
||||
target_speed_t c_ospeed; /* output speed */
|
||||
};
|
||||
|
||||
struct target_ktermios {
|
||||
target_tcflag_t c_iflag; /* input mode flags */
|
||||
target_tcflag_t c_oflag; /* output mode flags */
|
||||
target_tcflag_t c_cflag; /* control mode flags */
|
||||
target_tcflag_t c_lflag; /* local mode flags */
|
||||
target_cc_t c_cc[TARGET_NCCS]; /* control characters */
|
||||
target_cc_t c_line; /* line discipline (== c_cc[19]) */
|
||||
target_speed_t c_ispeed; /* input speed */
|
||||
target_speed_t c_ospeed; /* output speed */
|
||||
};
|
||||
|
||||
|
||||
/* c_cc characters */
|
||||
#define TARGET_VEOF 0
|
||||
#define TARGET_VEOL 1
|
||||
#define TARGET_VEOL2 2
|
||||
#define TARGET_VERASE 3
|
||||
#define TARGET_VWERASE 4
|
||||
#define TARGET_VKILL 5
|
||||
#define TARGET_VREPRINT 6
|
||||
#define TARGET_VSWTC 7
|
||||
#define TARGET_VINTR 8
|
||||
#define TARGET_VQUIT 9
|
||||
#define TARGET_VSUSP 10
|
||||
#define TARGET_VSTART 12
|
||||
#define TARGET_VSTOP 13
|
||||
#define TARGET_VLNEXT 14
|
||||
#define TARGET_VDISCARD 15
|
||||
#define TARGET_VMIN 16
|
||||
#define TARGET_VTIME 17
|
||||
|
||||
/* c_iflag bits */
|
||||
#define TARGET_IGNBRK 0000001
|
||||
#define TARGET_BRKINT 0000002
|
||||
#define TARGET_IGNPAR 0000004
|
||||
#define TARGET_PARMRK 0000010
|
||||
#define TARGET_INPCK 0000020
|
||||
#define TARGET_ISTRIP 0000040
|
||||
#define TARGET_INLCR 0000100
|
||||
#define TARGET_IGNCR 0000200
|
||||
#define TARGET_ICRNL 0000400
|
||||
#define TARGET_IXON 0001000
|
||||
#define TARGET_IXOFF 0002000
|
||||
#define TARGET_IXANY 0004000
|
||||
#define TARGET_IUCLC 0010000
|
||||
#define TARGET_IMAXBEL 0020000
|
||||
#define TARGET_IUTF8 0040000
|
||||
|
||||
/* c_oflag bits */
|
||||
#define TARGET_OPOST 0000001
|
||||
#define TARGET_ONLCR 0000002
|
||||
#define TARGET_OLCUC 0000004
|
||||
|
||||
#define TARGET_OCRNL 0000010
|
||||
#define TARGET_ONOCR 0000020
|
||||
#define TARGET_ONLRET 0000040
|
||||
|
||||
#define TARGET_OFILL 00000100
|
||||
#define TARGET_OFDEL 00000200
|
||||
#define TARGET_NLDLY 00001400
|
||||
#define TARGET_NL0 00000000
|
||||
#define TARGET_NL1 00000400
|
||||
#define TARGET_NL2 00001000
|
||||
#define TARGET_NL3 00001400
|
||||
#define TARGET_TABDLY 00006000
|
||||
#define TARGET_TAB0 00000000
|
||||
#define TARGET_TAB1 00002000
|
||||
#define TARGET_TAB2 00004000
|
||||
#define TARGET_TAB3 00006000
|
||||
#define TARGET_CRDLY 00030000
|
||||
#define TARGET_CR0 00000000
|
||||
#define TARGET_CR1 00010000
|
||||
#define TARGET_CR2 00020000
|
||||
#define TARGET_CR3 00030000
|
||||
#define TARGET_FFDLY 00040000
|
||||
#define TARGET_FF0 00000000
|
||||
#define TARGET_FF1 00040000
|
||||
#define TARGET_BSDLY 00100000
|
||||
#define TARGET_BS0 00000000
|
||||
#define TARGET_BS1 00100000
|
||||
#define TARGET_VTDLY 00200000
|
||||
#define TARGET_VT0 00000000
|
||||
#define TARGET_VT1 00200000
|
||||
#define TARGET_XTABS 01000000 /* Hmm.. Linux/i386 considers this part of TABDLY.. */
|
||||
|
||||
/* c_cflag bit meaning */
|
||||
#define TARGET_CBAUD 0000037
|
||||
#define TARGET_B0 0000000 /* hang up */
|
||||
#define TARGET_B50 0000001
|
||||
#define TARGET_B75 0000002
|
||||
#define TARGET_B110 0000003
|
||||
#define TARGET_B134 0000004
|
||||
#define TARGET_B150 0000005
|
||||
#define TARGET_B200 0000006
|
||||
#define TARGET_B300 0000007
|
||||
#define TARGET_B600 0000010
|
||||
#define TARGET_B1200 0000011
|
||||
#define TARGET_B1800 0000012
|
||||
#define TARGET_B2400 0000013
|
||||
#define TARGET_B4800 0000014
|
||||
#define TARGET_B9600 0000015
|
||||
#define TARGET_B19200 0000016
|
||||
#define TARGET_B38400 0000017
|
||||
#define TARGET_EXTA B19200
|
||||
#define TARGET_EXTB B38400
|
||||
#define TARGET_CBAUDEX 0000000
|
||||
#define TARGET_B57600 00020
|
||||
#define TARGET_B115200 00021
|
||||
#define TARGET_B230400 00022
|
||||
#define TARGET_B460800 00023
|
||||
#define TARGET_B500000 00024
|
||||
#define TARGET_B576000 00025
|
||||
#define TARGET_B921600 00026
|
||||
#define TARGET_B1000000 00027
|
||||
#define TARGET_B1152000 00030
|
||||
#define TARGET_B1500000 00031
|
||||
#define TARGET_B2000000 00032
|
||||
#define TARGET_B2500000 00033
|
||||
#define TARGET_B3000000 00034
|
||||
#define TARGET_B3500000 00035
|
||||
#define TARGET_B4000000 00036
|
||||
#define TARGET_BOTHER 00037
|
||||
|
||||
#define TARGET_CSIZE 00001400
|
||||
#define TARGET_CS5 00000000
|
||||
#define TARGET_CS6 00000400
|
||||
#define TARGET_CS7 00001000
|
||||
#define TARGET_CS8 00001400
|
||||
|
||||
#define TARGET_CSTOPB 00002000
|
||||
#define TARGET_CREAD 00004000
|
||||
#define TARGET_PARENB 00010000
|
||||
#define TARGET_PARODD 00020000
|
||||
#define TARGET_HUPCL 00040000
|
||||
|
||||
#define TARGET_CLOCAL 00100000
|
||||
#define TARGET_CMSPAR 010000000000 /* mark or space (stick) parity */
|
||||
#define TARGET_CRTSCTS 020000000000 /* flow control */
|
||||
|
||||
/* c_lflag bits */
|
||||
#define TARGET_ISIG 0x00000080
|
||||
#define TARGET_ICANON 0x00000100
|
||||
#define TARGET_XCASE 0x00004000
|
||||
#define TARGET_ECHO 0x00000008
|
||||
#define TARGET_ECHOE 0x00000002
|
||||
#define TARGET_ECHOK 0x00000004
|
||||
#define TARGET_ECHONL 0x00000010
|
||||
#define TARGET_NOFLSH 0x80000000
|
||||
#define TARGET_TOSTOP 0x00400000
|
||||
#define TARGET_ECHOCTL 0x00000040
|
||||
#define TARGET_ECHOPRT 0x00000020
|
||||
#define TARGET_ECHOKE 0x00000001
|
||||
#define TARGET_FLUSHO 0x00800000
|
||||
#define TARGET_PENDIN 0x20000000
|
||||
#define TARGET_IEXTEN 0x00000400
|
||||
#define TARGET_EXTPROC 0x10000000
|
||||
|
||||
#define TARGET_FIOCLEX TARGET_IO('f', 1)
|
||||
#define TARGET_FIONCLEX TARGET_IO('f', 2)
|
||||
#define TARGET_FIOASYNC TARGET_IOW('f', 125, int)
|
||||
#define TARGET_FIONBIO TARGET_IOW('f', 126, int)
|
||||
#define TARGET_FIONREAD TARGET_IOR('f', 127, int)
|
||||
#define TARGET_TIOCINQ FIONREAD
|
||||
#define TARGET_FIOQSIZE TARGET_IOR('f', 128, loff_t)
|
||||
|
||||
#define TARGET_TIOCGETP TARGET_IOR('t', 8, struct target_sgttyb)
|
||||
#define TARGET_TIOCSETP TARGET_IOW('t', 9, struct target_sgttyb)
|
||||
#define TARGET_TIOCSETN TARGET_IOW('t', 10, struct target_sgttyb) /* TIOCSETP wo flush */
|
||||
|
||||
#define TARGET_TIOCSETC TARGET_IOW('t', 17, struct target_tchars)
|
||||
#define TARGET_TIOCGETC TARGET_IOR('t', 18, struct target_tchars)
|
||||
#define TARGET_TCGETS TARGET_IOR('t', 19, struct target_termios)
|
||||
#define TARGET_TCSETS TARGET_IOW('t', 20, struct target_termios)
|
||||
#define TARGET_TCSETSW TARGET_IOW('t', 21, struct target_termios)
|
||||
#define TARGET_TCSETSF TARGET_IOW('t', 22, struct target_termios)
|
||||
|
||||
#define TARGET_TCGETA TARGET_IOR('t', 23, struct target_termio)
|
||||
#define TARGET_TCSETA TARGET_IOW('t', 24, struct target_termio)
|
||||
#define TARGET_TCSETAW TARGET_IOW('t', 25, struct target_termio)
|
||||
#define TARGET_TCSETAF TARGET_IOW('t', 28, struct target_termio)
|
||||
|
||||
#define TARGET_TCSBRK TARGET_IO('t', 29)
|
||||
#define TARGET_TCXONC TARGET_IO('t', 30)
|
||||
#define TARGET_TCFLSH TARGET_IO('t', 31)
|
||||
|
||||
#define TARGET_TIOCSWINSZ TARGET_IOW('t', 103, struct target_winsize)
|
||||
#define TARGET_TIOCGWINSZ TARGET_IOR('t', 104, struct target_winsize)
|
||||
#define TARGET_TIOCSTART TARGET_IO('t', 110) /* start output, like ^Q */
|
||||
#define TARGET_TIOCSTOP TARGET_IO('t', 111) /* stop output, like ^S */
|
||||
#define TARGET_TIOCOUTQ TARGET_IOR('t', 115, int) /* output queue size */
|
||||
|
||||
#define TARGET_TIOCGLTC TARGET_IOR('t', 116, struct target_ltchars)
|
||||
#define TARGET_TIOCSLTC TARGET_IOW('t', 117, struct target_ltchars)
|
||||
#define TARGET_TIOCSPGRP TARGET_IOW('t', 118, int)
|
||||
#define TARGET_TIOCGPGRP TARGET_IOR('t', 119, int)
|
||||
|
||||
#define TARGET_TIOCEXCL 0x540C
|
||||
#define TARGET_TIOCNXCL 0x540D
|
||||
#define TARGET_TIOCSCTTY 0x540E
|
||||
|
||||
#define TARGET_TIOCSTI 0x5412
|
||||
#define TARGET_TIOCMGET 0x5415
|
||||
#define TARGET_TIOCMBIS 0x5416
|
||||
#define TARGET_TIOCMBIC 0x5417
|
||||
#define TARGET_TIOCMSET 0x5418
|
||||
# define TARGET_TIOCM_LE 0x001
|
||||
# define TARGET_TIOCM_DTR 0x002
|
||||
# define TARGET_TIOCM_RTS 0x004
|
||||
# define TARGET_TIOCM_ST 0x008
|
||||
# define TARGET_TIOCM_SR 0x010
|
||||
# define TARGET_TIOCM_CTS 0x020
|
||||
# define TARGET_TIOCM_CAR 0x040
|
||||
# define TARGET_TIOCM_RNG 0x080
|
||||
# define TARGET_TIOCM_DSR 0x100
|
||||
# define TARGET_TIOCM_CD TIOCM_CAR
|
||||
# define TARGET_TIOCM_RI TIOCM_RNG
|
||||
# define TARGET_TIOCM_OUT1 0x2000
|
||||
# define TARGET_TIOCM_OUT2 0x4000
|
||||
# define TARGET_TIOCM_LOOP 0x8000
|
||||
|
||||
#define TARGET_TIOCGSOFTCAR 0x5419
|
||||
#define TARGET_TIOCSSOFTCAR 0x541A
|
||||
#define TARGET_TIOCLINUX 0x541C
|
||||
#define TARGET_TIOCCONS 0x541D
|
||||
#define TARGET_TIOCGSERIAL 0x541E
|
||||
#define TARGET_TIOCSSERIAL 0x541F
|
||||
#define TARGET_TIOCPKT 0x5420
|
||||
# define TARGET_TIOCPKT_DATA 0
|
||||
# define TARGET_TIOCPKT_FLUSHREAD 1
|
||||
# define TARGET_TIOCPKT_FLUSHWRITE 2
|
||||
# define TARGET_TIOCPKT_STOP 4
|
||||
# define TARGET_TIOCPKT_START 8
|
||||
# define TARGET_TIOCPKT_NOSTOP 16
|
||||
# define TARGET_TIOCPKT_DOSTOP 32
|
||||
|
||||
|
||||
#define TARGET_TIOCNOTTY 0x5422
|
||||
#define TARGET_TIOCSETD 0x5423
|
||||
#define TARGET_TIOCGETD 0x5424
|
||||
#define TARGET_TCSBRKP 0x5425 /* Needed for POSIX tcsendbreak() */
|
||||
#define TARGET_TIOCSBRK 0x5427 /* BSD compatibility */
|
||||
#define TARGET_TIOCCBRK 0x5428 /* BSD compatibility */
|
||||
#define TARGET_TIOCGSID 0x5429 /* Return the session ID of FD */
|
||||
#define TARGET_TCGETS2 TARGET_IOR('T', 0x2A, struct target_termios2)
|
||||
#define TARGET_TCSETS2 TARGET_IOW('T', 0x2B, struct target_termios2)
|
||||
#define TARGET_TCSETSW2 TARGET_IOW('T', 0x2C, struct target_termios2)
|
||||
#define TARGET_TCSETSF2 TARGET_IOW('T', 0x2D, struct target_termios2)
|
||||
#define TARGET_TIOCGRS485 TARGET_IOR('T', 0x2E, struct serial_rs485)
|
||||
#define TARGET_TIOCSRS485 TARGET_IOWR('T', 0x2F, struct serial_rs485)
|
||||
#define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
|
||||
#define TARGET_TIOCSPTLCK TARGET_IOW('T',0x31, int) /* Lock/unlock Pty */
|
||||
#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Safely open the slave */
|
||||
|
||||
#define TARGET_TIOCSERCONFIG 0x5453
|
||||
#define TARGET_TIOCSERGWILD 0x5454
|
||||
#define TARGET_TIOCSERSWILD 0x5455
|
||||
#define TARGET_TIOCGLCKTRMIOS 0x5456
|
||||
#define TARGET_TIOCSLCKTRMIOS 0x5457
|
||||
#define TARGET_TIOCSERGSTRUCT 0x5458 /* For debugging only */
|
||||
#define TARGET_TIOCSERGETLSR 0x5459 /* Get line status register */
|
||||
/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
|
||||
# define TARGET_TIOCSER_TEMT 0x01 /* Transmitter physically empty */
|
||||
#define TARGET_TIOCSERGETMULTI 0x545A /* Get multiport config */
|
||||
#define TARGET_TIOCSERSETMULTI 0x545B /* Set multiport config */
|
||||
|
||||
#define TARGET_TIOCMIWAIT 0x545C /* wait for a change on serial input line(s) */
|
||||
#define TARGET_TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */
|
||||
#define TARGET_TIOCGHAYESESP 0x545E /* Get Hayes ESP configuration */
|
||||
#define TARGET_TIOCSHAYESESP 0x545F /* Set Hayes ESP configuration */
|
||||
|
||||
#endif
|
||||
Reference in new issue
Block a user