[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 02/12 v9] linux-user: tilegx: Add target feature
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [PATCH 02/12 v9] linux-user: tilegx: Add target features support within qemu |
Date: |
Thu, 9 Apr 2015 22:31:08 +0100 |
On 27 March 2015 at 10:49, Chen Gang <address@hidden> wrote:
> They are for target features within qemu which independent from outside.
>
> Signed-off-by: Chen Gang <address@hidden>
> ---
> linux-user/tilegx/target_cpu.h | 35 +++++++++++++++++++++++++++
> linux-user/tilegx/target_signal.h | 28 ++++++++++++++++++++++
> linux-user/tilegx/target_structs.h | 48
> ++++++++++++++++++++++++++++++++++++++
> 3 files changed, 111 insertions(+)
> create mode 100644 linux-user/tilegx/target_cpu.h
> create mode 100644 linux-user/tilegx/target_signal.h
> create mode 100644 linux-user/tilegx/target_structs.h
>
> diff --git a/linux-user/tilegx/target_cpu.h b/linux-user/tilegx/target_cpu.h
> new file mode 100644
> index 0000000..c96e81d
> --- /dev/null
> +++ b/linux-user/tilegx/target_cpu.h
> @@ -0,0 +1,35 @@
> +/*
> + * 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 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 TARGET_CPU_H
> +#define TARGET_CPU_H
> +
> +static inline void cpu_clone_regs(CPUTLGState *env, target_ulong newsp)
> +{
> + if (newsp) {
> + env->regs[TILEGX_R_SP] = newsp;
> + }
> + env->regs[TILEGX_R_RE] = 0;
This is slightly confusing, because the kernel code we're matching here
doesn't call this register RE, it just uses 0:
childregs->regs[0] = 0; /* return value is zero */
> +}
> +
> +static inline void cpu_set_tls(CPUTLGState *env, target_ulong newtls)
> +{
> + env->regs[TILEGX_R_TP] = newtls;
> +}
> +
> +#endif
> diff --git a/linux-user/tilegx/target_signal.h
> b/linux-user/tilegx/target_signal.h
> new file mode 100644
> index 0000000..fbab216
> --- /dev/null
> +++ b/linux-user/tilegx/target_signal.h
> @@ -0,0 +1,28 @@
> +#ifndef TARGET_SIGNAL_H
> +#define TARGET_SIGNAL_H
> +
> +#include "cpu.h"
> +
> +/* this struct defines a stack used during syscall handling */
> +
> +typedef struct target_sigaltstack {
> + abi_ulong ss_sp;
> + abi_ulong ss_size;
> + abi_long ss_flags;
> +} target_stack_t;
Where does this come from? It doesn't match the kernel's
generic-headers struct layout.
> +
> +/*
> + * sigaltstack controls
> + */
> +#define TARGET_SS_ONSTACK 1
> +#define TARGET_SS_DISABLE 2
> +
> +#define TARGET_MINSIGSTKSZ 2048
> +#define TARGET_SIGSTKSZ 8192
> +
> +static inline abi_ulong get_sp_from_cpustate(CPUTLGState *state)
> +{
> + return state->regs[TILEGX_R_SP];
> +}
> +
> +#endif /* TARGET_SIGNAL_H */
> diff --git a/linux-user/tilegx/target_structs.h
> b/linux-user/tilegx/target_structs.h
> new file mode 100644
> index 0000000..13a1505
> --- /dev/null
> +++ b/linux-user/tilegx/target_structs.h
> @@ -0,0 +1,48 @@
> +/*
> + * 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 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 TARGET_STRUCTS_H
> +#define 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 __pad2;
> + abi_ulong __unused1;
> + abi_ulong __unused2;
> +};
Again, doesn't seem to match kernel?
> +
> +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 __unused4;
> + abi_ulong __unused5;
> +};
> +
> +#endif
thanks
-- PMM
- Re: [Qemu-devel] [PATCH 02/12 v9] linux-user: tilegx: Add target features support within qemu,
Peter Maydell <=