- Modified the way TRAP_FIXUPS and XXX_PROLOGS work, so that the fixup code doesn't depend on numerical values anymore, but instead on unique labels for each function (kitd thus becomes kitd_a and kitd_t, for entry and exit).
- Now we can put the TRAP_FIXUPS for the Interrupt Template as part of the code, and at the end.
- Enable Dr Save/Restore in lots of places where it was previously disable.
- Implement Dr Save/Restore in V86 traps.
svn path=/trunk/; revision=26138
- Fix a bug in KeQueryPerformanceCounter which wasn't handling the possibility of an invalid counter value.
- Don't disable/enable interrupts in HalpInitializeClock and HalCalibratePerformanceCounter. Instead, save the flags, disable, and then restore flags, so that if interrupts were disabled initially, they'll remain that way.
- Make KeUpdateRunTime and KeUpdateSystemTime support KPRCB->SkipTick.
- Atomically check for DPC routine active by referencing fs. Also update Debug DPC time.
- Add support for detecting break-in during KeUpdateSystemTime.
- DPC Routine active is a BOOLEAN, not a ULONG. Fix the check in KeUpdateRunTime since this might've messed up a lot of things.
- Temporarily disable DbgBreakPoint during DbgPrint.
- Hang in KeQueryPerformanceCounter while WinDBG is connected is now fixed, as well as DbgPrint support. WinDBG can now remain connected and show all the DebugPrints! (But GUI doesn't boot -- yet).
svn path=/trunk/; revision=25984
- DebugPrint/DebugPrompt should have an int3 after the int2d, and the int2d handler should ++ the trap frame's EIP to compensate (merge from kd-branch).
- Remove KDB symbol hooks (merge from kd-branch).
- Make PSEH compialble in MSVC again after Greatlord's break.
- Fix KiSaveProcessorControlState/KiRestoreProcessorControlState (merge from kd-branch).
- Disable GDB hook/hacks (merge from kd-branch).
- Add KD64 directory from kd-branch with SharedUserData access enabled (no other code changed). It's not currently compiled though, just putting it here.
svn path=/trunk/; revision=25965
- Fix an offset bug which was causing us to read/write to DR7 in a completely random location (somewhere in side the _CONTEXT record).
- Fix a bug in DR save/restore which was making us save dr0,1,2 isntead of dr3,6,7.
- All bugs reported by Aleksey Bragin.
svn path=/trunk/; revision=25938
- This fixes a critical system malfunction and architectural bug, as well as speeds up ReactOS incredibly -- setup takes seconds again, and boot is almost instantenous (except the Explorer loading bug).
- Proper fix for bootvid regression that Aleksey "Fixed". Video mode is now properly setup wether in setup or non-setup mode, so bootvid works again.
- Enable bootvid in freeldr.ini, currently using only /SOS mode since full-screen logo isn't implemented yet.
svn path=/trunk/; revision=25800
- Disable call to HalDisplayReset to avoid bugcheck. [Lock held]
- Don't unload bootvid after Phase 3 I/O Init since we still need to call it.
- Implement HalpTranslateResourceAddress since bootvid (and other windows boot drivers, potentially) needs it.
svn path=/trunk/; revision=25721
- KdComPortInUse is exported by HAL, not kdcom, so make the change.
- Register the KD support routines that kdcom on NT uses and implement most of them (except support for PCI Debug Cards).
- I can now get Windows to recognize the HAL but it freezes during loading (Due to broken IRQL implementation) and WinDBG won't connect to it.
svn path=/trunk/; revision=24977
- Remove the "deprecated" directory from ntoskrnl since it now truly is.
- Remove KeInitInterrupts hack.
- Remove KiDispatchInterrupt2 export hack from kernel and stop using it from the HAL.
- HAL can now be built/tested with Windows/TinyKRNL since the export hack is gone and interrupts are sent properly through the IDT.
- Remove a bunch of completed krnlfun entries.
- Fix progressbar during bootcd bug.
svn path=/trunk/; revision=24972
- Move sysbus.c contents (a 4 line function) into bus.c.
- Unify initialization code.
- Delete and disable stall execution calibration (currently using the default). Will implement later in a more precise manner (this routine was bizarly setting the MHz of the CPU in the PRCB in some cases...).
svn path=/trunk/; revision=24964
- Update clock interrupt handler to update the performance counter, and also detect if someone changed the clock rate (but don't yet support this).
- Test app from previous revision now works beautifully.
svn path=/trunk/; revision=24963
- Only map the 0x0 physical address in HalpReboot when enabling warm-reboot, there's no need to map it during init and keep it allocated during the whole time.
svn path=/trunk/; revision=24962
- Implement KeStallExecutionProcessor in its own assembly file isntead of using inlined GCC assembly, and align the loop to 16 bytes for more streamlined execution speed.
- Mask out clock interrupt during Phase 0 and Initialize clock interrupt on HAL Phase 1. This enables the HAL clock interrupt which was already written.
- Make the clock interrupt use HalpCurrentTimeIncrement instead of hardcoding a value.
- Re-implement HalpInitializeClock to allow for dynamic increments from 1ms to 15ms with appropriate rollovers and to call KeSetTimeIncrement to update timer values with the kernel.
- Implement HalSetTimeIncrement to allow changing the clock ms increment (but this isn't yet respected).
- Remove system/runtime update routines from the deprecated IRQ implementation and use the newer assembly ones already written, since we're now using the HAL clock interrupt. Remove other unused code.
- Fix more bugs in new hal IRQ implementation (that still isn't used yet due to regressions) and implement HalClearSoftwareInterrupt.
svn path=/trunk/; revision=24908
- Initailize the clock increment separately from the calibration of stall execution.
- Raise IRQL to the current IRQL (basically a no-op) to force a standard PIC state. Will be needed for the new IRQ implementation when it'll work.
- Scan commandline for PCILOCK and BREAK parameters during hal initalization. The former is not supported, only saved, while the latter causes a breakpoint just like the windows implemetnation.
- Get the bus type (ISA, EISA, MCA) on startup to support bootup from NTLDR.
- Validate HAL to match the kernel (checked kernel and UP kernel). Also make the kernel set the proper PRCB flags for this.
- Initialize the CMOS lock.
- Setup HAL Dispatch table and enable call to HalQuerySystemInformation in the kernel since it now works.
- Rewrite bus functions to get rid of the idea of "Bus handlers". This is a deprecated NT4 concept that ReactOS copied and only slows down performance.
- Support custom private dispatch table PCI functions.
- Provide default PCI functions.
- Rewrite PCI functions using clean structures and code instead of magic macros and undocumented magic values. Use simple macros to generate PCI bus operations for write/read uchar, ushort and ulong.
- Simplify function definitions for CMOS access.
- Unify some dupli/tripi-cated code.
- Fix definition of HaliSetSystemInformation.
- Fix definitions of Bus Handler functions (add NTAPI).
- Add official BUS_HANDLER definition to NDK.
- Fix definition of HAL_PRIVATE_DISPATCH.
- Remove some derecated code (isa.c and mca.c).
svn path=/trunk/; revision=24872
- Remove all kdcom exports and files from HAL and link with kdcom.dll instead.
- Add support in freeldr for loading kdcom.dll (and theoretically any other import, such as the Code Integrity DLL for kernel-mode signing, but for now I've only tested this one).
- Refactor some of the HAL loading code to make it generic for any image.
- Load HAL manually when loading kernel, before processing imports, to make sure that HAL is index 1 in the loader modules and loads before KDCOM.
- Fix some build problems.
svn path=/trunk/; revision=24780
- Get rid of HAL's own intrisics and use intrin_i.h and/or MSVC intrinsics from intrin.h
- If anyone knows how to make a .DEF file that is not only understood by both compilers, but also creates a proper import library, please let me know.
svn path=/trunk/; revision=24774
- Add stub for HalSetTimeIncrement.
- Cleanup CMOS-related routines (Get/Set environment value and get/set RTC). Fixup some prototypes as well. Inline HalpReadCmos/HalpWriteCmos instead of having a separate function.
- Fixup wrong protypes for various Queued Spinlock functions.
- Use __rdtsc intrinsic instead of Ke386RdTsc.
- Other MSVC compilation fixes.
svn path=/trunk/; revision=24770
- Matching HAL MP HalStartNextProcessor() and commenting out a call to HaliStartApplicationProcessor() (because it needs ProcessorContext). Proper fix should be done.
- Removing HalReportResourceUsage from MP version, and marking what it did differently as FIXME in the generic version.
svn path=/trunk/; revision=24763
- Remove fmutex.c and fastmutex functions from HAL. The whole point of having the Exi ones in the kernel was that HAL calls them through forward exports now (so any old driver can still link with HAL). Now we don't duplicate the implementation anymore.
- Remove DriverEntry, it's useless. Also move HalReportResourceUsage to halinit because it's a call-once-on-boot function much akin a HalInitPhase2 function, so delete resource.c
- Keep track of interrupt affinity and active processor mask each time a new CPU initializes.
svn path=/trunk/; revision=24762
- Implement (or cleanup + mark as implemented, these are 4 line functions) HalDisplayString, HalAcquireDisplayOwnership, HalSetDisplayParameters, HalQueryDisplayParameters, HalInitailizeProcessor, HalAllProcessorsStarted, HalStartNextProcessor, HalProcessorIdle, HalRequestIpi.
- Fix some prototype definitions and cleanup some formatting.
svn path=/trunk/; revision=24759
- Add lots of missing PCI definitions to the DDK, and to the internal file pci.h
- Make HAL compilable with the WDK thanks to a nice hack/trick I found.
svn path=/trunk/; revision=24757
- Stall the CPU after each I/O command to simulate I/O delay.
- Flush write buffers before rebooting.
- Refactor sending the reset command since it's not always a matter of using the keyboard port.
- HalReturnToFirmware does a HalpReboot no matter what parameter is sent.
svn path=/trunk/; revision=24741