os: Added osGetTime().
This commit is contained in:
parent
63c3e5af0d
commit
449ead1141
@ -7,3 +7,4 @@ u32 osConvertVirtToPhys(u32 vaddr);
|
|||||||
const char* osStrError(u32 error);
|
const char* osStrError(u32 error);
|
||||||
u32 osGetFirmVersion();
|
u32 osGetFirmVersion();
|
||||||
u32 osGetKernelVersion();
|
u32 osGetKernelVersion();
|
||||||
|
u64 osGetTime();
|
||||||
|
@ -1,5 +1,21 @@
|
|||||||
#include <3ds.h>
|
#include <3ds.h>
|
||||||
|
|
||||||
|
#define TICKS_PER_MSEC 268123.480
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
u64 date_time;
|
||||||
|
u64 update_tick;
|
||||||
|
//...
|
||||||
|
} datetime_t;
|
||||||
|
|
||||||
|
static volatile u32* __datetime_selector =
|
||||||
|
(u32*) 0x1FF81000;
|
||||||
|
static volatile datetime_t* __datetime1 =
|
||||||
|
(datetime_t*) 0x1FF81020;
|
||||||
|
static volatile datetime_t* __datetime2 =
|
||||||
|
(datetime_t*) 0x1FF81040;
|
||||||
|
|
||||||
|
|
||||||
u32 osConvertVirtToPhys(u32 vaddr)
|
u32 osConvertVirtToPhys(u32 vaddr)
|
||||||
{
|
{
|
||||||
if(vaddr >= 0x14000000 && vaddr < 0x1c000000)
|
if(vaddr >= 0x14000000 && vaddr < 0x1c000000)
|
||||||
@ -13,6 +29,21 @@ u32 osConvertVirtToPhys(u32 vaddr)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns number of milliseconds since 1st Jan 1900 00:00.
|
||||||
|
u64 osGetTime() {
|
||||||
|
volatile datetime_t* dt;
|
||||||
|
|
||||||
|
switch(*__datetime_selector & 1) {
|
||||||
|
case 0:
|
||||||
|
dt = __datetime1;
|
||||||
|
case 1:
|
||||||
|
dt = __datetime2;
|
||||||
|
}
|
||||||
|
|
||||||
|
u64 offset = (svcGetSystemTick() - dt->update_tick) / TICKS_PER_MSEC;
|
||||||
|
return dt->date_time + offset;
|
||||||
|
}
|
||||||
|
|
||||||
u32 osGetFirmVersion() {
|
u32 osGetFirmVersion() {
|
||||||
return (*(u32*)0x1FF80000) & ~0xFF;
|
return (*(u32*)0x1FF80000) & ~0xFF;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user