qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 1/4] move PPC insn flags to cpu.h


From: Aurelien Jarno
Subject: Re: [Qemu-devel] [PATCH 1/4] move PPC insn flags to cpu.h
Date: Sat, 28 Mar 2009 23:58:05 +0100
User-agent: Mutt/1.5.18 (2008-05-17)

On Sat, Mar 28, 2009 at 02:30:14PM -0700, Nathan Froyd wrote:
> It makes more sense to put the flags in the header file than in the
> middle of translate.c.

If those definition are not used outside of translate.c, it makes no
sense to move them out to a header file included at multiple places.

OTOH, I agree that having them in the middle of translate.c is a bit
strange. Maybe we should move them at the top of the file along with
other definitions? In that case, GEN_HANDLER* and EXTRACT_HELPER are
also good candidates for the move.

> Signed-off-by: Nathan Froyd <address@hidden>
> ---
>  target-ppc/cpu.h       |  138 
> ++++++++++++++++++++++++++++++++++++++++++++++++
>  target-ppc/translate.c |  138 
> ------------------------------------------------
>  2 files changed, 138 insertions(+), 138 deletions(-)
> 
> diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h
> index 87b3460..e11af60 100644
> --- a/target-ppc/cpu.h
> +++ b/target-ppc/cpu.h
> @@ -283,6 +283,144 @@ enum powerpc_input_t {
>  #define PPC_INPUT(env) (env->bus_model)
>  
>  
> /*****************************************************************************/
> +/* PowerPC Instructions types definitions                                    
> */
> +enum {
> +    PPC_NONE           = 0x0000000000000000ULL,
> +    /* PowerPC base instructions set                                         
> */
> +    PPC_INSNS_BASE     = 0x0000000000000001ULL,
> +    /*   integer operations instructions                                     
> */
> +#define PPC_INTEGER PPC_INSNS_BASE
> +    /*   flow control instructions                                           
> */
> +#define PPC_FLOW    PPC_INSNS_BASE
> +    /*   virtual memory instructions                                         
> */
> +#define PPC_MEM     PPC_INSNS_BASE
> +    /*   ld/st with reservation instructions                                 
> */
> +#define PPC_RES     PPC_INSNS_BASE
> +    /*   spr/msr access instructions                                         
> */
> +#define PPC_MISC    PPC_INSNS_BASE
> +    /* Deprecated instruction sets                                           
> */
> +    /*   Original POWER instruction set                                      
> */
> +    PPC_POWER          = 0x0000000000000002ULL,
> +    /*   POWER2 instruction set extension                                    
> */
> +    PPC_POWER2         = 0x0000000000000004ULL,
> +    /*   Power RTC support                                                   
> */
> +    PPC_POWER_RTC      = 0x0000000000000008ULL,
> +    /*   Power-to-PowerPC bridge (601)                                       
> */
> +    PPC_POWER_BR       = 0x0000000000000010ULL,
> +    /* 64 bits PowerPC instruction set                                       
> */
> +    PPC_64B            = 0x0000000000000020ULL,
> +    /*   New 64 bits extensions (PowerPC 2.0x)                               
> */
> +    PPC_64BX           = 0x0000000000000040ULL,
> +    /*   64 bits hypervisor extensions                                       
> */
> +    PPC_64H            = 0x0000000000000080ULL,
> +    /*   New wait instruction (PowerPC 2.0x)                                 
> */
> +    PPC_WAIT           = 0x0000000000000100ULL,
> +    /*   Time base mftb instruction                                          
> */
> +    PPC_MFTB           = 0x0000000000000200ULL,
> +
> +    /* Fixed-point unit extensions                                           
> */
> +    /*   PowerPC 602 specific                                                
> */
> +    PPC_602_SPEC       = 0x0000000000000400ULL,
> +    /*   isel instruction                                                    
> */
> +    PPC_ISEL           = 0x0000000000000800ULL,
> +    /*   popcntb instruction                                                 
> */
> +    PPC_POPCNTB        = 0x0000000000001000ULL,
> +    /*   string load / store                                                 
> */
> +    PPC_STRING         = 0x0000000000002000ULL,
> +
> +    /* Floating-point unit extensions                                        
> */
> +    /*   Optional floating point instructions                                
> */
> +    PPC_FLOAT          = 0x0000000000010000ULL,
> +    /* New floating-point extensions (PowerPC 2.0x)                          
> */
> +    PPC_FLOAT_EXT      = 0x0000000000020000ULL,
> +    PPC_FLOAT_FSQRT    = 0x0000000000040000ULL,
> +    PPC_FLOAT_FRES     = 0x0000000000080000ULL,
> +    PPC_FLOAT_FRSQRTE  = 0x0000000000100000ULL,
> +    PPC_FLOAT_FRSQRTES = 0x0000000000200000ULL,
> +    PPC_FLOAT_FSEL     = 0x0000000000400000ULL,
> +    PPC_FLOAT_STFIWX   = 0x0000000000800000ULL,
> +
> +    /* Vector/SIMD extensions                                                
> */
> +    /*   Altivec support                                                     
> */
> +    PPC_ALTIVEC        = 0x0000000001000000ULL,
> +    /*   PowerPC 2.03 SPE extension                                          
> */
> +    PPC_SPE            = 0x0000000002000000ULL,
> +    /*   PowerPC 2.03 SPE single-precision floating-point extension          
> */
> +    PPC_SPE_SINGLE     = 0x0000000004000000ULL,
> +    /*   PowerPC 2.03 SPE double-precision floating-point extension          
> */
> +    PPC_SPE_DOUBLE     = 0x0000000008000000ULL,
> +
> +    /* Optional memory control instructions                                  
> */
> +    PPC_MEM_TLBIA      = 0x0000000010000000ULL,
> +    PPC_MEM_TLBIE      = 0x0000000020000000ULL,
> +    PPC_MEM_TLBSYNC    = 0x0000000040000000ULL,
> +    /*   sync instruction                                                    
> */
> +    PPC_MEM_SYNC       = 0x0000000080000000ULL,
> +    /*   eieio instruction                                                   
> */
> +    PPC_MEM_EIEIO      = 0x0000000100000000ULL,
> +
> +    /* Cache control instructions                                            
> */
> +    PPC_CACHE          = 0x0000000200000000ULL,
> +    /*   icbi instruction                                                    
> */
> +    PPC_CACHE_ICBI     = 0x0000000400000000ULL,
> +    /*   dcbz instruction with fixed cache line size                         
> */
> +    PPC_CACHE_DCBZ     = 0x0000000800000000ULL,
> +    /*   dcbz instruction with tunable cache line size                       
> */
> +    PPC_CACHE_DCBZT    = 0x0000001000000000ULL,
> +    /*   dcba instruction                                                    
> */
> +    PPC_CACHE_DCBA     = 0x0000002000000000ULL,
> +    /*   Freescale cache locking instructions                                
> */
> +    PPC_CACHE_LOCK     = 0x0000004000000000ULL,
> +
> +    /* MMU related extensions                                                
> */
> +    /*   external control instructions                                       
> */
> +    PPC_EXTERN         = 0x0000010000000000ULL,
> +    /*   segment register access instructions                                
> */
> +    PPC_SEGMENT        = 0x0000020000000000ULL,
> +    /*   PowerPC 6xx TLB management instructions                             
> */
> +    PPC_6xx_TLB        = 0x0000040000000000ULL,
> +    /* PowerPC 74xx TLB management instructions                              
> */
> +    PPC_74xx_TLB       = 0x0000080000000000ULL,
> +    /*   PowerPC 40x TLB management instructions                             
> */
> +    PPC_40x_TLB        = 0x0000100000000000ULL,
> +    /*   segment register access instructions for PowerPC 64 "bridge"        
> */
> +    PPC_SEGMENT_64B    = 0x0000200000000000ULL,
> +    /*   SLB management                                                      
> */
> +    PPC_SLBI           = 0x0000400000000000ULL,
> +
> +    /* Embedded PowerPC dedicated instructions                               
> */
> +    PPC_WRTEE          = 0x0001000000000000ULL,
> +    /* PowerPC 40x exception model                                           
> */
> +    PPC_40x_EXCP       = 0x0002000000000000ULL,
> +    /* PowerPC 405 Mac instructions                                          
> */
> +    PPC_405_MAC        = 0x0004000000000000ULL,
> +    /* PowerPC 440 specific instructions                                     
> */
> +    PPC_440_SPEC       = 0x0008000000000000ULL,
> +    /* BookE (embedded) PowerPC specification                                
> */
> +    PPC_BOOKE          = 0x0010000000000000ULL,
> +    /* mfapidi instruction                                                   
> */
> +    PPC_MFAPIDI        = 0x0020000000000000ULL,
> +    /* tlbiva instruction                                                    
> */
> +    PPC_TLBIVA         = 0x0040000000000000ULL,
> +    /* tlbivax instruction                                                   
> */
> +    PPC_TLBIVAX        = 0x0080000000000000ULL,
> +    /* PowerPC 4xx dedicated instructions                                    
> */
> +    PPC_4xx_COMMON     = 0x0100000000000000ULL,
> +    /* PowerPC 40x ibct instructions                                         
> */
> +    PPC_40x_ICBT       = 0x0200000000000000ULL,
> +    /* rfmci is not implemented in all BookE PowerPC                         
> */
> +    PPC_RFMCI          = 0x0400000000000000ULL,
> +    /* rfdi instruction                                                      
> */
> +    PPC_RFDI           = 0x0800000000000000ULL,
> +    /* DCR accesses                                                          
> */
> +    PPC_DCR            = 0x1000000000000000ULL,
> +    /* DCR extended accesse                                                  
> */
> +    PPC_DCRX           = 0x2000000000000000ULL,
> +    /* user-mode DCR access, implemented in PowerPC 460                      
> */
> +    PPC_DCRUX          = 0x4000000000000000ULL,
> +};
> +
> +/*****************************************************************************/
>  typedef struct ppc_def_t ppc_def_t;
>  typedef struct opc_handler_t opc_handler_t;
>  
> diff --git a/target-ppc/translate.c b/target-ppc/translate.c
> index 952ee99..b89d42f 100644
> --- a/target-ppc/translate.c
> +++ b/target-ppc/translate.c
> @@ -450,144 +450,6 @@ static always_inline target_ulong MASK (uint32_t start, 
> uint32_t end)
>  }
>  
>  
> /*****************************************************************************/
> -/* PowerPC Instructions types definitions                                    
> */
> -enum {
> -    PPC_NONE           = 0x0000000000000000ULL,
> -    /* PowerPC base instructions set                                         
> */
> -    PPC_INSNS_BASE     = 0x0000000000000001ULL,
> -    /*   integer operations instructions                                     
> */
> -#define PPC_INTEGER PPC_INSNS_BASE
> -    /*   flow control instructions                                           
> */
> -#define PPC_FLOW    PPC_INSNS_BASE
> -    /*   virtual memory instructions                                         
> */
> -#define PPC_MEM     PPC_INSNS_BASE
> -    /*   ld/st with reservation instructions                                 
> */
> -#define PPC_RES     PPC_INSNS_BASE
> -    /*   spr/msr access instructions                                         
> */
> -#define PPC_MISC    PPC_INSNS_BASE
> -    /* Deprecated instruction sets                                           
> */
> -    /*   Original POWER instruction set                                      
> */
> -    PPC_POWER          = 0x0000000000000002ULL,
> -    /*   POWER2 instruction set extension                                    
> */
> -    PPC_POWER2         = 0x0000000000000004ULL,
> -    /*   Power RTC support                                                   
> */
> -    PPC_POWER_RTC      = 0x0000000000000008ULL,
> -    /*   Power-to-PowerPC bridge (601)                                       
> */
> -    PPC_POWER_BR       = 0x0000000000000010ULL,
> -    /* 64 bits PowerPC instruction set                                       
> */
> -    PPC_64B            = 0x0000000000000020ULL,
> -    /*   New 64 bits extensions (PowerPC 2.0x)                               
> */
> -    PPC_64BX           = 0x0000000000000040ULL,
> -    /*   64 bits hypervisor extensions                                       
> */
> -    PPC_64H            = 0x0000000000000080ULL,
> -    /*   New wait instruction (PowerPC 2.0x)                                 
> */
> -    PPC_WAIT           = 0x0000000000000100ULL,
> -    /*   Time base mftb instruction                                          
> */
> -    PPC_MFTB           = 0x0000000000000200ULL,
> -
> -    /* Fixed-point unit extensions                                           
> */
> -    /*   PowerPC 602 specific                                                
> */
> -    PPC_602_SPEC       = 0x0000000000000400ULL,
> -    /*   isel instruction                                                    
> */
> -    PPC_ISEL           = 0x0000000000000800ULL,
> -    /*   popcntb instruction                                                 
> */
> -    PPC_POPCNTB        = 0x0000000000001000ULL,
> -    /*   string load / store                                                 
> */
> -    PPC_STRING         = 0x0000000000002000ULL,
> -
> -    /* Floating-point unit extensions                                        
> */
> -    /*   Optional floating point instructions                                
> */
> -    PPC_FLOAT          = 0x0000000000010000ULL,
> -    /* New floating-point extensions (PowerPC 2.0x)                          
> */
> -    PPC_FLOAT_EXT      = 0x0000000000020000ULL,
> -    PPC_FLOAT_FSQRT    = 0x0000000000040000ULL,
> -    PPC_FLOAT_FRES     = 0x0000000000080000ULL,
> -    PPC_FLOAT_FRSQRTE  = 0x0000000000100000ULL,
> -    PPC_FLOAT_FRSQRTES = 0x0000000000200000ULL,
> -    PPC_FLOAT_FSEL     = 0x0000000000400000ULL,
> -    PPC_FLOAT_STFIWX   = 0x0000000000800000ULL,
> -
> -    /* Vector/SIMD extensions                                                
> */
> -    /*   Altivec support                                                     
> */
> -    PPC_ALTIVEC        = 0x0000000001000000ULL,
> -    /*   PowerPC 2.03 SPE extension                                          
> */
> -    PPC_SPE            = 0x0000000002000000ULL,
> -    /*   PowerPC 2.03 SPE single-precision floating-point extension          
> */
> -    PPC_SPE_SINGLE     = 0x0000000004000000ULL,
> -    /*   PowerPC 2.03 SPE double-precision floating-point extension          
> */
> -    PPC_SPE_DOUBLE     = 0x0000000008000000ULL,
> -
> -    /* Optional memory control instructions                                  
> */
> -    PPC_MEM_TLBIA      = 0x0000000010000000ULL,
> -    PPC_MEM_TLBIE      = 0x0000000020000000ULL,
> -    PPC_MEM_TLBSYNC    = 0x0000000040000000ULL,
> -    /*   sync instruction                                                    
> */
> -    PPC_MEM_SYNC       = 0x0000000080000000ULL,
> -    /*   eieio instruction                                                   
> */
> -    PPC_MEM_EIEIO      = 0x0000000100000000ULL,
> -
> -    /* Cache control instructions                                            
> */
> -    PPC_CACHE          = 0x0000000200000000ULL,
> -    /*   icbi instruction                                                    
> */
> -    PPC_CACHE_ICBI     = 0x0000000400000000ULL,
> -    /*   dcbz instruction with fixed cache line size                         
> */
> -    PPC_CACHE_DCBZ     = 0x0000000800000000ULL,
> -    /*   dcbz instruction with tunable cache line size                       
> */
> -    PPC_CACHE_DCBZT    = 0x0000001000000000ULL,
> -    /*   dcba instruction                                                    
> */
> -    PPC_CACHE_DCBA     = 0x0000002000000000ULL,
> -    /*   Freescale cache locking instructions                                
> */
> -    PPC_CACHE_LOCK     = 0x0000004000000000ULL,
> -
> -    /* MMU related extensions                                                
> */
> -    /*   external control instructions                                       
> */
> -    PPC_EXTERN         = 0x0000010000000000ULL,
> -    /*   segment register access instructions                                
> */
> -    PPC_SEGMENT        = 0x0000020000000000ULL,
> -    /*   PowerPC 6xx TLB management instructions                             
> */
> -    PPC_6xx_TLB        = 0x0000040000000000ULL,
> -    /* PowerPC 74xx TLB management instructions                              
> */
> -    PPC_74xx_TLB       = 0x0000080000000000ULL,
> -    /*   PowerPC 40x TLB management instructions                             
> */
> -    PPC_40x_TLB        = 0x0000100000000000ULL,
> -    /*   segment register access instructions for PowerPC 64 "bridge"        
> */
> -    PPC_SEGMENT_64B    = 0x0000200000000000ULL,
> -    /*   SLB management                                                      
> */
> -    PPC_SLBI           = 0x0000400000000000ULL,
> -
> -    /* Embedded PowerPC dedicated instructions                               
> */
> -    PPC_WRTEE          = 0x0001000000000000ULL,
> -    /* PowerPC 40x exception model                                           
> */
> -    PPC_40x_EXCP       = 0x0002000000000000ULL,
> -    /* PowerPC 405 Mac instructions                                          
> */
> -    PPC_405_MAC        = 0x0004000000000000ULL,
> -    /* PowerPC 440 specific instructions                                     
> */
> -    PPC_440_SPEC       = 0x0008000000000000ULL,
> -    /* BookE (embedded) PowerPC specification                                
> */
> -    PPC_BOOKE          = 0x0010000000000000ULL,
> -    /* mfapidi instruction                                                   
> */
> -    PPC_MFAPIDI        = 0x0020000000000000ULL,
> -    /* tlbiva instruction                                                    
> */
> -    PPC_TLBIVA         = 0x0040000000000000ULL,
> -    /* tlbivax instruction                                                   
> */
> -    PPC_TLBIVAX        = 0x0080000000000000ULL,
> -    /* PowerPC 4xx dedicated instructions                                    
> */
> -    PPC_4xx_COMMON     = 0x0100000000000000ULL,
> -    /* PowerPC 40x ibct instructions                                         
> */
> -    PPC_40x_ICBT       = 0x0200000000000000ULL,
> -    /* rfmci is not implemented in all BookE PowerPC                         
> */
> -    PPC_RFMCI          = 0x0400000000000000ULL,
> -    /* rfdi instruction                                                      
> */
> -    PPC_RFDI           = 0x0800000000000000ULL,
> -    /* DCR accesses                                                          
> */
> -    PPC_DCR            = 0x1000000000000000ULL,
> -    /* DCR extended accesse                                                  
> */
> -    PPC_DCRX           = 0x2000000000000000ULL,
> -    /* user-mode DCR access, implemented in PowerPC 460                      
> */
> -    PPC_DCRUX          = 0x4000000000000000ULL,
> -};
> -
> -/*****************************************************************************/
>  /* PowerPC instructions table                                                
> */
>  #if HOST_LONG_BITS == 64
>  #define OPC_ALIGN 8
> -- 
> 1.6.0.5
> 
> 
> 
> 

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
address@hidden                 http://www.aurel32.net




reply via email to

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