1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
/* $Id: rtc.h,v 1.30 2009-03-05 22:14:14 vrsieh Exp $
*
* Copyright (C) 2004-2009 FAUmachine Team <info@faumachine.org>.
* This program is free software. You can redistribute it and/or modify it
* under the terms of the GNU General Public License, either version 2 of
* the License, or (at your option) any later version. See COPYING.
*/
#ifndef __RTC_H_INCLUDED
#define __RTC_H_INCLUDED
#include "build_config.h"
#include "compiler.h"
/* ==================== RUNTIME_RM ==================== */
#ifdef RUNTIME_RM
extern void
rtc_tick(void);
/*
* Get timer ticks.
*
* In: AH = 1Ah
* AL = 00h
*
* Out: CX:DX = timer ticks since midnight
* AL = number of midnight passes since last call
*/
/* Must be static inline, for ubcd32-sys-nssi experiment */
static ALWAYS_INLINE void
bios_1a_00xx(struct regs *regs)
{
/* Allow some time ticks. */
/* FIXME JOSEF: export to cpu.h */
asm (
"sti \n"
"nop \n"
"cli \n"
:
:
);
CX = var_get(ticks_high);
DX = var_get(ticks_low);
AL = var_get(time_24h);
var_put(time_24h, 0);
AH = 0;
F &= ~(1 << 0); /* Clear carry. */
}
extern void
bios_1a_01xx(struct regs *regs);
extern void
bios_1a_02xx(struct regs *regs);
extern void
bios_1a_03xx(struct regs *regs);
extern void
bios_1a_04xx(struct regs *regs);
extern void
bios_1a_05xx(struct regs *regs);
extern void
bios_1a_06xx(struct regs *regs);
extern void
bios_1a_07xx(struct regs *regs);
#endif /* RUNTIME_RM */
/* ==================== REAL-MODE INIT ==================== */
#ifdef INIT_RM
extern void
rtc_init(void);
#endif /* INIT_RM */
#endif /* __RTC_H_INCLUDED */
|