It seems the old binutils versions don't have a problem with "cmpxchg8b" but
with "qword ptr". The patch below makes the code compile on older versions
again. Any objections to committing it?
I've created a bug 1264 for keeping track of the "no longer works on i486"
issue.
GvG
Index: ntoskrnl/ex/i386/fastinterlck_asm.S
===================================================================
--- ntoskrnl/ex/i386/fastinterlck_asm.S (revision 20747)
+++ ntoskrnl/ex/i386/fastinterlck_asm.S (working copy)
@@ -405,7 +405,7 @@
/* Get next pointer and do the exchange */
mov ebx, [eax]
- LOCK cmpxchg8b qword ptr [ebp]
+ LOCK cmpxchg8b [ebp]
jnz 1b
/* Restore registers and return */
@@ -449,7 +449,7 @@
lea ecx, [edx+0x10001]
/* Do the exchange */
- LOCK cmpxchg8b qword ptr [ebp]
+ LOCK cmpxchg8b [ebp]
jnz 1b
/* Restore registers and return */
@@ -489,7 +489,7 @@
mov cx, bx
/* Do the exchange */
- LOCK cmpxchg8b qword ptr [ebp]
+ LOCK cmpxchg8b [ebp]
jnz 1b
/* Restore registers and return */
@@ -623,7 +623,7 @@
mov edx, [edx+4]
/* Do the op */
- LOCK cmpxchg8b qword ptr [ebp]
+ LOCK cmpxchg8b [ebp]
/* Restore volatiles */
pop ebp
@@ -655,7 +655,7 @@
mov edx, [edx+4]
/* Do the op */
- LOCK cmpxchg8b qword ptr [ebp]
+ LOCK cmpxchg8b [ebp]
/* Restore volatiles */
pop ebp
ion(a)svn.reactos.org wrote:
> - Fix shamefully dangerously broken Work Thread/Queue/Item implementation:
> * Do not pollute the kernel with 10 real-time threads and 5 high-priority threads in order to manage work items. Work threads are very-low priority (< 7) and should never pre-empt userthreads like they do now. 1 priority 7, 5 priority 5 and 3 priority 4 threads are now properly created.
> * Implement a worker thread balance set manager. On SMP systems, it is able to determine when a new thread should be allocate to execute on a free CPU. On both UP and MP, it is also able to detect if a work queue has deadlocked, and will allocate new dynamic threads to unfreeze the queue.
> * Add check for threads returning with APC disabled, and re-enable APCs if this happend. This hack is used in NT for broken drivers.
> * Lots of code changes to support dynamic threads, which:
> - Can terminate.
> - Use a 10 minute timeout on the kernel queue.
> * Add skeleton code for swapping worker thread stacks as well as worker thread shutdown (not yet implemented).
> * Add WORKER_INVALID bugcheck definition.
> * These changes seem to make ROS a lot more responsive.
>
> - NDK:
> * Make more compatible with MS IFS
> * Fix EX_WORK_QUEUE definition.
> * Fix ETHREAD offsets.
> * Fix RtlIsNameLegalDOS8Dot3 definition.
> * Move splay tree defines to IFS.
>
>
> Updated files:
> trunk/reactos/include/ndk/exfuncs.h
> trunk/reactos/include/ndk/extypes.h
> trunk/reactos/include/ndk/ifssupp.h
> trunk/reactos/include/ndk/iofuncs.h
> trunk/reactos/include/ndk/obfuncs.h
> trunk/reactos/include/ndk/pstypes.h
> trunk/reactos/include/ndk/rtlfuncs.h
> trunk/reactos/include/ndk/rtltypes.h
> trunk/reactos/lib/rtl/dos8dot3.c
> trunk/reactos/ntoskrnl/ex/work.c
> trunk/reactos/ntoskrnl/ntoskrnl.mc
> trunk/reactos/w32api/include/ddk/ntifs.h
>
> _______________________________________________
> Ros-svn mailing list
> Ros-svn(a)reactos.org
> http://www.reactos.org/mailman/listinfo/ros-svn
>
>
After applying this commit, I get a crash during compiling ros on ros
with 'make clean' on a clean tree on my smp machine:
Assertion (Thread->State == Waiting) == (Thread->WaitBlockList != NULL)
failed at ./ntoskrnl/ke/wait.c:722
I don't get a back trace. It may be a problem of the broken ASSERT
statement (DBG=1 and KDBG=0).
- Hartmut
Why is the ReactOS version of wininet out of sync with Wine?
There have been a ton of fixes going into Wine in recent months that
unfortunately ReactOS is missing out on.
--
Rob Shearman
On 08.01.2006 11:23:52 ion(a)svn.reactos.org wrote:
> - userinit, usetup, vmwinst, welcome, winefile, winlogon, winver.
> Updated files:
...
> trunk/reactos/subsys/system/winefile/winefile.c
May I ask what this changes should be for?
Adding "__cdecl" attributes doesn't make much sense for me.
And winefile compiles without problems on MSVC since ages.
Regards,
Martin
cwittich(a)svn.reactos.org wrote:
> - GetFileTitle(szFileName, Globals.szFileTitle, sizeof(Globals.szFileTitle));
>
> + GetFileTitle(szFileName, Globals.szFileTitle, wcslen(Globals.szFileTitle));
This change is wrong, sizeof(Globals.szFileTitle) is correct. The last
parameter is the size of the buffer the second parameter represents.
- Thomas
cwittich(a)svn.reactos.org wrote:
> + Data = (TCHAR*) HeapAlloc(GetProcessHeap(), 0, MAX_VALUE_NAME);
It should be MAX_VALUE_NAME * sizeof(TCHAR)
- Thomas
Royce Mitchell III wrote
> How are you source-level debugging ros?
Probably using Insight, that's what I use when building with mingw.
I don't know assembly well enough to even consider it.
Ged.
************************************************************************
The information contained in this message or any of its
attachments is confidential and is intended for the exclusive
use of the addressee. The information may also be legally
privileged. The views expressed may not be company policy,
but the personal views of the originator. If you are not the
addressee, any disclosure, reproduction, distribution or other
dissemination or use of this communication is strictly prohibited.
If you have received this message in error, please contact
postmaster(a)exideuk.co.uk
<mailto:postmaster@exideuk.co.uk> and then delete this message.
Exide Technologies is an industrial and transportation battery
producer and recycler with operations in 89 countries.
Further information can be found at www.exide.com
I just got this error when trying to compile reactos:
> reub2000@reub2000 ~/reactos $ svn up && make clean && make
> At revision 20661.
> [CC] tools/rbuild/backend/msvc/vcprojmaker.cpp
> [CC] tools/rbuild/module.cpp
> [LD] output-i386/tools/rbuild/rbuild
> [NCI] ntoskrnl/include/internal/napi.h
> make: *** No rule to make target `drivers/net/npf/npf.xml', needed by
> `makefile.auto'. Stop.
>+ case CB_LIMITTEXT:
>+ if( lphc->wState & CBF_EDIT )
>+ return SendMessageW(lphc->hWndEdit, EM_LIMITTEXT, wParam, lParam);
>
>
<- "break;" statement is missing here and the indentation is fscked up.
- Filip