OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-s390x/] [smplock.h] - Blame information for rev 1774

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/*
2
 *  include/asm-s390/smplock.h
3
 *
4
 *  S390 version
5
 *
6
 *  Derived from "include/asm-i386/smplock.h"
7
 */
8
 
9
#include <linux/interrupt.h>
10
#include <linux/spinlock.h>
11
 
12
extern spinlock_t kernel_flag;
13
 
14
#define kernel_locked()                spin_is_locked(&kernel_flag)
15
 
16
/*
17
 * Release global kernel lock and global interrupt lock
18
 */
19
#define release_kernel_lock(task, cpu)     \
20
do {                                       \
21
        if (task->lock_depth >= 0)         \
22
                spin_unlock(&kernel_flag); \
23
        release_irqlock(cpu);              \
24
        __sti();                           \
25
} while (0)
26
 
27
/*
28
 * Re-acquire the kernel lock
29
 */
30
#define reacquire_kernel_lock(task)        \
31
do {                                       \
32
        if (task->lock_depth >= 0)         \
33
                spin_lock(&kernel_flag);   \
34
} while (0)
35
 
36
 
37
/*
38
 * Getting the big kernel lock.
39
 *
40
 * This cannot happen asynchronously,
41
 * so we only need to worry about other
42
 * CPU's.
43
 */
44
/*
45
 * Getting the big kernel lock.
46
 *
47
 * This cannot happen asynchronously,
48
 * so we only need to worry about other
49
 * CPU's.
50
 */
51
extern __inline__ void lock_kernel(void)
52
{
53
        if (!++current->lock_depth)
54
                spin_lock(&kernel_flag);
55
}
56
 
57
extern __inline__ void unlock_kernel(void)
58
{
59
        if (--current->lock_depth < 0)
60
                spin_unlock(&kernel_flag);
61
}
62
 

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.