From: Kenn H. <ke...@us...> - 2001-01-23 23:55:40
|
Update of /cvsroot/linux-vax/kernel-2.4/include/asm-vax In directory usw-pr-cvs1:/tmp/cvs-serv30466 Modified Files: system.h Log Message: Bring over latter 2.2 changes Index: system.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/include/asm-vax/system.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** system.h 2001/01/18 15:52:28 1.2 --- system.h 2001/01/23 23:55:57 1.3 *************** *** 14,18 **** ! /* FIXME: process context switch */ /* --- 14,18 ---- ! #include <asm/psl.h> /* *************** *** 39,43 **** #define switch_to(prev,next,last) \ do { \ ! (last) = vax_switch_to((prev), (next)); \ } while (0) --- 39,47 ---- #define switch_to(prev,next,last) \ do { \ ! if ((prev) == (next)) { \ ! (last) = (prev); \ ! } else { \ ! (last) = vax_switch_to((prev), (next)); \ ! } \ } while (0) *************** *** 53,59 **** * Force strict CPU ordering. Stubbed out FIXME: */ ! #define mb() __asm__ __volatile__("nop": : :"memory") ! #define rmb() asm volatile ("" : : :"memory") ! #define wmb() asm volatile ("" : : :"memory") #define set_mb(var, value) do { xchg(&var, value); } while (0) #define set_wmb(var, value) do { var = value; wmb(); } while (0) --- 57,63 ---- * Force strict CPU ordering. Stubbed out FIXME: */ ! #define mb() __asm__ __volatile__("": : :"memory") ! #define rmb() mb() ! #define wmb() mb() #define set_mb(var, value) do { xchg(&var, value); } while (0) #define set_wmb(var, value) do { var = value; wmb(); } while (0) *************** *** 78,82 **** #define __cli() setipl(31) ! #define __sti() setipl(0) #define __save_flags(flags) ((flags) = getipl()) #define __save_and_cli(flags) ((flags) = swpipl(31)) --- 82,106 ---- #define __cli() setipl(31) ! ! /* If we're handling an interrupt (i.e. the IS bit is set in the ! PSL and we're on the interrupt stack), then we must not enable ! interrupts by dropping IPL all the way to 0. If we do, and ! another interrupt comes in, then this second interrupt will ! be handled normally, but will REI to a PSL with IS set and ! an IPL of 0, which REI doesn't like at all. ! ! So, instead, we drop IPL to 1 if we're running on the interrupt ! stack, thus making sure that REI will be kept happy. */ ! ! extern __inline__ void ! __sti(void) ! { ! if (__psl.is) { ! setipl(1); ! } else { ! setipl(0); ! } ! } ! #define __save_flags(flags) ((flags) = getipl()) #define __save_and_cli(flags) ((flags) = swpipl(31)) |