diff --git a/tools/compilers/main.cpp b/tools/compilers/main.cpp
index c0e72fb..a818406 100644
--- a/tools/compilers/main.cpp
+++ b/tools/compilers/main.cpp
@@ -668,6 +668,44 @@ int Sys_Milliseconds()
 	return timeGetTime() - sys_timeBase;
 }
 
+
+/*
+================
+Sys_Microseconds
+================
+*/
+uint64 Sys_Microseconds()
+{
+	static uint64 ticksPerMicrosecondTimes1024 = 0;
+
+	if( ticksPerMicrosecondTimes1024 == 0 )
+	{
+		ticksPerMicrosecondTimes1024 = ( ( uint64 )Sys_ClockTicksPerSecond() << 10 ) / 1000000;
+		assert( ticksPerMicrosecondTimes1024 > 0 );
+	}
+
+	return ( ( uint64 )( ( int64 )Sys_GetClockTicks() << 10 ) ) / ticksPerMicrosecondTimes1024;
+}
+
+/*
+========================
+Sys_CPUCount
+
+TODO: This is a dummy function;
+If required I recommend using SDL_CpuCount();
+
+numLogicalCPUCores      - the number of logical CPU per core
+numPhysicalCPUCores     - the total number of cores per package
+numCPUPackages          - the total number of packages (physical processors)
+========================
+*/
+void Sys_CPUCount( int& numLogicalCPUCores, int& numPhysicalCPUCores, int& numCPUPackages )
+{
+        numPhysicalCPUCores = 1;
+        numLogicalCPUCores = 1;
+        numCPUPackages = 1;
+}
+
 class idSysCmdline : public idSys
 {
 public:
diff --git a/tools/compilers/main_posix.cpp b/tools/compilers/main_posix.cpp
index 060f075..c03a967 100644
--- a/tools/compilers/main_posix.cpp
+++ b/tools/compilers/main_posix.cpp
@@ -622,6 +622,71 @@ int Sys_Milliseconds()
 	// DG end
 }
 
+/*
+================
+Sys_Microseconds
+================
+*/
+static uint64 sys_microTimeBase = 0;
+
+uint64 Sys_Microseconds()
+{
+#if 0
+	static uint64 ticksPerMicrosecondTimes1024 = 0;
+
+	if( ticksPerMicrosecondTimes1024 == 0 )
+	{
+		ticksPerMicrosecondTimes1024 = ( ( uint64 )Sys_ClockTicksPerSecond() << 10 ) / 1000000;
+		assert( ticksPerMicrosecondTimes1024 > 0 );
+	}
+
+	return ( ( uint64 )( ( int64 )Sys_GetClockTicks() << 10 ) ) / ticksPerMicrosecondTimes1024;
+#elif 0
+	uint64 curtime;
+	struct timespec ts;
+
+	clock_gettime( CLOCK_MONOTONIC, &ts );
+
+	curtime = ts.tv_sec * 1000000 + ts.tv_nsec / 1000;
+
+	return curtime;
+#else
+	uint64 curtime;
+	struct timespec ts;
+
+	clock_gettime( D3_CLOCK_TO_USE, &ts );
+
+	if( !sys_microTimeBase )
+	{
+		sys_microTimeBase = ts.tv_sec;
+		return ts.tv_nsec / 1000;
+	}
+
+	curtime = ( ts.tv_sec - sys_microTimeBase ) * 1000000 + ts.tv_nsec / 1000;
+
+	return curtime;
+#endif
+}
+
+/*
+========================
+Sys_CPUCount
+
+TODO: This is a dummy function;
+If required I recommend using SDL_CpuCount();
+
+numLogicalCPUCores      - the number of logical CPU per core
+numPhysicalCPUCores     - the total number of cores per package
+numCPUPackages          - the total number of packages (physical processors)
+========================
+*/
+void Sys_CPUCount( int& numLogicalCPUCores, int& numPhysicalCPUCores, int& numCPUPackages )
+{
+        numPhysicalCPUCores = 1;
+        numLogicalCPUCores = 1;
+        numCPUPackages = 1;
+}
+
 class idSysCmdline : public idSys
 {
 public:
