qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]