[BACK]Return to cpufunc.h CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / arch / arm / include

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/arch/arm/include/cpufunc.h between version 1.40.16.2 and 1.41

version 1.40.16.2, 2008/02/28 21:47:43 version 1.41, 2007/09/15 09:25:22
Line 46 
Line 46 
   
 #include <sys/types.h>  #include <sys/types.h>
 #include <arm/cpuconf.h>  #include <arm/cpuconf.h>
 #include <arm/armreg.h>  
   
 struct cpu_functions {  struct cpu_functions {
   
Line 156  extern struct cpu_functions cpufuncs;
Line 155  extern struct cpu_functions cpufuncs;
 extern u_int cputype;  extern u_int cputype;
   
 #define cpu_id()                cpufuncs.cf_id()  #define cpu_id()                cpufuncs.cf_id()
   #define cpu_cpwait()            cpufuncs.cf_cpwait()
   
 #define cpu_control(c, e)       cpufuncs.cf_control(c, e)  #define cpu_control(c, e)       cpufuncs.cf_control(c, e)
 #define cpu_domains(d)          cpufuncs.cf_domains(d)  #define cpu_domains(d)          cpufuncs.cf_domains(d)
Line 426  void ixp12x0_setup  (char *);
Line 426  void ixp12x0_setup  (char *);
   
 #if defined(CPU_XSCALE_80200) || defined(CPU_XSCALE_80321) || \  #if defined(CPU_XSCALE_80200) || defined(CPU_XSCALE_80321) || \
     defined(__CPU_XSCALE_PXA2XX) || defined(CPU_XSCALE_IXP425)      defined(__CPU_XSCALE_PXA2XX) || defined(CPU_XSCALE_IXP425)
   
 void    xscale_cpwait           (void);  void    xscale_cpwait           (void);
 #define cpu_cpwait()            cpufuncs.cf_cpwait()  
   
 void    xscale_cpu_sleep        (int);  void    xscale_cpu_sleep        (int);
   
Line 471  void xscale_setup  (char *);
Line 469  void xscale_setup  (char *);
 #define setttb          cpu_setttb  #define setttb          cpu_setttb
 #define drain_writebuf  cpu_drain_writebuf  #define drain_writebuf  cpu_drain_writebuf
   
 #ifndef cpu_cpwait  
 #define cpu_cpwait()  
 #endif  
   
 /*  /*
  * Macros for manipulating CPU interrupts   * Macros for manipulating CPU interrupts
  */   */
 #ifdef __PROG32  #ifdef __PROG32
 static __inline u_int32_t __set_cpsr_c(uint32_t bic, uint32_t eor) __attribute__((__unused__));  static __inline u_int32_t __set_cpsr_c(u_int bic, u_int eor) __attribute__((__unused__));
 static __inline u_int32_t disable_interrupts(uint32_t mask) __attribute__((__unused__));  
 static __inline u_int32_t enable_interrupts(uint32_t mask) __attribute__((__unused__));  
   
 static __inline uint32_t  static __inline u_int32_t
 __set_cpsr_c(uint32_t bic, uint32_t eor)  __set_cpsr_c(u_int bic, u_int eor)
 {  {
         uint32_t        tmp, ret;          u_int32_t       tmp, ret;
   
         __asm volatile(          __asm volatile(
                 "mrs     %0, cpsr\n"    /* Get the CPSR */                  "mrs     %0, cpsr\n"    /* Get the CPSR */
Line 499  __set_cpsr_c(uint32_t bic, uint32_t eor)
Line 491  __set_cpsr_c(uint32_t bic, uint32_t eor)
         return ret;          return ret;
 }  }
   
 static __inline uint32_t  #define disable_interrupts(mask)                                        \
 disable_interrupts(uint32_t mask)          (__set_cpsr_c((mask) & (I32_bit | F32_bit), \
 {                        (mask) & (I32_bit | F32_bit)))
         uint32_t        tmp, ret;  
         mask &= (I32_bit | F32_bit);  
   
         __asm volatile(  
                 "mrs     %0, cpsr\n"    /* Get the CPSR */  
                 "orr     %1, %0, %2\n"  /* set bits */  
                 "msr     cpsr_c, %1\n"  /* Set the control field of CPSR */  
         : "=&r" (ret), "=&r" (tmp)  
         : "r" (mask)  
         : "memory");  
   
         return ret;  
 }  
   
 static __inline uint32_t  
 enable_interrupts(uint32_t mask)  
 {  
         uint32_t        ret, tmp;  
         mask &= (I32_bit | F32_bit);  
   
         __asm volatile(  
                 "mrs     %0, cpsr\n"    /* Get the CPSR */  
                 "bic     %1, %0, %2\n"  /* Clear bits */  
                 "msr     cpsr_c, %1\n"  /* Set the control field of CPSR */  
         : "=&r" (ret), "=&r" (tmp)  
         : "r" (mask)  
         : "memory");  
   
         return ret;  #define enable_interrupts(mask)                                         \
 }          (__set_cpsr_c((mask) & (I32_bit | F32_bit), 0))
   
 #define restore_interrupts(old_cpsr)                                    \  #define restore_interrupts(old_cpsr)                                    \
         (__set_cpsr_c((I32_bit | F32_bit), (old_cpsr) & (I32_bit | F32_bit)))          (__set_cpsr_c((I32_bit | F32_bit), (old_cpsr) & (I32_bit | F32_bit)))

Legend:
Removed from v.1.40.16.2  
changed lines
  Added in v.1.41

CVSweb <webmaster@jp.NetBSD.org>