Commit Graph
334 Commits
Author SHA1 Message Date
Hervé Poussineau e394d5e78d Fix usage of KdComPortInUse
svn path=/trunk/; revision=27515
2007-07-08 20:13:20 +00:00
Aleksey Bragin 017976049f - Reimplement HalpAssignPCISlotResources() (based on the old implementation, just changing to the new way of reading/writing PCI config space, formatting and other misc changes).
svn path=/trunk/; revision=27330
2007-06-29 17:20:26 +00:00
Magnus Olsen 01148285c7 revert my commit to this filem sorry breaking the build it is fix 1 / 2 next commit fixing the build again
svn path=/trunk/; revision=27065
2007-06-07 22:09:47 +00:00
Magnus Olsen 69be2950f9 export HalPutDmaAdapter so we can use it for VideoPortPutDmaAdapter
svn path=/trunk/; revision=27061
2007-06-07 21:11:58 +00:00
Dmitry Gorbachev cd86e748b8 Do not change reserved ELCR bits.
svn path=/trunk/; revision=26365
2007-04-16 23:02:54 +00:00
Aleksey Bragin f5af63ddda - Fix HalGetInterruptVector()'s usage of level vs. vector. At least Windows seems to use Level parameter.
- No need in special hacks (e.g. in scsiport), as a result.

svn path=/trunk/; revision=26188
2007-03-27 12:55:57 +00:00
Aleksey Bragin e0fff4a12f rbuild uses TABs for indentation.
svn path=/trunk/; revision=26168
2007-03-25 17:24:52 +00:00
Alex Ionescu 755994a386 - Change the way DR_TRAP_FIXUP and V86_TRAP_FIXUP work so that they can be combined into TRAP_FIXUPS, which will also handle ABIOS Fixups later.
- 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
2007-03-19 05:56:27 +00:00
Hervé Poussineau 87bde6d032 Add a variable to change the name of the ReactOS directory on bootcd.
If a non default name is chosen, the cdrom is created, but it is unusable as freeldr doesn't find txtsetup.inf

svn path=/trunk/; revision=26131
2007-03-18 14:33:17 +00:00
Alex Ionescu 12e7593f24 - Fix a bug in KeQueryPerformanceCounter which was reading the flags in ESI instead of ECX.
- 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
2007-03-04 19:06:34 +00:00
Alex Ionescu af68f5e42d - Remove KD APIs from stub HAL, they've been in kdcom for a while (merge from kd-branch).
- 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
2007-03-03 04:39:25 +00:00
Alex Ionescu d89145a431 - Fix a bug in HalEnableSystemInterrupt which was causing us to read invalid port data instead of the PCI edge/level registers.
- 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
2007-03-01 20:27:33 +00:00
Alex Ionescu 48d44183ec - Linux sucks
svn path=/trunk/; revision=25801
2007-02-14 20:47:43 +00:00
Alex Ionescu d006bab906 - Fixup and enable my new HAL IRQL implementation from a couple of months ago, and remove the temporary Mm hacks from Dmitry Gorbachev, since DPCs don't interrupt DISPATCH_LEVEL Code anymore.
- 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
2007-02-14 20:30:33 +00:00
Alex Ionescu 925751080d - Fix call to VidInitialize.
- 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
2007-02-04 19:15:04 +00:00
Johannes Anderwald c6b29c7d8f - Fix warning(s)
- Void functions dont return values
- Include intrin.h for _enable / _disable intrinsics

svn path=/trunk/; revision=25683
2007-02-02 08:41:30 +00:00
Johannes Anderwald a75eaa8433 - Fix prototype HalAllocateCrashDumpRegisters
- Include intrin.h for _enable / _disable

svn path=/trunk/; revision=25675
2007-02-01 23:03:38 +00:00
Christoph von Wittich 745785f093 fix some more warnings (gcc 4.2)
svn path=/trunk/; revision=25567
2007-01-21 20:10:17 +00:00
Alex Ionescu a50637c13a - Smallish changes to HalpReboot to make flags clearer and fixup one of them.
svn path=/trunk/; revision=25337
2007-01-07 06:49:00 +00:00
Hervé Poussineau d9e5c48061 Fix HalXbox build
svn path=/trunk/; revision=25271
2007-01-01 23:55:40 +00:00
Alex Ionescu cd31c14fe5 - Enable V86/DR save in HAL Clock Interrupt (and fix build).
- Add debug message to fs_rec driver to analyse why it's trying to allocate 4GB of non paged memory.

svn path=/trunk/; revision=25025
2006-12-03 07:34:03 +00:00
Aleksey Bragin d59a0757d9 Fix HALMP build
svn path=/trunk/; revision=24989
2006-11-30 11:24:03 +00:00
Alex Ionescu 58809635ad - Raw test app for DbgUi+Dbgk Debugging Subsystem (skeletal, and doesn't test Win32 APIs).
svn path=/trunk/; revision=24988
2006-11-30 09:54:31 +00:00
Alex Ionescu b906fae81e - Add profil.c and stub HalStartProfileInterrupt, HalStopProfileInterrupt and HalSetProfileInterval, and export these functions.
- 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
2006-11-29 22:12:50 +00:00
Alex Ionescu 96d593c9ba - Finally figured out a way to make the old HAL IRQ implementation work with the new Ke Interrupt implementation without requiring my new HAL IRQ code (which doesn't work).
- 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
2006-11-29 19:13:12 +00:00
Alex Ionescu 9f841739ff - Fix again
svn path=/trunk/; revision=24969
2006-11-29 17:57:56 +00:00
Alex Ionescu f675588849 - Properly fix boot/build.
svn path=/trunk/; revision=24968
2006-11-29 17:35:15 +00:00
Johannes Anderwald b74888ef0d - fix build (commenting out calls)
svn path=/trunk/; revision=24966
2006-11-29 12:36:33 +00:00
Johannes Anderwald 76a4c9efc1 - fix build (commenting out calls)
svn path=/trunk/; revision=24965
2006-11-29 10:19:00 +00:00
Alex Ionescu d466efb4fb - Fixup all the file headers with proper paths and authors.
- 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
2006-11-29 08:28:20 +00:00
Alex Ionescu f09a042483 - Implement a working version of KeQueryPerformanceCounter based on the C implementation (without the strange MHZed-based code) and also support updating the performance timer during a clock interrupt, otherwise the value might become stale during the query.
- 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
2006-11-29 08:01:58 +00:00
Alex Ionescu 7cd2e3f498 - There's no such thing as Phase 2 HAL init.
- 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
2006-11-29 07:32:27 +00:00
Alex Ionescu 088b3cd98e - Fix prototype/definition of HalCalibratePerformanceCounter and properly implement it.
- 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
2006-11-28 08:11:14 +00:00
Alex Ionescu 139ff99f50 - Cleanup HAL initialization code:
- 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
2006-11-27 19:26:31 +00:00
Alex Ionescu 3c8201f006 - Fix some bugs in the newer IRQL implementation for the HAL (that's still not used because it caused regressions).
svn path=/trunk/; revision=24870
2006-11-27 19:16:24 +00:00
Alex Ionescu 62f904960f - Change kdcom.sys to kdcom.dll.
- 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
2006-11-19 19:00:03 +00:00
Alex Ionescu e59260f8cb - Add kdcom driver. It contains the exact same functions as in HAL/kdbg.c (not yet used).
- Fix halxbox compile.

svn path=/trunk/; revision=24775
2006-11-17 06:14:31 +00:00
Alex Ionescu 1a3b63b4c4 - Fix some more MSVC problems.
- 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
2006-11-17 04:18:41 +00:00
Hervé Poussineau deefef4098 Fix HAL compilation
svn path=/trunk/; revision=24772
2006-11-16 20:52:13 +00:00
Alex Ionescu 596c3bee62 - Reorganize HAL exports and export KeTRyToAcquireQueuedSpinlock and KeTryToAcquireQueuedSpinLockRaisetoSynch.
- 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
2006-11-16 17:30:52 +00:00
Thomas Bluemel a1e3bd38a5 Fix some compilation errors
svn path=/trunk/; revision=24765
2006-11-15 20:24:55 +00:00
Aleksey Bragin 8b93146888 Properly use the second param.
svn path=/trunk/; revision=24764
2006-11-15 16:57:15 +00:00
Aleksey Bragin 44eba681e0 Fix build by:
- 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
2006-11-15 10:42:46 +00:00
Alex Ionescu b649dd5293 - Export ExiTryToAcquireFastMutex from ntoskrnl, I had forgotten to export this ages ago when adding the other Exi*FastMutex* stuff.
- 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
2006-11-15 00:08:51 +00:00
Alex Ionescu 3047ba1df7 - Build fixes.
svn path=/trunk/; revision=24760
2006-11-14 22:42:59 +00:00
Alex Ionescu 7b4b9aec8f - Delete HAL cruft files.
- 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
2006-11-14 20:59:48 +00:00
Alex Ionescu 5a7f46becc - Implement HalSystemVectorDispatchEntry, KeFlushWriteBuffer, HalFlushCommonBuffer, HalAllocateCrashDumpRegisters.
- 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
2006-11-14 18:17:33 +00:00
Alex Ionescu abe724dba9 - Make HalMakeBeep a bit nicer by making the PUCHAR typedef part of the TIMER constants.
svn path=/trunk/; revision=24742
2006-11-13 04:34:57 +00:00
Alex Ionescu 30c16d9652 - Add some more descriptive comments to HalpReboot (and rename it from HalReboot) since some of the operations lacked comments.
- 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
2006-11-13 04:33:45 +00:00
Alex Ionescu 0e8c70ba22 - Re-implement messy portio.c by using MSVC-compatible intrinsics instead. 20 lines of code become 1, yay!
svn path=/trunk/; revision=24740
2006-11-13 04:31:39 +00:00