~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/sparc/include/asm/timer_64.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /arch/sparc/include/asm/timer_64.h (Version linux-6.11-rc3) and /arch/i386/include/asm-i386/timer_64.h (Version linux-3.10.108)


  1 /* SPDX-License-Identifier: GPL-2.0 */              1 
  2 /* timer.h: System timer definitions for sun5.    
  3  *                                                
  4  * Copyright (C) 1997, 2008 David S. Miller (d    
  5  */                                               
  6                                                   
  7 #ifndef _SPARC64_TIMER_H                          
  8 #define _SPARC64_TIMER_H                          
  9                                                   
 10 #include <uapi/asm/asi.h>                         
 11 #include <linux/types.h>                          
 12 #include <linux/init.h>                           
 13                                                   
 14 /* The most frequently accessed fields should     
 15  * to fit into the same cacheline.                
 16  */                                               
 17 struct sparc64_tick_ops {                         
 18         unsigned long ticks_per_nsec_quotient;    
 19         unsigned long offset;                     
 20         unsigned long long (*get_tick)(void);     
 21         int (*add_compare)(unsigned long);        
 22         unsigned long softint_mask;               
 23         void (*disable_irq)(void);                
 24                                                   
 25         void (*init_tick)(void);                  
 26         unsigned long (*add_tick)(unsigned lon    
 27         unsigned long (*get_frequency)(void);     
 28         unsigned long frequency;                  
 29                                                   
 30         char *name;                               
 31 };                                                
 32                                                   
 33 extern struct sparc64_tick_ops *tick_ops;         
 34                                                   
 35 unsigned long sparc64_get_clock_tick(unsigned     
 36 void setup_sparc64_timer(void);                   
 37                                                   
 38 #define TICK_PRIV_BIT           BIT(63)           
 39 #define TICKCMP_IRQ_BIT         BIT(63)           
 40                                                   
 41 #define HBIRD_STICKCMP_ADDR     0x1fe0000f060U    
 42 #define HBIRD_STICK_ADDR        0x1fe0000f070U    
 43                                                   
 44 #define GET_TICK_NINSTR         13                
 45 struct get_tick_patch {                           
 46         unsigned int    addr;                     
 47         unsigned int    tick[GET_TICK_NINSTR];    
 48         unsigned int    stick[GET_TICK_NINSTR]    
 49 };                                                
 50                                                   
 51 extern struct get_tick_patch __get_tick_patch;    
 52 extern struct get_tick_patch __get_tick_patch_    
 53                                                   
 54 static inline unsigned long get_tick(void)        
 55 {                                                 
 56         unsigned long tick, tmp1, tmp2;           
 57                                                   
 58         __asm__ __volatile__(                     
 59         /* read hbtick 13 instructions */         
 60         "661:\n"                                  
 61         "       mov     0x1fe, %1\n"              
 62         "       sllx    %1, 0x20, %1\n"           
 63         "       sethi   %%hi(0xf000), %2\n"       
 64         "       or      %2, 0x70, %2\n"           
 65         "       or      %1, %2, %1\n"   /* %1     
 66         "       add     %1, 8, %2\n"              
 67         "       ldxa    [%2]%3, %0\n"             
 68         "       ldxa    [%1]%3, %1\n"             
 69         "       ldxa    [%2]%3, %2\n"             
 70         "       sub     %2, %0, %0\n"   /* don    
 71         "       brnz,pn %0, 661b\n"     /* res    
 72         "        sllx   %2, 32, %2\n"             
 73         "       or      %2, %1, %0\n"             
 74         /* Common/not patched code */             
 75         "       sllx    %0, 1, %0\n"              
 76         "       srlx    %0, 1, %0\n"    /* Cle    
 77         /* Beginning of patch section */          
 78         "       .section .get_tick_patch, \"ax    
 79         "       .word   661b\n"                   
 80         /* read tick 2 instructions and 11 ski    
 81         "       ba      1f\n"                     
 82         "        rd     %%tick, %0\n"             
 83         "       .skip   4 * (%4 - 2)\n"           
 84         "1:\n"                                    
 85         /* read stick 2 instructions and 11 sk    
 86         "       ba      1f\n"                     
 87         "        rd     %%asr24, %0\n"            
 88         "       .skip   4 * (%4 - 2)\n"           
 89         "1:\n"                                    
 90         /* End of patch section */                
 91         "       .previous\n"                      
 92         : "=&r" (tick), "=&r" (tmp1), "=&r" (t    
 93         : "i" (ASI_PHYS_BYPASS_EC_E), "i" (GET    
 94                                                   
 95         return tick;                              
 96 }                                                 
 97                                                   
 98 #endif /* _SPARC64_TIMER_H */                     
 99                                                   

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php