[ros-dev] compile problem

Hartmut Birr hartmut.birr at gmx.de
Sat Jun 18 23:38:04 CEST 2005


Ge van Geldorp wrote:

>>From: Hartmut Birr
>>
>>does anyone understand this error message:
>>ntoskrnl\io\driver.c:1693: error: unable to find a register 
>>to spill in class `CREG'
>>    
>>
>
>I got the same error message recently (only for DIREG instead of CREG) when
>I put edi both in the input list ("=D") and in the clobber list ("%edi") of
>some extended assembly. Rewriting the asm code to load edi ourselves instead
>of letting the compiler do it fixed that.
>  
>
There isn't any assembler code in driver.c. If I change the code in
IopReinitializeDrivers a little bit, I've no problems.

M:\Sandbox\ros_work\reactos>svn diff ntoskrnl\io\driver.c
Index: ntoskrnl/io/driver.c
===================================================================
--- ntoskrnl/io/driver.c        (Revision 16057)
+++ ntoskrnl/io/driver.c        (Arbeitskopie)
@@ -1659,16 +1659,16 @@
   KeAcquireSpinLock(&DriverReinitListLock,
                    &Irql);

-  if (DriverReinitTailEntry == NULL)
+  Entry = DriverReinitTailEntry;
+
+  KeReleaseSpinLock(&DriverReinitListLock,
+                   Irql);
+
+  if (Entry == NULL)
   {
-    KeReleaseSpinLock(&DriverReinitListLock,
-                     Irql);
     return;
   }

-  KeReleaseSpinLock(&DriverReinitListLock,
-                   Irql);
-
   for (;;)
   {
     Entry = ExInterlockedRemoveHeadList(&DriverReinitListHead,

- Hartmut



More information about the Ros-dev mailing list