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/i... ============================================================================== --- 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/includ... ============================================================================== --- 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?r... ============================================================================== --- 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)