1 /* 2 * Copyright 2006, Ingo Weinhold <bonefish@cs.tu-berlin.de>. 3 * All rights reserved. Distributed under the terms of the MIT License. 4 */ 5 6 #include <OS.h> 7 8 #include <arch_cpu.h> 9 #include <libroot_private.h> 10 #include <real_time_data.h> 11 12 13 static vint32 *sConversionFactor; 14 15 void 16 __ppc_setup_system_time(vint32 *cvFactor) 17 { 18 sConversionFactor = cvFactor; 19 } 20 21 22 // Note: We don't implement system_time() in assembly since the 64 bit 23 // divisions/multiplications are a bit tough to implement for a 32 bit 24 // PPC. 25 bigtime_t 26 system_time(void) 27 { 28 uint64 timeBase = __ppc_get_time_base(); 29 30 uint32 cv = *sConversionFactor; 31 return (timeBase >> 32) * cv + (((timeBase & 0xffffffff) * cv) >> 32); 32 } 33