0,0 → 1,61 |
/* Project: OSLib |
* Description: The OS Construction Kit |
* Date: 1.6.2000 |
* Idea by: Luca Abeni & Gerardo Lamastra |
* |
* OSLib is an SO project aimed at developing a common, easy-to-use |
* low-level infrastructure for developing OS kernels and Embedded |
* Applications; it partially derives from the HARTIK project but it |
* currently is independently developed. |
* |
* OSLib is distributed under GPL License, and some of its code has |
* been derived from the Linux kernel source; also some important |
* ideas come from studying the DJGPP go32 extender. |
* |
* We acknowledge the Linux Community, Free Software Foundation, |
* D.J. Delorie and all the other developers who believe in the |
* freedom of software and ideas. |
* |
* For legalese, check out the included GPL license. |
*/ |
|
/* Advanced Timer |
* Date: 8.4.2003 |
* Author: Giacomo Guidi <giacomo@gandalf.sssup.it> |
* |
*/ |
|
#ifndef __ADVTIMER_H__ |
#define __ADVTIMER_H__ |
|
#include <ll/i386/defs.h> |
BEGIN_DEF |
|
/* TSC */ |
|
#define rdtsc(low,high) \ |
__asm__ __volatile__("rdtsc" : "=a" (low), "=d" (high)) |
|
#define rdtscll(val) \ |
__asm__ __volatile__("rdtsc" : "=A" (val)) |
|
/* RTC */ |
|
#define RTC_PORT(x) (0x70 + (x)) |
|
#define CMOS_READ(addr,val) \ |
{ \ |
outp(RTC_PORT(0),(addr)); \ |
val = inp(RTC_PORT(1)); \ |
} |
|
#define CMOS_WRITE(addr,val) \ |
{ \ |
outp(RTC_PORT(0),(addr)); \ |
outp(RTC_PORT(1),(val)); \ |
} |
|
#define RTC_IRQ 8 |
|
END_DEF |
#endif |