... You don't need them on SMP... sigh. Please stop replacing code when you have NO idea what you're doing!!!
On 2009-12-31, at 6:45 PM, [email protected] wrote: > Author: tkreuzer > Date: Fri Jan 1 00:45:36 2010 > New Revision: 44840 > > URL: http://svn.reactos.org/svn/reactos?rev=44840&view=rev > Log: > [HAL] > Replace the asm implementations of HalpAcquireSystemHardwareSpinLock and > HalpReleaseCmosSpinLock with C implementations. The old ones didn't work on > SMP, as they were only compiled once as UP. > > Modified: > branches/ros-amd64-bringup/reactos/hal/halx86/generic/amd64/systimer.S > branches/ros-amd64-bringup/reactos/hal/halx86/generic/cmos.c > branches/ros-amd64-bringup/reactos/hal/halx86/generic/i386/systimer.S > > Modified: > branches/ros-amd64-bringup/reactos/hal/halx86/generic/amd64/systimer.S > URL: > http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/hal/halx86/generic/amd64/systimer.S?rev=44840&r1=44839&r2=44840&view=diff > ============================================================================== > --- branches/ros-amd64-bringup/reactos/hal/halx86/generic/amd64/systimer.S > [iso-8859-1] (original) > +++ branches/ros-amd64-bringup/reactos/hal/halx86/generic/amd64/systimer.S > [iso-8859-1] Fri Jan 1 00:45:36 2010 > @@ -14,9 +14,6 @@ > > .data > > -_UnhandledMsg: > - .asciz "\n\x7\x7!!! Unhandled or Unexpected Code at line: %lx!!!\n" > - > .global _MsgUnimplemented > _MsgUnimplemented: > .asciz "WARNING: %s at %s:%d is UNIMPLEMENTED!\n" > @@ -26,18 +23,6 @@ > > .text > .code64 > - > -.global _HalpReleaseCmosSpinLock > -.func HalpReleaseCmosSpinLock > -_HalpReleaseCmosSpinLock: > - > -.endfunc > - > -.global _HalpAcquireSystemHardwareSpinLock > -.func HalpAcquireSystemHardwareSpinLock > -_HalpAcquireSystemHardwareSpinLock: > - > -.endfunc > > .global _halpcalibratestallexecut...@0 > .func halpcalibratestallexecut...@0 > > Modified: branches/ros-amd64-bringup/reactos/hal/halx86/generic/cmos.c > URL: > http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/hal/halx86/generic/cmos.c?rev=44840&r1=44839&r2=44840&view=diff > ============================================================================== > --- branches/ros-amd64-bringup/reactos/hal/halx86/generic/cmos.c [iso-8859-1] > (original) > +++ branches/ros-amd64-bringup/reactos/hal/halx86/generic/cmos.c [iso-8859-1] > Fri Jan 1 00:45:36 2010 > @@ -5,6 +5,7 @@ > * PURPOSE: CMOS Access Routines (Real Time Clock and LastKnownGood) > * PROGRAMMERS: Alex Ionescu ([email protected]) > * Eric Kohl ([email protected]) > + * Timo Kreuzer ([email protected]) > */ > > /* INCLUDES > ******************************************************************/ > @@ -17,8 +18,50 @@ > > KSPIN_LOCK HalpSystemHardwareLock; > UCHAR HalpCmosCenturyOffset; > +ULONG HalpSystemHardwareFlags; > > /* PRIVATE FUNCTIONS > *********************************************************/ > + > +VOID > +NTAPI > +HalpAcquireSystemHardwareSpinLock(VOID) > +{ > + ULONG Flags; > + > + /* Get flags and disable interrupts */ > + Flags = __readeflags(); > + _disable(); > + > + /* Try to acquire the lock */ > + while (InterlockedBitTestAndSet((PLONG)&HalpSystemHardwareLock, 0)) > + { > + /* Lock is held, short wait and try again */ > + YieldProcessor(); > + } > + > + /* We have the lock, save the flags now */ > + HalpSystemHardwareFlags = Flags; > +} > + > +VOID > +NTAPI > +HalpReleaseCmosSpinLock(VOID) > +{ > + ULONG Flags; > + > + /* Get the flags */ > + Flags = HalpSystemHardwareFlags; > + > + /* Release lock and check if we owned it */ > + if (!InterlockedBitTestAndReset((PLONG)&HalpSystemHardwareLock, 0)) > + { > + /* The spin lock was not owned! */ > + KeBugCheckEx(SPIN_LOCK_NOT_OWNED, 0, 0, 0, 0); > + } > + > + /* Restore the flags */ > + __writeeflags(Flags); > +} > > FORCEINLINE > UCHAR > > Modified: > branches/ros-amd64-bringup/reactos/hal/halx86/generic/i386/systimer.S > URL: > http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/hal/halx86/generic/i386/systimer.S?rev=44840&r1=44839&r2=44840&view=diff > ============================================================================== > --- branches/ros-amd64-bringup/reactos/hal/halx86/generic/i386/systimer.S > [iso-8859-1] (original) > +++ branches/ros-amd64-bringup/reactos/hal/halx86/generic/i386/systimer.S > [iso-8859-1] Fri Jan 1 00:45:36 2010 > @@ -17,82 +17,11 @@ > _HalpLastPerfCounterHigh: .long 0 > _HalpPerfCounterLow: .long 0 > _HalpPerfCounterHigh: .long 0 > -_HalpSystemHardwareFlags: .long 0 > > _UnhandledMsg: > .asciz "\n\x7\x7!!! Unhandled or Unexpected Code at line: %lx!!!\n" > > /* FUNCTIONS > *****************************************************************/ > - > -.global _halpreleasecmosspinl...@0 > -.func halpreleasecmosspinl...@0 > -_halpreleasecmosspinl...@0: > - > -#ifdef CONFIG_SMP > - /* Save clobbered register */ > - push eax > - > - /* Push saved EFLAGS */ > - push _HalpSystemHardwareFlags > - > - /* Release the lock */ > - lea eax, _HalpSystemHardwareLock > - RELEASE_SPINLOCK(eax) > - > - /* Restore EFLAGS */ > - popf > - > - /* Return */ > - pop eax > - ret > -#else > - /* Restore EFLAGS and return */ > - push _HalpSystemHardwareFlags > - popf > - ret > -#endif > - > -.endfunc > - > -.global _halpacquiresystemhardwarespinl...@0 > -.func halpacquiresystemhardwarespinl...@0 > -_halpacquiresystemhardwarespinl...@0: > - > -#ifdef CONFIG_SMP > - /* Save clobbered register */ > - push eax > - > -HardwareLock: > - /* Save EFLAGS and disable interrupts */ > - pushf > - cli > - > - /* This is the CMOS lock, acquire it */ > - lea eax, _HalpSystemHardwareLock > - ACQUIRE_SPINLOCK(eax, CmosSpin) > - > - /* We have it, return the flags */ > - pop _HalpSystemHardwareFlags > - pop eax > - ret > - > -CmosSpin: > - > - /* Restore EFLAGS */ > - pushf _HalpSystemHardwareLock > - popf > - > - /* Spin */ > - SPIN_ON_LOCK(eax, HardwareLock) > -#else > - /* Save EFLAGS, disable interrupts and return */ > - pushf > - cli > - pop _HalpSystemHardwareFlags > - ret > -#endif > - > -.endfunc > > .global _halpcalibratestallexecut...@0 > .func halpcalibratestallexecut...@0 > > Best regards, Alex Ionescu _______________________________________________ Ros-dev mailing list [email protected] http://www.reactos.org/mailman/listinfo/ros-dev
