Mov muldiv64 to qemu-common.h (Thus unbreaking gus)
Signed-off-by: malc <av1474@comtv.ru>
This commit is contained in:
		
							parent
							
								
									174b2877b0
								
							
						
					
					
						commit
						338b922edd
					
				| @ -20,7 +20,6 @@ | ||||
|  */ | ||||
| #include "hw.h" | ||||
| #include "omap.h" | ||||
| #include "qemu-timer.h" /* for muldiv64() */ | ||||
| 
 | ||||
| struct clk { | ||||
|     const char *name; | ||||
|  | ||||
| @ -309,6 +309,30 @@ static inline uint8_t from_bcd(uint8_t val) | ||||
|     return ((val >> 4) * 10) + (val & 0x0f); | ||||
| } | ||||
| 
 | ||||
| /* compute with 96 bit intermediate result: (a*b)/c */ | ||||
| static inline uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c) | ||||
| { | ||||
|     union { | ||||
|         uint64_t ll; | ||||
|         struct { | ||||
| #ifdef HOST_WORDS_BIGENDIAN | ||||
|             uint32_t high, low; | ||||
| #else | ||||
|             uint32_t low, high; | ||||
| #endif | ||||
|         } l; | ||||
|     } u, res; | ||||
|     uint64_t rl, rh; | ||||
| 
 | ||||
|     u.ll = a; | ||||
|     rl = (uint64_t)u.l.low * (uint64_t)b; | ||||
|     rh = (uint64_t)u.l.high * (uint64_t)b; | ||||
|     rh += (rl >> 32); | ||||
|     res.l.high = rh / c; | ||||
|     res.l.low = (((rh % c) << 32) + (rl & 0xffffffff)) / c; | ||||
|     return res.ll; | ||||
| } | ||||
| 
 | ||||
| #include "module.h" | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										24
									
								
								qemu-timer.h
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								qemu-timer.h
									
									
									
									
									
								
							| @ -59,30 +59,6 @@ static inline int64_t get_ticks_per_sec(void) | ||||
|     return 1000000000LL; | ||||
| } | ||||
| 
 | ||||
| /* compute with 96 bit intermediate result: (a*b)/c */ | ||||
| static inline uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c) | ||||
| { | ||||
|     union { | ||||
|         uint64_t ll; | ||||
|         struct { | ||||
| #ifdef HOST_WORDS_BIGENDIAN | ||||
|             uint32_t high, low; | ||||
| #else | ||||
|             uint32_t low, high; | ||||
| #endif | ||||
|         } l; | ||||
|     } u, res; | ||||
|     uint64_t rl, rh; | ||||
| 
 | ||||
|     u.ll = a; | ||||
|     rl = (uint64_t)u.l.low * (uint64_t)b; | ||||
|     rh = (uint64_t)u.l.high * (uint64_t)b; | ||||
|     rh += (rl >> 32); | ||||
|     res.l.high = rh / c; | ||||
|     res.l.low = (((rh % c) << 32) + (rl & 0xffffffff)) / c; | ||||
|     return res.ll; | ||||
| } | ||||
| 
 | ||||
| /* real time host monotonic timer */ | ||||
| static inline int64_t get_clock_realtime(void) | ||||
| { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 malc
						malc