File indexing completed on 2025-05-11 08:24:09
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 #ifdef HAVE_CONFIG_H
0029 #include "config.h"
0030 #endif
0031
0032 #include <rtems/asm.h>
0033
0034
0035
0036
0037
0038
0039 .section ".text"
0040 .align 4
0041
0042
0043
0044
0045
0046 PUBLIC(_CPU_Counter_read)
0047 SYM(_CPU_Counter_read):
0048 sethi %hi(_SPARC_Counter + 4), %o1
0049 ld [%o1 + %lo(_SPARC_Counter + 4)], %o1
0050 or %o7, %g0, %g1
0051 call %o1, 0
0052 or %g1, %g0, %o7
0053
0054 #if defined(RTEMS_PROFILING)
0055
0056
0057
0058
0059 PUBLIC(_SPARC_Counter_read_ISR_disabled)
0060 SYM(_SPARC_Counter_read_ISR_disabled):
0061 sethi %hi(_SPARC_Counter), %o1
0062 ld [%o1 + %lo(_SPARC_Counter)], %o1
0063 or %o7, %g0, %g1
0064 call %o1, 0
0065 or %g1, %g0, %o7
0066 #endif
0067
0068 PUBLIC(_SPARC_Counter_read_default)
0069 SYM(_SPARC_Counter_read_default):
0070 sethi %hi(_SPARC_Counter + 12), %o1
0071 ld [%o1 + %lo(_SPARC_Counter + 12)], %o0
0072 add %o0, 1, %o0
0073 st %o0, [%o1 + %lo(_SPARC_Counter + 12)]
0074 jmp %o7 + 8
0075 nop
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098 PUBLIC(_SPARC_Counter_read_clock_isr_disabled)
0099 SYM(_SPARC_Counter_read_clock_isr_disabled):
0100 sethi %hi(_SPARC_Counter), %o5
0101 or %o5, %lo(_SPARC_Counter), %o5
0102 ld [%o5 + 8], %o3
0103 ld [%o5 + 12], %o4
0104 ld [%o5 + 16], %o2
0105 ld [%o3], %o0
0106 ld [%o4], %o1
0107 btst %o1, %o2
0108 bne .Lpending_isr_disabled
0109 ld [%o5 + 20], %o4
0110 jmp %o7 + 8
0111 sub %o4, %o0, %o0
0112 .Lpending_isr_disabled:
0113 ld [%o5 + 24], %o5
0114 ld [%o3], %o0
0115 add %o4, %o5, %o4
0116 jmp %o7 + 8
0117 sub %o4, %o0, %o0
0118
0119
0120
0121
0122
0123 PUBLIC(_SPARC_Counter_read_clock)
0124 PUBLIC(_SPARC_Get_timecount_clock)
0125 SYM(_SPARC_Counter_read_clock):
0126 SYM(_SPARC_Get_timecount_clock):
0127 sethi %hi(_SPARC_Counter), %o5
0128 or %o5, %lo(_SPARC_Counter), %o5
0129 ta SPARC_SWTRAP_IRQDIS
0130 ld [%o5 + 8], %o3
0131 ld [%o5 + 12], %o4
0132 ld [%o5 + 16], %o2
0133 ld [%o3], %o0
0134 ld [%o4], %o1
0135 btst %o1, %o2
0136 bne .Lpending
0137 ld [%o5 + 20], %o4
0138 ta SPARC_SWTRAP_IRQEN
0139 #ifdef __FIX_LEON3FT_TN0018
0140
0141 nop
0142 #endif
0143 jmp %o7 + 8
0144 sub %o4, %o0, %o0
0145 .Lpending:
0146 ld [%o5 + 24], %o5
0147 ld [%o3], %o0
0148 ta SPARC_SWTRAP_IRQEN
0149 add %o4, %o5, %o4
0150 jmp %o7 + 8
0151 sub %o4, %o0, %o0