Looks to me like we're missing some proper asm clobber markers: diff -u -r1.13 system.h --- system.h 4 Feb 2002 17:35:51 -0000 1.13 +++ system.h 17 Jun 2002 18:18:56 -0000 @@ -41,7 +41,8 @@ "__sti" : /* no outputs */ : /* no inputs */ - : "memory"); + : "$1","memory" + ); } /* @@ -73,7 +74,7 @@ "__cli" : /* no outputs */ : /* no inputs */ - : "memory"); + : "$1","memory"); } __asm__ ( @@ -110,7 +111,7 @@ "__save_and_cli\t%0" \ : "=r" (x) \ : /* no inputs */ \ - : "memory") + : "$1","memory") __asm__(".macro\t__restore_flags flags\n\t" ".set\tpush\n\t" @@ -136,7 +137,7 @@ "__restore_flags\t%0" \ : "=r" (__tmp1) \ : "0" (flags) \ - : "memory"); \ + : "$1","memory"); \ } while(0) #ifdef CONFIG_SMP