qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [4609] moved halted field to CPU_COMMON


From: Glauber Costa
Subject: Re: [Qemu-devel] [4609] moved halted field to CPU_COMMON
Date: Wed, 28 May 2008 14:24:28 -0300

On Wed, May 28, 2008 at 2:14 PM, Fabrice Bellard <address@hidden> wrote:
> Revision: 4609
>          http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=4609
> Author:   bellard
> Date:     2008-05-28 17:14:10 +0000 (Wed, 28 May 2008)
>
> Log Message:
> -----------
> moved halted field to CPU_COMMON

It is very good to have it commited, but I feel really embarassed to
see no mention to me at all in the changelog.
Even if it is a slightly modified version of the patch itself
(although this one seems more like a subset), giving credit to the
work I've done is a good thing. At the very least,
it will keep developers around and motivated.

> Modified Paths:
> --------------
>    trunk/cpu-defs.h
>    trunk/hw/apic.c
>    trunk/hw/pc.c
>    trunk/monitor.c
>    trunk/target-alpha/cpu.h
>    trunk/target-arm/cpu.h
>    trunk/target-cris/cpu.h
>    trunk/target-i386/cpu.h
>    trunk/target-i386/exec.h
>    trunk/target-i386/helper.c
>    trunk/target-i386/op_helper.c
>    trunk/target-m68k/cpu.h
>    trunk/target-mips/cpu.h
>    trunk/target-ppc/cpu.h
>    trunk/target-sh4/cpu.h
>    trunk/target-sparc/cpu.h
>
> Modified: trunk/cpu-defs.h
> ===================================================================
> --- trunk/cpu-defs.h    2008-05-28 16:49:25 UTC (rev 4608)
> +++ trunk/cpu-defs.h    2008-05-28 17:14:10 UTC (rev 4609)
> @@ -140,6 +140,7 @@
>                                    written */                           \
>     target_ulong mem_write_vaddr; /* target virtual addr at which the   \
>                                      memory was written */              \
> +    int halted; /* TRUE if the CPU is in suspend state */               \
>     /* The meaning of the MMU modes is defined in the target code. */   \
>     CPUTLBEntry tlb_table[NB_MMU_MODES][CPU_TLB_SIZE];                  \
>     struct TranslationBlock *tb_jmp_cache[TB_JMP_CACHE_SIZE];           \
>
> Modified: trunk/hw/apic.c
> ===================================================================
> --- trunk/hw/apic.c     2008-05-28 16:49:25 UTC (rev 4608)
> +++ trunk/hw/apic.c     2008-05-28 17:14:10 UTC (rev 4609)
> @@ -443,12 +443,12 @@
>  static void apic_startup(APICState *s, int vector_num)
>  {
>     CPUState *env = s->cpu_env;
> -    if (!(env->hflags & HF_HALTED_MASK))
> +    if (!env->halted)
>         return;
>     env->eip = 0;
>     cpu_x86_load_seg_cache(env, R_CS, vector_num << 8, vector_num << 12,
>                            0xffff, 0);
> -    env->hflags &= ~HF_HALTED_MASK;
> +    env->halted = 0;
>  }
>
>  static void apic_deliver(APICState *s, uint8_t dest, uint8_t dest_mode,
>
> Modified: trunk/hw/pc.c
> ===================================================================
> --- trunk/hw/pc.c       2008-05-28 16:49:25 UTC (rev 4608)
> +++ trunk/hw/pc.c       2008-05-28 17:14:10 UTC (rev 4609)
> @@ -761,7 +761,7 @@
>             exit(1);
>         }
>         if (i != 0)
> -            env->hflags |= HF_HALTED_MASK;
> +            env->halted = 1;
>         if (smp_cpus > 1) {
>             /* XXX: enable it in all cases */
>             env->cpuid_features |= CPUID_APIC;
>
> Modified: trunk/monitor.c
> ===================================================================
> --- trunk/monitor.c     2008-05-28 16:49:25 UTC (rev 4608)
> +++ trunk/monitor.c     2008-05-28 17:14:10 UTC (rev 4609)
> @@ -314,21 +314,15 @@
>                     env->cpu_index);
>  #if defined(TARGET_I386)
>         term_printf(" pc=0x" TARGET_FMT_lx, env->eip + env->segs[R_CS].base);
> -        if (env->hflags & HF_HALTED_MASK)
> -            term_printf(" (halted)");
>  #elif defined(TARGET_PPC)
>         term_printf(" nip=0x" TARGET_FMT_lx, env->nip);
> -        if (env->halted)
> -            term_printf(" (halted)");
>  #elif defined(TARGET_SPARC)
>         term_printf(" pc=0x" TARGET_FMT_lx " npc=0x" TARGET_FMT_lx, env->pc, 
> env->npc);
> -        if (env->halted)
> -            term_printf(" (halted)");
>  #elif defined(TARGET_MIPS)
>         term_printf(" PC=0x" TARGET_FMT_lx, env->PC[env->current_tc]);
> +#endif
>         if (env->halted)
>             term_printf(" (halted)");
> -#endif
>         term_printf("\n");
>     }
>  }
>
> Modified: trunk/target-alpha/cpu.h
> ===================================================================
> --- trunk/target-alpha/cpu.h    2008-05-28 16:49:25 UTC (rev 4608)
> +++ trunk/target-alpha/cpu.h    2008-05-28 17:14:10 UTC (rev 4609)
> @@ -285,7 +285,6 @@
>     jmp_buf jmp_env;
>     int user_mode_only; /* user mode only simulation */
>     uint32_t hflags;
> -    int halted;
>
>     int exception_index;
>     int error_code;
>
> Modified: trunk/target-arm/cpu.h
> ===================================================================
> --- trunk/target-arm/cpu.h      2008-05-28 16:49:25 UTC (rev 4608)
> +++ trunk/target-arm/cpu.h      2008-05-28 17:14:10 UTC (rev 4609)
> @@ -160,7 +160,6 @@
>     int exception_index;
>     int interrupt_request;
>     int user_mode_only;
> -    int halted;
>
>     /* VFP coprocessor state.  */
>     struct {
>
> Modified: trunk/target-cris/cpu.h
> ===================================================================
> --- trunk/target-cris/cpu.h     2008-05-28 16:49:25 UTC (rev 4608)
> +++ trunk/target-cris/cpu.h     2008-05-28 17:14:10 UTC (rev 4609)
> @@ -157,7 +157,6 @@
>
>        int features;
>        int user_mode_only;
> -       int halted;
>
>        jmp_buf jmp_env;
>        CPU_COMMON
>
> Modified: trunk/target-i386/cpu.h
> ===================================================================
> --- trunk/target-i386/cpu.h     2008-05-28 16:49:25 UTC (rev 4608)
> +++ trunk/target-i386/cpu.h     2008-05-28 17:14:10 UTC (rev 4609)
> @@ -119,7 +119,7 @@
>  #define ID_MASK                 0x00200000
>
>  /* hidden flags - used internally by qemu to represent additional cpu
> -   states. Only the CPL, INHIBIT_IRQ and HALTED are not redundant. We avoid
> +   states. Only the CPL and INHIBIT_IRQ are not redundant. We avoid
>    using the IOPL_MASK, TF_MASK and VM_MASK bit position to ease oring
>    with eflags. */
>  /* current cpl */
> @@ -144,7 +144,6 @@
>  #define HF_CS64_SHIFT       15 /* only used on x86_64: 64 bit code segment  
> */
>  #define HF_OSFXSR_SHIFT     16 /* CR4.OSFXSR */
>  #define HF_VM_SHIFT         17 /* must be same as eflags */
> -#define HF_HALTED_SHIFT     18 /* CPU halted */
>  #define HF_SMM_SHIFT        19 /* CPU in SMM mode */
>  #define HF_GIF_SHIFT        20 /* if set CPU takes interrupts */
>  #define HF_HIF_SHIFT        21 /* shadow copy of IF_MASK when in SVM */
> @@ -166,7 +165,6 @@
>  #define HF_LMA_MASK          (1 << HF_LMA_SHIFT)
>  #define HF_CS64_MASK         (1 << HF_CS64_SHIFT)
>  #define HF_OSFXSR_MASK       (1 << HF_OSFXSR_SHIFT)
> -#define HF_HALTED_MASK       (1 << HF_HALTED_SHIFT)
>  #define HF_SMM_MASK          (1 << HF_SMM_SHIFT)
>  #define HF_GIF_MASK          (1 << HF_GIF_SHIFT)
>  #define HF_HIF_MASK          (1 << HF_HIF_SHIFT)
>
> Modified: trunk/target-i386/exec.h
> ===================================================================
> --- trunk/target-i386/exec.h    2008-05-28 16:49:25 UTC (rev 4608)
> +++ trunk/target-i386/exec.h    2008-05-28 17:14:10 UTC (rev 4609)
> @@ -385,13 +385,13 @@
>
>  static inline int cpu_halted(CPUState *env) {
>     /* handle exit of HALTED state */
> -    if (!(env->hflags & HF_HALTED_MASK))
> +    if (!env->halted)
>         return 0;
>     /* disable halt condition */
>     if (((env->interrupt_request & CPU_INTERRUPT_HARD) &&
>          (env->eflags & IF_MASK)) ||
>         (env->interrupt_request & CPU_INTERRUPT_NMI)) {
> -        env->hflags &= ~HF_HALTED_MASK;
> +        env->halted = 0;
>         return 0;
>     }
>     return EXCP_HALTED;
>
> Modified: trunk/target-i386/helper.c
> ===================================================================
> --- trunk/target-i386/helper.c  2008-05-28 16:49:25 UTC (rev 4608)
> +++ trunk/target-i386/helper.c  2008-05-28 17:14:10 UTC (rev 4609)
> @@ -515,7 +515,7 @@
>                     (env->hflags >> HF_INHIBIT_IRQ_SHIFT) & 1,
>                     (int)(env->a20_mask >> 20) & 1,
>                     (env->hflags >> HF_SMM_SHIFT) & 1,
> -                    (env->hflags >> HF_HALTED_SHIFT) & 1);
> +                    env->halted);
>     } else
>  #endif
>     {
> @@ -542,7 +542,7 @@
>                     (env->hflags >> HF_INHIBIT_IRQ_SHIFT) & 1,
>                     (int)(env->a20_mask >> 20) & 1,
>                     (env->hflags >> HF_SMM_SHIFT) & 1,
> -                    (env->hflags >> HF_HALTED_SHIFT) & 1);
> +                    env->halted);
>     }
>
>  #ifdef TARGET_X86_64
>
> Modified: trunk/target-i386/op_helper.c
> ===================================================================
> --- trunk/target-i386/op_helper.c       2008-05-28 16:49:25 UTC (rev 4608)
> +++ trunk/target-i386/op_helper.c       2008-05-28 17:14:10 UTC (rev 4609)
> @@ -4546,7 +4546,7 @@
>     helper_svm_check_intercept_param(SVM_EXIT_HLT, 0);
>
>     env->hflags &= ~HF_INHIBIT_IRQ_MASK; /* needed if sti is just before */
> -    env->hflags |= HF_HALTED_MASK;
> +    env->halted = 1;
>     env->exception_index = EXCP_HLT;
>     cpu_loop_exit();
>  }
>
> Modified: trunk/target-m68k/cpu.h
> ===================================================================
> --- trunk/target-m68k/cpu.h     2008-05-28 16:49:25 UTC (rev 4608)
> +++ trunk/target-m68k/cpu.h     2008-05-28 17:14:10 UTC (rev 4609)
> @@ -108,7 +108,6 @@
>     int exception_index;
>     int interrupt_request;
>     int user_mode_only;
> -    uint32_t halted;
>
>     int pending_vector;
>     int pending_level;
>
> Modified: trunk/target-mips/cpu.h
> ===================================================================
> --- trunk/target-mips/cpu.h     2008-05-28 16:49:25 UTC (rev 4608)
> +++ trunk/target-mips/cpu.h     2008-05-28 17:14:10 UTC (rev 4609)
> @@ -449,8 +449,6 @@
>     target_ulong btarget;        /* Jump / branch target               */
>     int bcond;                   /* Branch condition (if needed)       */
>
> -    int halted; /* TRUE if the CPU is in suspend state */
> -
>     int SYNCI_Step; /* Address step size for SYNCI */
>     int CCRes; /* Cycle count resolution/divisor */
>     uint32_t CP0_Status_rw_bitmask; /* Read/write bits in CP0_Status */
>
> Modified: trunk/target-ppc/cpu.h
> ===================================================================
> --- trunk/target-ppc/cpu.h      2008-05-28 16:49:25 UTC (rev 4608)
> +++ trunk/target-ppc/cpu.h      2008-05-28 17:14:10 UTC (rev 4609)
> @@ -586,8 +586,6 @@
>
>     CPU_COMMON
>
> -    int halted; /* TRUE if the CPU is in suspend state */
> -
>     int access_type; /* when a memory exception occurs, the access
>                         type is stored here */
>
>
> Modified: trunk/target-sh4/cpu.h
> ===================================================================
> --- trunk/target-sh4/cpu.h      2008-05-28 16:49:25 UTC (rev 4608)
> +++ trunk/target-sh4/cpu.h      2008-05-28 17:14:10 UTC (rev 4609)
> @@ -117,7 +117,6 @@
>     jmp_buf jmp_env;
>     int user_mode_only;
>     int interrupt_request;
> -    int halted;
>     int exception_index;
>      CPU_COMMON tlb_t utlb[UTLB_SIZE]; /* unified translation table */
>     tlb_t itlb[ITLB_SIZE];     /* instruction translation table */
>
> Modified: trunk/target-sparc/cpu.h
> ===================================================================
> --- trunk/target-sparc/cpu.h    2008-05-28 16:49:25 UTC (rev 4608)
> +++ trunk/target-sparc/cpu.h    2008-05-28 17:14:10 UTC (rev 4609)
> @@ -219,7 +219,6 @@
>     int exception_index;
>     int interrupt_index;
>     int interrupt_request;
> -    int halted;
>     uint32_t mmu_bm;
>     uint32_t mmu_ctpr_mask;
>     uint32_t mmu_cxr_mask;
>
>
>
>
>



-- 
Glauber Costa.
"Free as in Freedom"
http://glommer.net

"The less confident you are, the more serious you have to act."




reply via email to

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