mirror of
https://github.com/rvtr/ctr_firmware.git
synced 2025-10-31 07:51:08 -04:00
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_firmware@85 b871894f-2f95-9b40-918c-086798483c85
151 lines
4.5 KiB
C
151 lines
4.5 KiB
C
/*---------------------------------------------------------------------------*
|
|
Project: CtrBrom - OS - include
|
|
File: tick.h
|
|
|
|
Copyright 2008 Nintendo. All rights reserved.
|
|
|
|
These coded instructions, statements, and computer programs contain
|
|
proprietary information of Nintendo of America Inc. and/or Nintendo
|
|
Company Ltd., and are protected by Federal copyright law. They may
|
|
not be disclosed to third parties or copied or duplicated in any form,
|
|
in whole or in part, without the prior written consent of Nintendo.
|
|
|
|
$Date:: $
|
|
$Rev$
|
|
$Author$
|
|
*---------------------------------------------------------------------------*/
|
|
#ifndef BROM_OS_TICK_H_
|
|
#define BROM_OS_TICK_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <brom/misc.h>
|
|
#include <brom/types.h>
|
|
#include <ctr/ioreg.h>
|
|
#include <brom/os/ARM9/timer.h>
|
|
|
|
|
|
//---- unit of tick
|
|
typedef u64 OSTick;
|
|
typedef u32 OSTick32;
|
|
|
|
|
|
//---- tick APIs
|
|
extern void osInitTick( void );
|
|
extern u64 osGetTick( void );
|
|
extern void osSetTick( u64 );
|
|
|
|
|
|
//---- conversion tick count <-> real time count
|
|
#define OS_SYSTEM_CLOCK HW_SYSTEM_CLOCK
|
|
|
|
//---- sec to tick
|
|
#define OSi_SEC_TO_TICK( sec, prescale ) ((OSTick)( (OS_SYSTEM_CLOCK * (u64)(sec)) / (prescale) ))
|
|
#define OSi_SEC_TO_TICK32( sec, prescale ) ((OSTick32)( (OS_SYSTEM_CLOCK * (u32)(sec)) / (prescale) ))
|
|
|
|
#define OSi_MSEC_TO_TICK( msec, prescale ) ((OSTick)( ((OS_SYSTEM_CLOCK/1000) * (u64)(msec)) / (prescale) ))
|
|
#define OSi_MSEC_TO_TICK32( msec, prescale ) ((OSTick32)( ((OS_SYSTEM_CLOCK/1000) * (u32)(msec)) / (prescale) ))
|
|
|
|
#define OSi_USEC_TO_TICK( usec, prescale ) ((OSTick)( ((OS_SYSTEM_CLOCK/1000) * (u64)(usec)) / ((prescale) * 1000) ))
|
|
#define OSi_USEC_TO_TICK32( usec, prescale ) ((OSTick32)( ((OS_SYSTEM_CLOCK/1000) * (u32)(usec)) / ((prescale) * 1000) ))
|
|
|
|
#define OS_SEC_TO_TICK( sec ) OSi_SEC_TO_TICK( sec, 64 )
|
|
#define OS_SEC_TO_TICK32( sec ) OSi_SEC_TO_TICK32( sec, 64 )
|
|
|
|
#define OS_MSEC_TO_TICK( msec ) OSi_MSEC_TO_TICK( msec, 64 )
|
|
#define OS_MSEC_TO_TICK32( msec ) OSi_MSEC_TO_TICK32( msec, 64 )
|
|
|
|
#define OS_USEC_TO_TICK( usec ) OSi_USEC_TO_TICK( usec, 64 )
|
|
#define OS_USEC_TO_TICK32( usec ) OSi_USEC_TO_TICK32( usec, 64 )
|
|
|
|
//---- tick to sec
|
|
#define OSi_TICK_TO_SEC( tick, prescale ) ( ((u64)(tick) * (prescale)) / OS_SYSTEM_CLOCK )
|
|
#define OSi_TICK_TO_SEC32( tick, prescale ) ( ((u32)(tick) * (prescale)) / OS_SYSTEM_CLOCK )
|
|
|
|
#define OSi_TICK_TO_MSEC( tick, prescale ) ( ((u64)(tick) * (prescale)) / (OS_SYSTEM_CLOCK/1000) )
|
|
#define OSi_TICK_TO_MSEC32( tick, prescale ) ( ((u32)(tick) * (prescale)) / (OS_SYSTEM_CLOCK/1000) )
|
|
|
|
#define OSi_TICK_TO_USEC( tick, prescale ) ( ((u64)(tick) * (prescale) * 1000) / (OS_SYSTEM_CLOCK/1000) )
|
|
#define OSi_TICK_TO_USEC32( tick, prescale ) ( ((u32)(tick) * (prescale) * 1000) / (OS_SYSTEM_CLOCK/1000) )
|
|
|
|
#define OS_TICK_TO_SEC( tick ) OSi_TICK_TO_SEC( tick, 64 )
|
|
#define OS_TICK_TO_SEC32( tick ) OSi_TICK_TO_SEC32( tick, 64 )
|
|
|
|
#define OS_TICK_TO_MSEC( tick ) OSi_TICK_TO_MSEC( tick, 64 )
|
|
#define OS_TICK_TO_MSEC32( tick ) OSi_TICK_TO_MSEC32( tick, 64 )
|
|
|
|
#define OS_TICK_TO_USEC( tick ) OSi_TICK_TO_USEC( tick, 64 )
|
|
#define OS_TICK_TO_USEC32( tick ) OSi_TICK_TO_USEC32( tick, 64 )
|
|
|
|
|
|
static inline OSTick i_osSecToTick( u64 sec )
|
|
{
|
|
return OS_SEC_TO_TICK( sec );
|
|
}
|
|
|
|
static inline OSTick32 i_osSecToTick32( u32 sec )
|
|
{
|
|
return OS_SEC_TO_TICK32( sec );
|
|
}
|
|
|
|
static inline OSTick i_osMSecToTick( u64 msec )
|
|
{
|
|
return OS_MSEC_TO_TICK( msec );
|
|
}
|
|
|
|
static inline OSTick32 i_osMSecToTick32( u32 msec )
|
|
{
|
|
return OS_MSEC_TO_TICK32( msec );
|
|
}
|
|
|
|
static inline OSTick i_osUSecToTick( u64 usec )
|
|
{
|
|
return OS_USEC_TO_TICK( usec );
|
|
}
|
|
|
|
static inline OSTick32 i_osUSecToTick32( u32 usec )
|
|
{
|
|
return OS_USEC_TO_TICK32( usec );
|
|
}
|
|
|
|
static inline u64 i_osTickToSec( OSTick tick )
|
|
{
|
|
return OS_TICK_TO_SEC( tick );
|
|
}
|
|
|
|
static inline u32 i_osTickToSec32( OSTick32 tick )
|
|
{
|
|
return OS_TICK_TO_SEC32( tick );
|
|
}
|
|
|
|
static inline u64 i_osTickToMSec( OSTick tick )
|
|
{
|
|
return OS_TICK_TO_MSEC( tick );
|
|
}
|
|
|
|
static inline u32 i_osTickToMSec32( OSTick32 tick )
|
|
{
|
|
return OS_TICK_TO_MSEC32( tick );
|
|
}
|
|
|
|
static inline u64 i_osTickToUSec( OSTick tick )
|
|
{
|
|
return OS_TICK_TO_USEC( tick );
|
|
}
|
|
|
|
static inline u32 i_osTickToUSec32( OSTick32 tick )
|
|
{
|
|
return OS_TICK_TO_USEC32( tick );
|
|
}
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
} /* extern "C" */
|
|
#endif
|
|
|
|
/* BROM_OS_TICK_H_ */
|
|
#endif
|