ctr_firmware/trunk/bootrom/include/brom/os/ARM9/tick.h
nakasima cb4bf19634 OS関連ヘッダファイル追加。
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_firmware@85 b871894f-2f95-9b40-918c-086798483c85
2008-12-08 11:41:14 +00:00

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