Commit graph

40782 commits

Author SHA1 Message Date
Dmitry Gorbachev 47d6a16b10 - Use __builtin_trap for old GCC, too.
- KiEoiHelper, KiDispatchExceptionFromTrapFrame: mark noreturn.
- Return DECLSPEC_NORETURNs.

svn path=/trunk/; revision=45232
2010-01-24 15:18:50 +00:00
Sir Richard b4d77b18a8 [PERF]: Make the trap entry/exit macros inlined, just as they used to be before in their pure-assembly forms. This should boost performance quite a bit by avoiding 2-3 extra calls during traps and system calls.
[NTOS]: Cleanup the traphdlr.c vs. trap_x.h mess into something much more structured. trap_x.h is now all inlined C functions which pretty much replace the asmmacros.S file. It is meant to be used outside the kernel as well (such as by the HAL, which requires trap entry/exit too).
[PERF]: Give UNREACHABLE another try, this time with GCC 4.5+, 4.4+, 4.4- and MSVC support.
[PERF]: Remove ABIOS checks since ReactOS does not support this, and since it doesn't look like the target kernel actually does either, we can remove this vestigal/unsupported code, saving some extra branches and checks.

svn path=/trunk/; revision=45231
2010-01-24 05:40:04 +00:00
Dmitry Gorbachev b743407fd6 Comment out DECLSPEC_NORETURN for now.
svn path=/trunk/; revision=45230
2010-01-24 02:25:20 +00:00
Dmitry Gorbachev bb62cd780b Use for GCC before 4.5, too...
svn path=/trunk/; revision=45229
2010-01-24 02:07:40 +00:00
Dmitry Gorbachev 8e4230d981 Trying r45222 hack again...
svn path=/trunk/; revision=45228
2010-01-24 01:58:20 +00:00
Dmitry Gorbachev a79f0c18c8 Put #endif where it should be.
svn path=/trunk/; revision=45227
2010-01-24 01:47:27 +00:00
Dmitry Gorbachev 5811cad11d Forgot ntdef.h
svn path=/trunk/; revision=45226
2010-01-24 01:37:13 +00:00
Dmitry Gorbachev 601c4ee420 Trying to fix build...
svn path=/trunk/; revision=45225
2010-01-24 01:35:25 +00:00
Dmitry Gorbachev 8b7f482f2a Fix vmwinst.exe crash (bug #5134).
svn path=/trunk/; revision=45224
2010-01-24 00:50:54 +00:00
Sir Richard 280c5bef1e [PERF]: Make all trap handlers, trap exit code, fatal exit code, and exception dispatch code "no return" since it always leads to an iret or other kind of non-directly-returning mechanism. This allows the compiler to optimize better and also remove useless code at the bottom of the functions. Since __builtin_unreachable is only for GCC 4.5, we use exit(0) for now (it will never be reached) to trick GCC.
svn path=/trunk/; revision=45223
2010-01-23 23:59:59 +00:00
Sir Richard f4cdf7ef0f [PSDK]: Define DECLSPEC_NORETURN for MSVC and GCC.
svn path=/trunk/; revision=45222
2010-01-23 23:58:29 +00:00
James Tabor 98006d367a [Win32k]
- Fixed DCE masks, clipping and added support for mirror and process owned dce.
- Reference: http://www.reactos.org/archives/public/ros-dev/2008-July/010498.html http://www.reactos.org/archives/public/ros-dev/2008-July/010499.html

svn path=/trunk/; revision=45221
2010-01-23 23:55:32 +00:00
Dmitry Gorbachev 24c017fb93 Fix initialization of PICs.
svn path=/trunk/; revision=45220
2010-01-23 23:39:43 +00:00
Dmitry Gorbachev c88ec84439 Fix build.
svn path=/trunk/; revision=45218
2010-01-23 21:57:15 +00:00
Sir Richard cdb563f380 [PERF]: Replace early ZwClose system calls with ObCloseHandle(KernelMode). This avoids taking a system call for those cases and gives a slight perf boost to booting up the system. It also pushes the first system call somewhat later in the boot process, allowing for easier debugging should the interface have issues/need tracing.
[NTOS]: Do not attempt querying the Registry Primary Handle for the Backing Hive File Size in the case where there is no actual Primary! There was no error checking so nobody noticed this happens -- it also probably resets Cluster to 0 (instead of 1), which can cause corruption in some cases.
[NTOS]: Make KiUserTrap use the MODE_MASK instead of hard-coding a check for Ring 0 CS (which is slower and not as correct).

svn path=/trunk/; revision=45217
2010-01-23 21:27:26 +00:00
Dmitry Gorbachev 89f8b943b1 Remove duplicate definitions (now in time.c).
svn path=/trunk/; revision=45216
2010-01-23 21:24:36 +00:00
Matthias Kupfer 4edc99f6d0 - fix and add German translations
svn path=/trunk/; revision=45215
2010-01-23 20:18:23 +00:00
Sir Richard 0cae32e094 [NTOS]: Export the C KiEoiHelper alongside the ASM Ke386EoiHelper. Yes, this is a "ReactOS-only" export, but really this interface is reserved for the HAL, and as long as we keep Ke386EoiHelper, the NT HAL should still work.
Need to revisit/finalize this decision and whether or not we can emulate the C-interface with Ke386EoiHelper somehow (reliably).

svn path=/trunk/; revision=45214
2010-01-23 19:31:54 +00:00
Sir Richard 84a02b856b [NDK]: Some prototype fixes.
svn path=/trunk/; revision=45213
2010-01-23 19:29:33 +00:00
Sir Richard e18680bb11 [NTOS]: KiDispatchInterrupt crushes EBX, so maybe it should preserve it first? This only worked because KiDispatchInterrupt was only called by ASM code that already was magically aware of this fact, and preserved (or didn't use) EBX before making the call. Yuck!
svn path=/trunk/; revision=45212
2010-01-23 19:28:26 +00:00
Aleksey Bragin 5c2e1ab00c Jose Catena <jc1@diwaves.com>
- Fix a typo in aulldvrm (one of the dividends was always wrong).
See issue #5139 for more details.

svn path=/trunk/; revision=45211
2010-01-23 19:26:06 +00:00
Sir Richard c030074001 [PERF]: Do not declare the PCR in KeGetPcr as volatile. It is only volatile as in "if there is a context switch, the PCR is different". You are in a LOT of trouble if the thread switches while your code is running in the first place, and your code is somehow running as a different thread!
This change makes C code a lot neater, especially during PCR access, because it doesn't force reloading the PCR each time. For example, Read-Modify-Operations on the PCR, such as AND are 1 line of assembly instead of 3.
This helps and will help further with the C HAL, as well as the C trap handlers.

svn path=/trunk/; revision=45210
2010-01-23 18:28:14 +00:00
Dmitry Gorbachev 41563f3396 Fix English translation of RApps. Andrew Faulds (ajfweb =at= googlemail =dot= com), bug #5138.
svn path=/trunk/; revision=45209
2010-01-23 17:26:30 +00:00
Dmitry Chapyshev 1c1c72324a - Add/update Ukrainian translation by Sakara Yevhen (eresid[at]gmail[dot]com) and Igor Paliychuk (igor-hkr[at]mail[dot]ru)
- Update Russian translation for sysdm

svn path=/trunk/; revision=45205
2010-01-22 17:03:08 +00:00
Dmitry Chapyshev aa2498046e - Add/update Ukrainian translation by Sakara Yevhen (eresid[at]gmail[dot]com) and Igor Paliychuk (igor-hkr[at]mail[dot]ru)
- Update Russian translation for spider

svn path=/trunk/; revision=45204
2010-01-22 16:53:12 +00:00
James Tabor 94298228e1 [Win32k]
- Remove CriticalRegion calls.

svn path=/trunk/; revision=45198
2010-01-22 01:29:21 +00:00
James Tabor be48e3ae53 [Win32k]
- Remove CriticalRegion calls.

svn path=/trunk/; revision=45197
2010-01-22 01:12:06 +00:00
Timo Kreuzer f4519c0c43 Merge from amd64-branch:
44886 KxAcquireSpinLock: check for already owned lock only on debug builds, fix check in inner loop, don't call Kii386SpinOnSpinLock inside the inner loop, but instead of it, simplify the code. Stubplement Kii386SpinOnSpinLock in C
44893 Move spinlock inline functions into their own header, so they can be shared with hal.

svn path=/trunk/; revision=45196
2010-01-21 22:34:01 +00:00
Timo Kreuzer 36d8d87a11 [HAL]
Cleanup part 1/x
- Rename each architectures default hal to "hal" and delete the stubbed "hal" module.
- Delete halamd64 (will later reuse the x86 hal)
- Rename "halmp" to "halmps" as it's called on windows
- Set HalInitSystem as entry point
- Move pcibus.c into hal_generic.rbuild
- Use a common .pspec file
- Use a directory.rbuild for halx86 as it was done for the other architectures already
- Move some code from hal_generic to hal_generic_up
- No code change

svn path=/trunk/; revision=45195
2010-01-21 21:05:45 +00:00
Christoph von Wittich 051cf08911 [HAL]
-header cleanup
-spaces -> tabs in rbuild file

svn path=/trunk/; revision=45183
2010-01-21 13:43:49 +00:00
Sir Richard 819e842b8e [HAL]: The HAL is a mess. Fix build.
svn path=/trunk/; revision=45182
2010-01-21 13:36:30 +00:00
James Tabor 890497afd7 [Win32k]
- Fixes to region support code. See bug 5124. 

svn path=/trunk/; revision=45181
2010-01-21 13:18:33 +00:00
Sir Richard 202f931c4e [HAL]: Initialize the i8259A PIC controllers in C, and add register structures and enumerations to document the bits. These were taken from ISA System Architecture 3rd Edition and EISA System Architecture 2nd Edition by Mindshare.
[HAL]: Add code to detect EISA systems with ELCR (Edge/Level Control Register). Since the current HAL does not support these, warn users about any level/shared interrupts, since they are likely to cause trouble.

svn path=/trunk/; revision=45180
2010-01-21 12:51:13 +00:00
Cameron Gutman ffdab4c2f5 Merge aicom-network-branch (without NDIS changes for now)
New noteworthy improvements include (in addition to the other improvements made in the commits that were reverted in trunk):
 - Support for sending/receiving packets > 16KB in size
 - Samba-tng works
 - Tracert works
 - Major speed and stability improvements (especially for TCP connections)
 - Use ExAllocatePoolWithTag/ExFreePoolWithTag instead of memtrack

svn path=/trunk/; revision=45172
2010-01-21 03:48:10 +00:00
James Tabor 1964950642 [Win32k]
- Add system region support functions.

svn path=/trunk/; revision=45171
2010-01-21 02:58:52 +00:00
James Tabor d0d7c7c47f [Win32k]
- Implement IntGdiSetBrushOwner for bug 5124. 

svn path=/trunk/; revision=45170
2010-01-21 01:39:19 +00:00
James Tabor 2899820ed5 [User32]
- Revert 44988, fix crash in win user32 wine test.

svn path=/trunk/; revision=45169
2010-01-21 00:49:25 +00:00
James Tabor 25b52444b5 [Win32k]
- System regions do not possess user attribute sections. See bug 5124.
- Read the patch for more information.

svn path=/trunk/; revision=45168
2010-01-21 00:14:06 +00:00
Timo Kreuzer 801f2e9f36 [RTL]
Fix a bug in RtlFindNextForwardRunSet, that was returning the wrong bit position. Found by Amine Khaldi.

svn path=/trunk/; revision=45167
2010-01-20 23:34:21 +00:00
Daniel Reimer 6519a78fee Try to fix FF2 Download.
svn path=/trunk/; revision=45166
2010-01-20 23:19:22 +00:00
Timo Kreuzer 74cd1f3fa7 [CRT]
Remove unused variables. Patch by Amine Khaldi.

svn path=/trunk/; revision=45165
2010-01-20 22:56:01 +00:00
Sir Richard fc405bb3c2 [RBUILD]: Use correct kernel entrypoint symbol name. Forgot to commit this earlier.
Please, next time before you harass us with e-mails, try to read your logs. LD choses a random entrypoint if the symbol cannot be found.

svn path=/trunk/; revision=45162
2010-01-20 14:09:50 +00:00
Dmitry Gorbachev d6fa8735be Fix build-2.
svn path=/trunk/; revision=45161
2010-01-20 10:59:39 +00:00
Dmitry Gorbachev 274f2bcdb3 Fix build.
svn path=/trunk/; revision=45160
2010-01-20 10:38:40 +00:00
Sir Richard 01d2a95033 [NTOS]: Implement KiSwapProcess in C.
[NTOS]: Implement KiIsNpxPresent and KiIsNpxErrataPresent in C. It's much clearer what these are doing now.
[NTOS]: Implement KiFlushNPXState and fix some bugs that were present in the ASM version, such as a wrong NPX state check.
[NTOS]: Implement working intrinsics for fxrstor, fxsave, fnsave and enable them for flushing. We'll update the FPU trap code to use these later.

svn path=/trunk/; revision=45156
2010-01-20 04:05:08 +00:00
James Tabor 04a018d92b - Add dclevel flags.
svn path=/trunk/; revision=45155
2010-01-20 01:40:27 +00:00
Sir Richard fdc6352f10 [NTOS]: Workaround for GCC 4.4.x bug reported by Dmitry.
svn path=/trunk/; revision=45154
2010-01-19 22:21:12 +00:00
Kamil Hornicek 6a901b0a67 - fix build, thanks Black_Fox
svn path=/trunk/; revision=45153
2010-01-19 21:19:56 +00:00
Sir Richard 2b21bf41f4 [FREELDR]: Jump to a standard 1-parameter STDCALL kernel entrypoint instead of a FASTCALL double-parameter entrypoint.
[NTOS]: Make KiSystemStartup the real C entrypoint of the kernel, and move the "Am I being booted by FreeLDR" logic inside it -- it will then call KiRosPrepareForSystemStartup as earlier.
[NTOS]: Move the Double Fault and Boot Stack declaration in C code, with the proper alignment attribute.
[NTOS]: Although the concern that KiSystemStartup cannot be 100% C since it modifies ESP is real (Thomas' original fix of Alex's code), we don't need that much of it in assembly. Instead, write a simple trampoline (KiSwitchToBootStack) inline which switches stacks and jumps to a second-stage C function.
[NTOS]: Completely remove boot.S as it isn't needed anymore, ReactOS startup is back to being (nearly) 100% C.

svn path=/trunk/; revision=45152
2010-01-19 18:27:24 +00:00
Sir Richard b5b72b8be6 [NTOS]: Try backing out a change to see if thix fixes BuildBot.
svn path=/trunk/; revision=45150
2010-01-19 15:26:16 +00:00