Author: hpoussin
Date: Thu Mar 4 00:13:06 2010
New Revision: 45817
URL:
http://svn.reactos.org/svn/reactos?rev=45817&view=rev
Log:
[freeldr] Don't write twice the delay method and how to read the RTC. Use those in the
HAL
Modified:
trunk/reactos/boot/freeldr/freeldr/arch/i386/pcrtc.c
trunk/reactos/boot/freeldr/freeldr/include/freeldr.h
trunk/reactos/hal/halx86/generic/bios.c
Modified: trunk/reactos/boot/freeldr/freeldr/arch/i386/pcrtc.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/freeldr/arch/…
==============================================================================
--- trunk/reactos/boot/freeldr/freeldr/arch/i386/pcrtc.c [iso-8859-1] (original)
+++ trunk/reactos/boot/freeldr/freeldr/arch/i386/pcrtc.c [iso-8859-1] Thu Mar 4 00:13:06
2010
@@ -19,63 +19,25 @@
#include <freeldr.h>
-#define BCD_INT(bcd) (((bcd & 0xf0) >> 4) * 10 + (bcd &0x0f))
+BOOLEAN
+NTAPI
+HalQueryRealTimeClock(OUT PTIME_FIELDS Time);
TIMEINFO*
PcGetTime(VOID)
{
static TIMEINFO TimeInfo;
- REGS Regs;
+ TIME_FIELDS Time;
- /* Some BIOSes, such as the 1998/07/25 system ROM
- * in the Compaq Deskpro EP/SB, leave CF unchanged
- * if successful, so CF should be cleared before
- * calling this function. */
- __writeeflags(__readeflags() & ~EFLAGS_CF);
+ if (!HalQueryRealTimeClock(&Time))
+ return NULL;
- /* Int 1Ah AH=04h
- * TIME - GET REAL-TIME CLOCK DATE (AT,XT286,PS)
- *
- * AH = 04h
- * CF clear to avoid bug
- * Return:
- * CF clear if successful
- * CH = century (BCD)
- * CL = year (BCD)
- * DH = month (BCD)
- * DL = day (BCD)
- * CF set on error
- */
- Regs.b.ah = 0x04;
- Int386(0x1A, &Regs, &Regs);
-
- TimeInfo.Year = 100 * BCD_INT(Regs.b.ch) + BCD_INT(Regs.b.cl);
- TimeInfo.Month = BCD_INT(Regs.b.dh);
- TimeInfo.Day = BCD_INT(Regs.b.dl);
-
- /* Some BIOSes leave CF unchanged if successful,
- * so CF should be cleared before calling this function. */
- __writeeflags(__readeflags() & ~EFLAGS_CF);
-
- /* Int 1Ah AH=02h
- * TIME - GET REAL-TIME CLOCK TIME (AT,XT286,PS)
- *
- * AH = 02h
- * CF clear to avoid bug
- * Return:
- * CF clear if successful
- * CH = hour (BCD)
- * CL = minutes (BCD)
- * DH = seconds (BCD)
- * DL = daylight savings flag (00h standard time, 01h daylight time)
- * CF set on error (i.e. clock not running or in middle of update)
- */
- Regs.b.ah = 0x02;
- Int386(0x1A, &Regs, &Regs);
-
- TimeInfo.Hour = BCD_INT(Regs.b.ch);
- TimeInfo.Minute = BCD_INT(Regs.b.cl);
- TimeInfo.Second = BCD_INT(Regs.b.dh);
+ TimeInfo.Year = Time.Year;
+ TimeInfo.Month = Time.Month;
+ TimeInfo.Day = Time.Day;
+ TimeInfo.Hour = Time.Hour;
+ TimeInfo.Minute = Time.Minute;
+ TimeInfo.Second = Time.Second;
return &TimeInfo;
}
Modified: trunk/reactos/boot/freeldr/freeldr/include/freeldr.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/freeldr/inclu…
==============================================================================
--- trunk/reactos/boot/freeldr/freeldr/include/freeldr.h [iso-8859-1] (original)
+++ trunk/reactos/boot/freeldr/freeldr/include/freeldr.h [iso-8859-1] Thu Mar 4 00:13:06
2010
@@ -39,6 +39,7 @@
#include <ndk/asm.h>
#include <ndk/rtlfuncs.h>
#include <ndk/ldrtypes.h>
+#include <ndk/halfuncs.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
Modified: trunk/reactos/hal/halx86/generic/bios.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/bios.c?…
==============================================================================
--- trunk/reactos/hal/halx86/generic/bios.c [iso-8859-1] (original)
+++ trunk/reactos/hal/halx86/generic/bios.c [iso-8859-1] Thu Mar 4 00:13:06 2010
@@ -235,7 +235,6 @@
longjmp(HalpSavedContext, 1);
UNREACHABLE;
}
-#endif
/* V8086 ENTER ****************************************************************/
@@ -278,6 +277,7 @@
/* Exit to V86 mode */
HalpExitToV86((PKTRAP_FRAME)&V86TrapFrame);
}
+#endif
/* FUNCTIONS ******************************************************************/
@@ -432,6 +432,7 @@
while (i--) HalpSavedIoMap[HalpSavedIoMapData[i][0]] = HalpSavedIoMapData[i][1];
}
+#ifndef _MINIHAL_
VOID
NTAPI
HalpMapRealModeMemory(VOID)
@@ -499,7 +500,6 @@
HalpFlushTLB();
}
-#ifndef _MINIHAL_
VOID
NTAPI
HalpSwitchToRealModeTrapHandlers(VOID)