os: Added osGetTime().

This commit is contained in:
plutoo 2014-09-06 21:07:26 +02:00
parent 63c3e5af0d
commit 449ead1141
2 changed files with 32 additions and 0 deletions

View File

@ -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();

View File

@ -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;
} }