File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 104104#define __stswx (base ,bytes ,value ) \
105105 __asm__ __volatile__ ("mtxer %2; stswx %1,%y0" : "=Z"(*(u32*)(base)) : "r"(value), "r"(bytes) : "xer");
106106
107- #define cntlzw (_val ) ({register u32 _rval; \
108- __asm__ __volatile__("cntlzw %0, %1" : "=r"((_rval)) : "r"((_val))); _rval;})
109-
110107#define _CPU_MSR_GET ( _msr_value ) \
111108 do { \
112109 _msr_value = 0; \
@@ -201,6 +198,16 @@ static inline u64 bswap64(u64 val)
201198}
202199#endif
203200
201+ static inline u32 cntlzw (u32 val )
202+ {
203+ return __builtin_clzg (val , 32 );
204+ }
205+
206+ static inline u32 cntlzd (u64 val )
207+ {
208+ return __builtin_clzg (val , 64 );
209+ }
210+
204211// Basic I/O
205212
206213static inline u32 read32 (u32 addr )
Original file line number Diff line number Diff line change @@ -919,7 +919,7 @@ u32 PAD_ScanPads(void)
919919 }
920920 }
921921
922- state |= (state & (PAD_TRIGGER_R | PAD_TRIGGER_L )) << (__builtin_clz (PAD_TRIGGER_R | PAD_TRIGGER_L ) - __builtin_clz (PADEX_TRIGGER_R | PADEX_TRIGGER_L ));
922+ state |= (state & (PAD_TRIGGER_R | PAD_TRIGGER_L )) << (cntlzw (PAD_TRIGGER_R | PAD_TRIGGER_L ) - cntlzw (PADEX_TRIGGER_R | PADEX_TRIGGER_L ));
923923
924924 oldstate = __pad_keys [i ].state ;
925925 __pad_keys [i ].up = ~state & oldstate ;
@@ -1011,7 +1011,7 @@ u32 PAD_ScanPads(void)
10111011 if (steering .gas > (UINT8_MAX /2 )) state |= PADEX_PEDAL_GAS ;
10121012 if (steering .brake > (UINT8_MAX /2 )) state |= PADEX_PEDAL_BRAKE ;
10131013
1014- state |= (state & (PAD_TRIGGER_R | PAD_TRIGGER_L )) << (__builtin_clz (PAD_TRIGGER_R | PAD_TRIGGER_L ) - __builtin_clz (PADEX_TRIGGER_R | PADEX_TRIGGER_L ));
1014+ state |= (state & (PAD_TRIGGER_R | PAD_TRIGGER_L )) << (cntlzw (PAD_TRIGGER_R | PAD_TRIGGER_L ) - cntlzw (PADEX_TRIGGER_R | PADEX_TRIGGER_L ));
10151015
10161016 oldstate = __pad_keys [i ].state ;
10171017 __pad_keys [i ].up = ~state & oldstate ;
Original file line number Diff line number Diff line change @@ -1780,19 +1780,6 @@ static void printDebugCalculations(void)
17801780}
17811781#endif
17821782
1783- static __inline__ u32 cntlzd (u64 bit )
1784- {
1785- u32 hi ,lo ,value = 0 ;
1786-
1787- hi = (u32 )(bit >>32 );
1788- lo = (u32 )(bit & -1 );
1789-
1790- value = cntlzw (hi );
1791- if (value >=32 ) value += cntlzw (lo );
1792-
1793- return value ;
1794- }
1795-
17961783static const struct _timing * __gettiming (u32 vimode )
17971784{
17981785 switch (vimode ) {
You can’t perform that action at this time.
0 commit comments