--- lock/include/asm-ppc/smplock.h.~1~ Mon Oct 2 22:28:15 2000 +++ lock/include/asm-ppc/smplock.h Mon Oct 2 23:32:50 2000 @@ -26,6 +26,25 @@ spin_lock(&kernel_flag); \ } while (0) +#define DECLARE_LOCAL_LOCK_DEPTH(x) int x + +#define release_kernel_lock_save(local_depth) \ +do { \ + (local_depth) = current->lock_depth; \ + if ((local_depth) >= 0) { \ + current->lock_depth = -1; \ + spin_unlock(&kernel_flag); \ + } \ +} while (0) + +#define reacquire_kernel_lock_restore(local_depth) \ +do { \ + if ((local_depth) >= 0) { \ + current->lock_depth = local_depth; \ + spin_lock(&kernel_flag); \ + } \ +} while (0) + /* * Getting the big kernel lock. --- lock/include/asm-sparc/smplock.h.~1~ Mon Oct 2 22:28:15 2000 +++ lock/include/asm-sparc/smplock.h Mon Oct 2 23:31:56 2000 @@ -26,6 +26,25 @@ spin_lock(&kernel_flag); \ } while (0) +#define DECLARE_LOCAL_LOCK_DEPTH(x) int x + +#define release_kernel_lock_save(local_depth) \ +do { \ + (local_depth) = current->lock_depth; \ + if ((local_depth) >= 0) { \ + current->lock_depth = -1; \ + spin_unlock(&kernel_flag); \ + } \ +} while (0) + +#define reacquire_kernel_lock_restore(local_depth) \ +do { \ + if ((local_depth) >= 0) { \ + current->lock_depth = local_depth; \ + spin_lock(&kernel_flag); \ + } \ +} while (0) + /* * Getting the big kernel lock. --- lock/include/asm-sparc64/smplock.h.~1~ Mon Oct 2 22:28:16 2000 +++ lock/include/asm-sparc64/smplock.h Mon Oct 2 23:32:13 2000 @@ -27,6 +27,25 @@ spin_lock(&kernel_flag); \ } while (0) +#define DECLARE_LOCAL_LOCK_DEPTH(x) int x + +#define release_kernel_lock_save(local_depth) \ +do { \ + (local_depth) = current->lock_depth; \ + if ((local_depth) >= 0) { \ + current->lock_depth = -1; \ + spin_unlock(&kernel_flag); \ + } \ +} while (0) + +#define reacquire_kernel_lock_restore(local_depth) \ +do { \ + if ((local_depth) >= 0) { \ + current->lock_depth = local_depth; \ + spin_lock(&kernel_flag); \ + } \ +} while (0) + /* * Getting the big kernel lock.