Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
b77e5d86
Commit
b77e5d86
authored
Aug 13, 2002
by
Anton Blanchard
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://ppc.bkbits.net/for-linus-ppc64
into samba.org:/scratch/anton/linux-2.5_ppc64
parents
88d02e13
40420e9b
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
35 additions
and
18 deletions
+35
-18
arch/ppc64/kernel/idle.c
arch/ppc64/kernel/idle.c
+1
-0
arch/ppc64/kernel/ppc_ksyms.c
arch/ppc64/kernel/ppc_ksyms.c
+0
-4
arch/ppc64/kernel/time.c
arch/ppc64/kernel/time.c
+1
-0
arch/ppc64/lib/Makefile
arch/ppc64/lib/Makefile
+2
-0
arch/ppc64/lib/dec_and_lock.c
arch/ppc64/lib/dec_and_lock.c
+30
-13
include/asm-ppc64/delay.h
include/asm-ppc64/delay.h
+1
-1
No files found.
arch/ppc64/kernel/idle.c
View file @
b77e5d86
...
...
@@ -18,6 +18,7 @@
#include <linux/unistd.h>
#include <linux/ptrace.h>
#include <linux/slab.h>
#include <linux/interrupt.h>
#include <asm/pgtable.h>
#include <asm/uaccess.h>
...
...
arch/ppc64/kernel/ppc_ksyms.c
View file @
b77e5d86
...
...
@@ -245,8 +245,4 @@ EXPORT_SYMBOL(debugger_dabr_match);
EXPORT_SYMBOL
(
debugger_fault_handler
);
#endif
#ifdef CONFIG_SMP
EXPORT_SYMBOL
(
atomic_dec_and_lock
);
#endif
EXPORT_SYMBOL
(
tb_ticks_per_usec
);
arch/ppc64/kernel/time.c
View file @
b77e5d86
...
...
@@ -60,6 +60,7 @@
#include <asm/time.h>
#include <asm/ppcdebug.h>
#include <asm/prom.h>
void
smp_local_timer_interrupt
(
struct
pt_regs
*
);
...
...
arch/ppc64/lib/Makefile
View file @
b77e5d86
...
...
@@ -4,6 +4,8 @@
O_TARGET
=
lib.o
export-objs
:=
dec_and_lock.o
obj-y
:=
checksum.o dec_and_lock.o string.o strcase.o copypage.o
\
memcpy.o copyuser.o
...
...
arch/ppc64/lib/dec_and_lock.c
View file @
b77e5d86
...
...
@@ -7,32 +7,49 @@
* 2 of the License, or (at your option) any later version.
*/
#include <linux/module.h>
#include <linux/spinlock.h>
#include <asm/system.h>
#include <asm/atomic.h>
#include <asm/system.h>
/*
* This is an implementation of the notion of "decrement a
* reference count, and return locked if it decremented to zero".
*
* This implementation can be used on any architecture that
* has a cmpxchg, and where atomic->value is an int holding
* the value of the atomic (i.e. the high bits aren't used
* for a lock or anything like that).
*
* N.B. ATOMIC_DEC_AND_LOCK gets defined in include/linux/spinlock.h
* if spinlocks are empty and thus atomic_dec_and_lock is defined
* to be atomic_dec_and_test - in that case we don't need it
* defined here as well.
*/
#ifndef ATOMIC_DEC_AND_LOCK
int
atomic_dec_and_lock
(
atomic_t
*
atomic
,
spinlock_t
*
lock
)
{
int
counter
;
int
newcount
;
repeat:
counter
=
atomic_read
(
atomic
);
newcount
=
counter
-
1
;
if
(
!
newcount
)
goto
slow_path
;
for
(;;)
{
counter
=
atomic_read
(
atomic
);
newcount
=
counter
-
1
;
if
(
!
newcount
)
break
;
/* do it the slow way */
newcount
=
cmpxchg
(
&
atomic
->
counter
,
counter
,
newcount
);
newcount
=
cmpxchg
(
&
atomic
->
counter
,
counter
,
newcount
);
if
(
newcount
==
counter
)
return
0
;
}
if
(
newcount
!=
counter
)
goto
repeat
;
return
0
;
slow_path:
spin_lock
(
lock
);
if
(
atomic_dec_and_test
(
atomic
))
return
1
;
spin_unlock
(
lock
);
return
0
;
}
EXPORT_SYMBOL
(
atomic_dec_and_lock
);
#endif
/* ATOMIC_DEC_AND_LOCK */
include/asm-ppc64/delay.h
View file @
b77e5d86
...
...
@@ -33,6 +33,7 @@ static inline void __delay(unsigned long loops)
while
((
__get_tb
()
-
start
)
<
loops
)
__HMT_low
();
__HMT_medium
();
}
static
inline
void
udelay
(
unsigned
long
usecs
)
...
...
@@ -40,7 +41,6 @@ static inline void udelay(unsigned long usecs)
unsigned
long
loops
=
tb_ticks_per_usec
*
usecs
;
__delay
(
loops
);
__HMT_medium
();
}
#endif
/* _PPC64_DELAY_H */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment