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
Kirill Smelkov
linux
Commits
cb5bd643
Commit
cb5bd643
authored
Nov 14, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
http://lia64.bkbits.net/linux-ia64-release-2.6.10
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
b5f1b31e
6745aac8
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
43 additions
and
51 deletions
+43
-51
arch/ia64/kernel/entry.S
arch/ia64/kernel/entry.S
+2
-2
arch/ia64/kernel/ivt.S
arch/ia64/kernel/ivt.S
+16
-15
arch/ia64/kernel/mca.c
arch/ia64/kernel/mca.c
+1
-0
arch/ia64/kernel/ptrace.c
arch/ia64/kernel/ptrace.c
+9
-22
arch/ia64/kernel/signal.c
arch/ia64/kernel/signal.c
+3
-5
arch/ia64/kernel/smp.c
arch/ia64/kernel/smp.c
+4
-4
include/asm-ia64/ptrace.h
include/asm-ia64/ptrace.h
+6
-2
include/asm-ia64/unistd.h
include/asm-ia64/unistd.h
+2
-1
No files found.
arch/ia64/kernel/entry.S
View file @
cb5bd643
...
...
@@ -1526,8 +1526,8 @@ sys_call_table:
data8
sys_mq_notify
data8
sys_mq_getsetattr
data8
sys_ni_syscall
//
reserved
for
kexec_load
data8
sys_ni_syscall
data8
sys_
ni_syscall
//
1270
data8
sys_ni_syscall
//
reserved
for
vserver
data8
sys_
waitid
//
1270
data8
sys_ni_syscall
data8
sys_ni_syscall
data8
sys_ni_syscall
...
...
arch/ia64/kernel/ivt.S
View file @
cb5bd643
...
...
@@ -852,7 +852,7 @@ GLOBAL_ENTRY(ia64_syscall_setup)
add
r17
=
PT
(
R11
),
r1
//
initialize
second
base
pointer
;;
alloc
r19
=
ar
.
pfs
,
8
,
0
,
0
,
0
//
ensure
in0
-
in7
are
writable
st8
[
r16
]=
r29
,
PT
(
CR_I
FS
)-
PT
(
CR_IPSR
)
//
save
cr
.
ipsr
st8
[
r16
]=
r29
,
PT
(
AR_P
FS
)-
PT
(
CR_IPSR
)
//
save
cr
.
ipsr
tnat.nz
p8
,
p0
=
in0
st8.spill
[
r17
]=
r11
,
PT
(
CR_IIP
)-
PT
(
R11
)
//
save
r11
...
...
@@ -860,31 +860,31 @@ GLOBAL_ENTRY(ia64_syscall_setup)
(
pKStk
)
mov
r18
=
r0
//
make
sure
r18
isn
't NaT
;;
st8
[
r16
]=
r26
,
PT
(
CR_IFS
)-
PT
(
AR_PFS
)
//
save
ar
.
pfs
st8
[
r17
]=
r28
,
PT
(
AR_UNAT
)-
PT
(
CR_IIP
)
//
save
cr
.
iip
mov
r28
=
b0
//
save
b0
(
2
cyc
)
(
p8
)
mov
in0
=-
1
;;
st8
[
r16
]=
r0
,
PT
(
AR_PFS
)-
PT
(
CR_IFS
)
//
clear
cr
.
ifs
st8
[
r17
]=
r25
,
PT
(
AR_RSC
)-
PT
(
AR_UNAT
)
//
save
ar
.
unat
(
p9
)
mov
in1
=-
1
dep
r19
=
0
,
r19
,
38
,
26
//
clear
all
bits
but
0
..37
[
I0
]
(
p8
)
mov
in0
=-
1
;;
st8
[
r16
]=
r
26
,
PT
(
AR_RNAT
)-
PT
(
AR_PFS
)
//
save
ar
.
p
fs
st8
[
r16
]=
r
19
,
PT
(
AR_RNAT
)-
PT
(
CR_IFS
)
//
store
ar
.
pfs
.
pfm
in
cr
.
i
fs
st8
[
r17
]=
r27
,
PT
(
AR_BSPSTORE
)-
PT
(
AR_RSC
)//
save
ar
.
rsc
tnat.nz
p10
,
p0
=
in2
(
p9
)
mov
in1
=-
1
(
pUStk
)
sub
r18
=
r18
,
r22
//
r18
=
RSE
.
ndirty
*
8
tbit.nz
p15
,
p0
=
r29
,
IA64_PSR_I_BIT
tnat.nz
p1
1
,
p0
=
in3
tnat.nz
p1
0
,
p0
=
in2
;;
(
pKStk
)
adds
r16
=
PT
(
PR
)-
PT
(
AR_RNAT
),
r16
//
skip
over
ar_rnat
field
(
pKStk
)
adds
r17
=
PT
(
B0
)-
PT
(
AR_BSPSTORE
),
r17
//
skip
over
ar_bspstore
field
tnat.nz
p11
,
p0
=
in3
;;
(
p10
)
mov
in2
=-
1
tnat.nz
p12
,
p0
=
in4
//
[
I0
]
(
p11
)
mov
in3
=-
1
tnat.nz
p12
,
p0
=
in4
tnat.nz
p13
,
p0
=
in5
;;
(
pUStk
)
st8
[
r16
]=
r24
,
PT
(
PR
)-
PT
(
AR_RNAT
)
//
save
ar
.
rnat
(
pUStk
)
st8
[
r17
]=
r23
,
PT
(
B0
)-
PT
(
AR_BSPSTORE
)
//
save
ar
.
bspstore
...
...
@@ -892,28 +892,29 @@ GLOBAL_ENTRY(ia64_syscall_setup)
;;
st8
[
r16
]=
r31
,
PT
(
LOADRS
)-
PT
(
PR
)
//
save
predicates
st8
[
r17
]=
r28
,
PT
(
R1
)-
PT
(
B0
)
//
save
b0
(
p12
)
mov
in4
=-
1
tnat.nz
p13
,
p0
=
in5
//
[
I0
]
;;
st8
[
r16
]=
r18
,
PT
(
R12
)-
PT
(
LOADRS
)
//
save
ar
.
rsc
value
for
"loadrs"
st8.spill
[
r17
]=
r20
,
PT
(
R13
)-
PT
(
R1
)
//
save
original
r1
(
p1
3
)
mov
in5
=-
1
(
p1
2
)
mov
in4
=-
1
;;
.
mem
.
offset
0,0
; st8.spill [r16]=r12,PT(AR_FPSR)-PT(R12) // save r12
.
mem
.
offset
8,0
; st8.spill [r17]=r13,PT(R15)-PT(R13) // save r13
tnat.nz
p14
,
p0
=
in6
(
p13
)
mov
in5
=-
1
;;
st8
[
r16
]=
r21
,
PT
(
R8
)-
PT
(
AR_FPSR
)
//
save
ar
.
fpsr
st8.spill
[
r17
]=
r15
//
save
r15
tnat.nz
p
8
,
p0
=
in7
tnat.nz
p
14
,
p0
=
in6
;;
stf8
[
r16
]=
f1
//
ensure
pt_regs
.
r8
!=
0
(
see
handle_syscall_error
)
adds
r12
=-
16
,
r1
//
switch
to
kernel
memory
stack
(
with
16
bytes
of
scratch
)
(
p14
)
mov
in6
=-
1
tnat.nz
p8
,
p0
=
in7
mov
r13
=
r2
//
establish
`
current
'
movl
r1
=
__gp
//
establish
kernel
global
pointer
;;
(
p14
)
mov
in6
=-
1
(
p8
)
mov
in7
=-
1
tnat.nz
p9
,
p0
=
r15
...
...
arch/ia64/kernel/mca.c
View file @
cb5bd643
...
...
@@ -686,6 +686,7 @@ ia64_mca_wakeup_ipi_wait(void)
irr
=
ia64_getreg
(
_IA64_REG_CR_IRR3
);
break
;
}
cpu_relax
();
}
while
(
!
(
irr
&
(
1UL
<<
irr_bit
)))
;
}
...
...
arch/ia64/kernel/ptrace.c
View file @
cb5bd643
/*
* Kernel support for the ptrace() and syscall tracing interfaces.
*
* Copyright (C) 1999-200
3
Hewlett-Packard Co
* Copyright (C) 1999-200
4
Hewlett-Packard Co
* David Mosberger-Tang <davidm@hpl.hp.com>
*
* Derived from the x86 and Alpha versions. Most of the code in here
...
...
@@ -304,7 +304,6 @@ put_rnat (struct task_struct *task, struct switch_stack *sw,
long
num_regs
,
nbits
;
struct
pt_regs
*
pt
;
unsigned
long
cfm
,
*
urbs_kargs
;
struct
unw_frame_info
info
;
pt
=
ia64_task_regs
(
task
);
kbsp
=
(
unsigned
long
*
)
sw
->
ar_bspstore
;
...
...
@@ -316,11 +315,8 @@ put_rnat (struct task_struct *task, struct switch_stack *sw,
* If entered via syscall, don't allow user to set rnat bits
* for syscall args.
*/
unw_init_from_blocked_task
(
&
info
,
task
);
if
(
unw_unwind_to_user
(
&
info
)
==
0
)
{
unw_get_cfm
(
&
info
,
&
cfm
);
urbs_kargs
=
ia64_rse_skip_regs
(
urbs_end
,
-
(
cfm
&
0x7f
));
}
cfm
=
pt
->
cr_ifs
;
urbs_kargs
=
ia64_rse_skip_regs
(
urbs_end
,
-
(
cfm
&
0x7f
));
}
if
(
urbs_kargs
>=
urnat_addr
)
...
...
@@ -480,27 +476,18 @@ ia64_poke (struct task_struct *child, struct switch_stack *child_stack, unsigned
unsigned
long
ia64_get_user_rbs_end
(
struct
task_struct
*
child
,
struct
pt_regs
*
pt
,
unsigned
long
*
cfmp
)
{
unsigned
long
*
krbs
,
*
bspstore
,
cfm
;
struct
unw_frame_info
info
;
unsigned
long
*
krbs
,
*
bspstore
,
cfm
=
pt
->
cr_ifs
;
long
ndirty
;
krbs
=
(
unsigned
long
*
)
child
+
IA64_RBS_OFFSET
/
8
;
bspstore
=
(
unsigned
long
*
)
pt
->
ar_bspstore
;
ndirty
=
ia64_rse_num_regs
(
krbs
,
krbs
+
(
pt
->
loadrs
>>
19
));
cfm
=
pt
->
cr_ifs
&
~
(
1UL
<<
63
);
if
(
in_syscall
(
pt
))
{
/*
* If bit 63 of cr.ifs is cleared, the kernel was entered via a system
* call and we need to recover the CFM that existed on entry to the
* kernel by unwinding the kernel stack.
*/
unw_init_from_blocked_task
(
&
info
,
child
);
if
(
unw_unwind_to_user
(
&
info
)
==
0
)
{
unw_get_cfm
(
&
info
,
&
cfm
);
ndirty
+=
(
cfm
&
0x7f
);
}
}
if
(
in_syscall
(
pt
))
ndirty
+=
(
cfm
&
0x7f
);
else
cfm
&=
~
(
1UL
<<
63
);
/* clear valid bit */
if
(
cfmp
)
*
cfmp
=
cfm
;
return
(
unsigned
long
)
ia64_rse_skip_regs
(
bspstore
,
ndirty
);
...
...
arch/ia64/kernel/signal.c
View file @
cb5bd643
...
...
@@ -290,12 +290,10 @@ setup_sigcontext (struct sigcontext __user *sc, sigset_t *mask, struct sigscratc
if
(
on_sig_stack
((
unsigned
long
)
sc
))
flags
|=
IA64_SC_FLAG_ONSTACK
;
if
((
ifs
&
(
1UL
<<
63
))
==
0
)
{
/* if cr_ifs
isn't valid
, we got here through a syscall */
if
((
ifs
&
(
1UL
<<
63
))
==
0
)
/* if cr_ifs
doesn't have the valid bit set
, we got here through a syscall */
flags
|=
IA64_SC_FLAG_IN_SYSCALL
;
cfm
=
scr
->
ar_pfs
&
((
1UL
<<
38
)
-
1
);
}
else
cfm
=
ifs
&
((
1UL
<<
38
)
-
1
);
cfm
=
ifs
&
((
1UL
<<
38
)
-
1
);
ia64_flush_fph
(
current
);
if
((
current
->
thread
.
flags
&
IA64_THREAD_FPH_VALID
))
{
flags
|=
IA64_SC_FLAG_FPH_VALID
;
...
...
arch/ia64/kernel/smp.c
View file @
cb5bd643
...
...
@@ -290,11 +290,11 @@ smp_call_function_single (int cpuid, void (*func) (void *info), void *info, int
/* Wait for response */
while
(
atomic_read
(
&
data
.
started
)
!=
cpus
)
barrier
();
cpu_relax
();
if
(
wait
)
while
(
atomic_read
(
&
data
.
finished
)
!=
cpus
)
barrier
();
cpu_relax
();
call_data
=
NULL
;
spin_unlock_bh
(
&
call_lock
);
...
...
@@ -349,11 +349,11 @@ smp_call_function (void (*func) (void *info), void *info, int nonatomic, int wai
/* Wait for response */
while
(
atomic_read
(
&
data
.
started
)
!=
cpus
)
barrier
();
cpu_relax
();
if
(
wait
)
while
(
atomic_read
(
&
data
.
finished
)
!=
cpus
)
barrier
();
cpu_relax
();
call_data
=
NULL
;
spin_unlock
(
&
call_lock
);
...
...
include/asm-ia64/ptrace.h
View file @
cb5bd643
...
...
@@ -2,7 +2,7 @@
#define _ASM_IA64_PTRACE_H
/*
* Copyright (C) 1998-200
3
Hewlett-Packard Co
* Copyright (C) 1998-200
4
Hewlett-Packard Co
* David Mosberger-Tang <davidm@hpl.hp.com>
* Stephane Eranian <eranian@hpl.hp.com>
* Copyright (C) 2003 Intel Co
...
...
@@ -110,7 +110,11 @@ struct pt_regs {
unsigned
long
cr_ipsr
;
/* interrupted task's psr */
unsigned
long
cr_iip
;
/* interrupted task's instruction pointer */
unsigned
long
cr_ifs
;
/* interrupted task's function state */
/*
* interrupted task's function state; if bit 63 is cleared, it
* contains syscall's ar.pfs.pfm:
*/
unsigned
long
cr_ifs
;
unsigned
long
ar_unat
;
/* interrupted task's NaT register (preserved) */
unsigned
long
ar_pfs
;
/* prev function state */
...
...
include/asm-ia64/unistd.h
View file @
cb5bd643
...
...
@@ -259,6 +259,7 @@
#define __NR_mq_getsetattr 1267
#define __NR_kexec_load 1268
#define __NR_vserver 1269
#define __NR_waitid 1270
#ifdef __KERNEL__
...
...
@@ -385,7 +386,7 @@ asmlinkage long sys_rt_sigaction(int sig,
* "Conditional" syscalls
*
* Note, this macro can only be used in the file which defines sys_ni_syscall, i.e., in
* kernel/sys.c. This version causes warnings because the declaration isn't a
* kernel/sys
_ni
.c. This version causes warnings because the declaration isn't a
* proper prototype, but we can't use __typeof__ either, because not all cond_syscall()
* declarations have prototypes at the moment.
*/
...
...
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