* SUCH DAMAGE.
*/
+/** @file i386/timer.c
+ * @brief i386 specific timer routines
+ */
+
#include <libpayload.h>
#include <arch/rdtsc.h>
+/**
+ * @ingroup arch
+ * Global variable containing the speed of the processor in KHz
+ */
u32 cpu_khz;
/**
while (rdtsc() < timeout) ;
}
+/**
+ * Delay for a specified number of nanoseconds
+ * @param n Number of nanoseconds to delay for
+ */
void ndelay(unsigned int n)
{
_delay(n * cpu_khz / 1000000);
}
+/**
+ * Delay for a specified number of microseconds
+ * @param n Number of microseconds to delay for
+ */
void udelay(unsigned int n)
{
_delay(n * cpu_khz / 1000);
}
+/**
+ * Delay for a specified number of milliseconds
+ * @param n Number of milliseconds to delay for
+ */
+
void mdelay(unsigned int m)
{
_delay(m * cpu_khz);
}
+/**
+ * Delay for a specified number of seconds
+ * @param n Number of seconds to delay for
+ */
+
void delay(unsigned int s)
{
_delay(s * cpu_khz * 1000);
long long int llabs(long long int j);
u8 bin2hex(u8 b);
u8 hex2bin(u8 h);
+void fatal(const char* msg) __attribute__ ((noreturn));
/** @} */
/**
/**
* @defgroup arch Architecture Specific Functions
+ * This modules contains global architecure specific functions.
+ * All architectures are expected to define these functions.
* @{
*/
int get_coreboot_info(struct sysinfo_t *info);
void mdelay(unsigned int n);
void delay(unsigned int n);
-#define abort() halt()
+#define abort() halt() /**< Alias for the halt() function */
+
+/**
+ * Stops executions and halts the processor. This function does
+ * not return.
+ */
void halt(void) __attribute__ ((noreturn));
-void fatal(const char* msg) __attribute__ ((noreturn));
/** @} */
/**