Author: sir_richard
Date: Sat Jan 23 20:31:54 2010
New Revision: 45214
URL: http://svn.reactos.org/svn/reactos?rev=45214&view=rev
Log:
[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).
Modified:
trunk/reactos/ntoskrnl/ntoskrnl.pspec
Modified: trunk/reactos/ntoskrnl/ntoskrnl.pspec
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ntoskrnl.pspec?re…
==============================================================================
--- trunk/reactos/ntoskrnl/ntoskrnl.pspec [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ntoskrnl.pspec [iso-8859-1] Sat Jan 23 20:31:54 2010
@@ -701,6 +701,7 @@
@ fastcall KefReleaseSpinLockFromDpcLevel(ptr)
#ifdef _M_IX86
@ stdcall Kei386EoiHelper()
+@ fastcall KiEoiHelper(ptr) /* FIXME: Evaluate decision */
#endif
@ fastcall KiAcquireSpinLock(ptr)
@ extern KiBugCheckData
Author: sir_richard
Date: Sat Jan 23 20:28:26 2010
New Revision: 45212
URL: http://svn.reactos.org/svn/reactos?rev=45212&view=rev
Log:
[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!
Modified:
trunk/reactos/ntoskrnl/ke/i386/trap.s
Modified: trunk/reactos/ntoskrnl/ke/i386/trap.s
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/trap.s?re…
==============================================================================
--- trunk/reactos/ntoskrnl/ke/i386/trap.s [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ke/i386/trap.s [iso-8859-1] Sat Jan 23 20:28:26 2010
@@ -320,6 +320,9 @@
.func KiDispatchInterrupt@0
_KiDispatchInterrupt@0:
+ /* Preserve EBX */
+ push ebx
+
/* Get the PCR and disable interrupts */
mov ebx, PCR[KPCR_SELF]
cli
@@ -418,12 +421,14 @@
Return:
/* All done */
+ pop ebx
ret
QuantumEnd:
/* Disable quantum end and process it */
mov byte ptr [ebx+KPCR_PRCB_QUANTUM_END], 0
call _KiQuantumEnd@0
+ pop ebx
ret
.endfunc
Author: sir_richard
Date: Sat Jan 23 19:28:14 2010
New Revision: 45210
URL: http://svn.reactos.org/svn/reactos?rev=45210&view=rev
Log:
[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.
Modified:
trunk/reactos/include/ndk/i386/ketypes.h
Modified: trunk/reactos/include/ndk/i386/ketypes.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/i386/ketypes.h…
==============================================================================
--- trunk/reactos/include/ndk/i386/ketypes.h [iso-8859-1] (original)
+++ trunk/reactos/include/ndk/i386/ketypes.h [iso-8859-1] Sat Jan 23 19:28:14 2010
@@ -27,10 +27,10 @@
// KPCR Access for non-IA64 builds
//
#define K0IPCR ((ULONG_PTR)(KIP0PCRADDRESS))
-#define PCR ((volatile KPCR * const)K0IPCR)
+#define PCR ((KPCR * const)K0IPCR)
#if defined(CONFIG_SMP) || defined(NT_BUILD)
#undef KeGetPcr
-#define KeGetPcr() ((volatile KPCR * const)__readfsdword(0x1C))
+#define KeGetPcr() ((KPCR * const)__readfsdword(FIELD_OFFSET(KPCR, Self)))
#endif
//
Author: dgorbachev
Date: Sat Jan 23 18:26:30 2010
New Revision: 45209
URL: http://svn.reactos.org/svn/reactos?rev=45209&view=rev
Log:
Fix English translation of RApps. Andrew Faulds (ajfweb =at= googlemail =dot= com), bug #5138.
Modified:
trunk/reactos/base/applications/rapps/lang/en-US.rc
Modified: trunk/reactos/base/applications/rapps/lang/en-US.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/rapps/la…
==============================================================================
--- trunk/reactos/base/applications/rapps/lang/en-US.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/rapps/lang/en-US.rc [iso-8859-1] Sat Jan 23 18:26:30 2010
@@ -59,10 +59,10 @@
AUTOCHECKBOX "&Log of installation and removal of programs", IDC_LOG_ENABLED, 15, 46, 219, 12
GROUPBOX "Downloading", -1, 4, 65, 240, 51
- LTEXT "Folder for downloadings:", -1, 16, 75, 100, 9
+ LTEXT "Downloads folder:", -1, 16, 75, 100, 9
EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | WS_GROUP
PUSHBUTTON "&Choose", IDC_CHOOSE, 187, 85, 50, 14
- AUTOCHECKBOX "&Delete installers of programs after installation", IDC_DEL_AFTER_INSTALL, 16, 100, 218, 12
+ AUTOCHECKBOX "&Delete program installer after installation", IDC_DEL_AFTER_INSTALL, 16, 100, 218, 12
PUSHBUTTON "Default", IDC_DEFAULT_SETTINGS, 8, 124, 60, 14
PUSHBUTTON "OK", IDOK, 116, 124, 60, 14
@@ -184,9 +184,9 @@
IDS_AVAILABLEFORINST "Available for installation"
IDS_UPDATES "Updates"
IDS_APPLICATIONS "Applications"
- IDS_CHOOSE_FOLDER_TEXT "Choose a folder which will be used for downloading of programs:"
- IDS_CHOOSE_FOLDER_ERROR "You have specified a nonexistent folder!"
- IDS_USER_NOT_ADMIN "You should be administrator for start ""ReactOS Applications Manager""!"
+ IDS_CHOOSE_FOLDER_TEXT "Choose a folder which will store Downloads:"
+ IDS_CHOOSE_FOLDER_ERROR "The folder you have specified does not exist."
+ IDS_USER_NOT_ADMIN "You must be an administrator to start ""ReactOS Applications Manager""!"
IDS_APP_REG_REMOVE "Are you sure you want to delete the data on the installed program from the registry?"
IDS_INFORMATION "Information"
IDS_UNABLE_TO_REMOVE "Unable to remove data on the program from the registry!"