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
c7816456
Commit
c7816456
authored
Oct 08, 2002
by
Richard Henderson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Merge minor changes from entry_rewrite tree.
parent
5d059ffc
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
174 additions
and
157 deletions
+174
-157
arch/alpha/Config.help
arch/alpha/Config.help
+15
-0
arch/alpha/kernel/osf_sys.c
arch/alpha/kernel/osf_sys.c
+128
-102
arch/alpha/kernel/process.c
arch/alpha/kernel/process.c
+5
-18
arch/alpha/lib/dbg_stackcheck.S
arch/alpha/lib/dbg_stackcheck.S
+0
-0
arch/alpha/lib/dbg_stackkill.S
arch/alpha/lib/dbg_stackkill.S
+0
-0
arch/alpha/mm/fault.c
arch/alpha/mm/fault.c
+20
-32
arch/alpha/vmlinux.lds.S
arch/alpha/vmlinux.lds.S
+5
-4
include/asm-alpha/pal.h
include/asm-alpha/pal.h
+1
-1
No files found.
arch/alpha/Config.help
View file @
c7816456
...
@@ -251,6 +251,10 @@ CONFIG_ALPHA_PRIMO
...
@@ -251,6 +251,10 @@ CONFIG_ALPHA_PRIMO
CONFIG_ALPHA_GAMMA
CONFIG_ALPHA_GAMMA
Say Y if you have an AS 2000 5/xxx or an AS 2100 5/xxx.
Say Y if you have an AS 2000 5/xxx or an AS 2100 5/xxx.
CONFIG_ALPHA_EV67
Is this a machine based on the EV67 core? If in doubt, select N here
and the machine will be treated as an EV6.
CONFIG_ALPHA_SRM
CONFIG_ALPHA_SRM
There are two different types of booting firmware on Alphas: SRM,
There are two different types of booting firmware on Alphas: SRM,
which is command line driven, and ARC, which uses menus and arrow
which is command line driven, and ARC, which uses menus and arrow
...
@@ -610,3 +614,14 @@ CONFIG_DEBUG_SPINLOCK
...
@@ -610,3 +614,14 @@ CONFIG_DEBUG_SPINLOCK
best used in conjunction with the NMI watchdog so that spinlock
best used in conjunction with the NMI watchdog so that spinlock
deadlocks are also debuggable.
deadlocks are also debuggable.
CONFIG_DEBUG_RWLOCK
If you say Y here then read-write lock processing will count how many
times it has tried to get the lock and issue an error message after
too many attempts. If you suspect a rwlock problem or a kernel
hacker asks for this option then say Y. Otherwise say N.
CONFIG_DEBUG_SEMAPHORE
If you say Y here then semaphore processing will issue lots of
verbose debugging messages. If you suspect a semaphore problem or a
kernel hacker asks for this option then say Y. Otherwise say N.
arch/alpha/kernel/osf_sys.c
View file @
c7816456
...
@@ -44,8 +44,9 @@
...
@@ -44,8 +44,9 @@
#include <asm/processor.h>
#include <asm/processor.h>
extern
int
do_pipe
(
int
*
);
extern
int
do_pipe
(
int
*
);
extern
asmlinkage
unsigned
long
sys_brk
(
unsigned
long
);
extern
asmlinkage
unsigned
long
sys_brk
(
unsigned
long
);
extern
int
sys_getpriority
(
int
,
int
);
extern
asmlinkage
unsigned
long
sys_create_module
(
char
*
,
unsigned
long
);
/*
/*
* Brk needs to return an error. Still support Linux's brk(0) query idiom,
* Brk needs to return an error. Still support Linux's brk(0) query idiom,
...
@@ -53,7 +54,8 @@ extern asmlinkage unsigned long sys_brk(unsigned long);
...
@@ -53,7 +54,8 @@ extern asmlinkage unsigned long sys_brk(unsigned long);
* identical to OSF as we don't return 0 on success, but doing otherwise
* identical to OSF as we don't return 0 on success, but doing otherwise
* would require changes to libc. Hopefully this is good enough.
* would require changes to libc. Hopefully this is good enough.
*/
*/
asmlinkage
unsigned
long
osf_brk
(
unsigned
long
brk
)
asmlinkage
unsigned
long
osf_brk
(
unsigned
long
brk
)
{
{
unsigned
long
retval
=
sys_brk
(
brk
);
unsigned
long
retval
=
sys_brk
(
brk
);
if
(
brk
&&
brk
!=
retval
)
if
(
brk
&&
brk
!=
retval
)
...
@@ -64,9 +66,9 @@ asmlinkage unsigned long osf_brk(unsigned long brk)
...
@@ -64,9 +66,9 @@ asmlinkage unsigned long osf_brk(unsigned long brk)
/*
/*
* This is pure guess-work..
* This is pure guess-work..
*/
*/
asmlinkage
int
osf_set_program_attributes
(
asmlinkage
int
unsigned
long
text_start
,
unsigned
long
text_len
,
osf_set_program_attributes
(
unsigned
long
text_start
,
unsigned
long
text_len
,
unsigned
long
bss_start
,
unsigned
long
bss_len
)
unsigned
long
bss_start
,
unsigned
long
bss_len
)
{
{
struct
mm_struct
*
mm
;
struct
mm_struct
*
mm
;
...
@@ -106,8 +108,9 @@ struct osf_dirent_callback {
...
@@ -106,8 +108,9 @@ struct osf_dirent_callback {
int
error
;
int
error
;
};
};
static
int
osf_filldir
(
void
*
__buf
,
const
char
*
name
,
int
namlen
,
loff_t
offset
,
static
int
ino_t
ino
,
unsigned
int
d_type
)
osf_filldir
(
void
*
__buf
,
const
char
*
name
,
int
namlen
,
loff_t
offset
,
ino_t
ino
,
unsigned
int
d_type
)
{
{
struct
osf_dirent
*
dirent
;
struct
osf_dirent
*
dirent
;
struct
osf_dirent_callback
*
buf
=
(
struct
osf_dirent_callback
*
)
__buf
;
struct
osf_dirent_callback
*
buf
=
(
struct
osf_dirent_callback
*
)
__buf
;
...
@@ -134,8 +137,9 @@ static int osf_filldir(void *__buf, const char *name, int namlen, loff_t offset,
...
@@ -134,8 +137,9 @@ static int osf_filldir(void *__buf, const char *name, int namlen, loff_t offset,
return
0
;
return
0
;
}
}
asmlinkage
int
osf_getdirentries
(
unsigned
int
fd
,
struct
osf_dirent
*
dirent
,
asmlinkage
int
unsigned
int
count
,
long
*
basep
)
osf_getdirentries
(
unsigned
int
fd
,
struct
osf_dirent
*
dirent
,
unsigned
int
count
,
long
*
basep
)
{
{
int
error
;
int
error
;
struct
file
*
file
;
struct
file
*
file
;
...
@@ -159,9 +163,9 @@ asmlinkage int osf_getdirentries(unsigned int fd, struct osf_dirent *dirent,
...
@@ -159,9 +163,9 @@ asmlinkage int osf_getdirentries(unsigned int fd, struct osf_dirent *dirent,
if
(
count
!=
buf
.
count
)
if
(
count
!=
buf
.
count
)
error
=
count
-
buf
.
count
;
error
=
count
-
buf
.
count
;
out_putf:
out_putf:
fput
(
file
);
fput
(
file
);
out:
out:
return
error
;
return
error
;
}
}
...
@@ -172,8 +176,9 @@ asmlinkage int osf_getdirentries(unsigned int fd, struct osf_dirent *dirent,
...
@@ -172,8 +176,9 @@ asmlinkage int osf_getdirentries(unsigned int fd, struct osf_dirent *dirent,
* Alpha syscall convention has no problem returning negative
* Alpha syscall convention has no problem returning negative
* values:
* values:
*/
*/
asmlinkage
int
osf_getpriority
(
int
which
,
int
who
,
int
a2
,
int
a3
,
int
a4
,
asmlinkage
int
int
a5
,
struct
pt_regs
regs
)
osf_getpriority
(
int
which
,
int
who
,
int
a2
,
int
a3
,
int
a4
,
int
a5
,
struct
pt_regs
regs
)
{
{
extern
int
sys_getpriority
(
int
,
int
);
extern
int
sys_getpriority
(
int
,
int
);
int
prio
;
int
prio
;
...
@@ -194,24 +199,24 @@ asmlinkage int osf_getpriority(int which, int who, int a2, int a3, int a4,
...
@@ -194,24 +199,24 @@ asmlinkage int osf_getpriority(int which, int who, int a2, int a3, int a4,
/*
/*
* No need to acquire the kernel lock, we're local..
* No need to acquire the kernel lock, we're local..
*/
*/
asmlinkage
unsigned
long
sys_getxuid
(
int
a0
,
int
a1
,
int
a2
,
int
a3
,
int
a4
,
asmlinkage
unsigned
long
int
a5
,
struct
pt_regs
regs
)
sys_getxuid
(
int
a0
,
int
a1
,
int
a2
,
int
a3
,
int
a4
,
int
a5
,
struct
pt_regs
regs
)
{
{
struct
task_struct
*
tsk
=
current
;
struct
task_struct
*
tsk
=
current
;
(
&
regs
)
->
r20
=
tsk
->
euid
;
(
&
regs
)
->
r20
=
tsk
->
euid
;
return
tsk
->
uid
;
return
tsk
->
uid
;
}
}
asmlinkage
unsigned
long
sys_getxgid
(
int
a0
,
int
a1
,
int
a2
,
int
a3
,
int
a4
,
asmlinkage
unsigned
long
int
a5
,
struct
pt_regs
regs
)
sys_getxgid
(
int
a0
,
int
a1
,
int
a2
,
int
a3
,
int
a4
,
int
a5
,
struct
pt_regs
regs
)
{
{
struct
task_struct
*
tsk
=
current
;
struct
task_struct
*
tsk
=
current
;
(
&
regs
)
->
r20
=
tsk
->
egid
;
(
&
regs
)
->
r20
=
tsk
->
egid
;
return
tsk
->
gid
;
return
tsk
->
gid
;
}
}
asmlinkage
unsigned
long
sys_getxpid
(
int
a0
,
int
a1
,
int
a2
,
int
a3
,
int
a4
,
asmlinkage
unsigned
long
int
a5
,
struct
pt_regs
regs
)
sys_getxpid
(
int
a0
,
int
a1
,
int
a2
,
int
a3
,
int
a4
,
int
a5
,
struct
pt_regs
regs
)
{
{
struct
task_struct
*
tsk
=
current
;
struct
task_struct
*
tsk
=
current
;
...
@@ -226,9 +231,9 @@ asmlinkage unsigned long sys_getxpid(int a0, int a1, int a2, int a3, int a4,
...
@@ -226,9 +231,9 @@ asmlinkage unsigned long sys_getxpid(int a0, int a1, int a2, int a3, int a4,
return
tsk
->
tgid
;
return
tsk
->
tgid
;
}
}
asmlinkage
unsigned
long
osf_mmap
(
unsigned
long
addr
,
unsigned
long
len
,
asmlinkage
unsigned
long
unsigned
long
prot
,
unsigned
long
flags
,
unsigned
long
fd
,
osf_mmap
(
unsigned
long
addr
,
unsigned
long
len
,
unsigned
long
prot
,
unsigned
long
off
)
unsigned
long
flags
,
unsigned
long
fd
,
unsigned
long
off
)
{
{
struct
file
*
file
=
NULL
;
struct
file
*
file
=
NULL
;
unsigned
long
ret
=
-
EBADF
;
unsigned
long
ret
=
-
EBADF
;
...
@@ -249,7 +254,7 @@ asmlinkage unsigned long osf_mmap(unsigned long addr, unsigned long len,
...
@@ -249,7 +254,7 @@ asmlinkage unsigned long osf_mmap(unsigned long addr, unsigned long len,
up_write
(
&
current
->
mm
->
mmap_sem
);
up_write
(
&
current
->
mm
->
mmap_sem
);
if
(
file
)
if
(
file
)
fput
(
file
);
fput
(
file
);
out:
out:
return
ret
;
return
ret
;
}
}
...
@@ -271,7 +276,9 @@ struct osf_statfs {
...
@@ -271,7 +276,9 @@ struct osf_statfs {
__kernel_fsid_t
f_fsid
;
__kernel_fsid_t
f_fsid
;
}
*
osf_stat
;
}
*
osf_stat
;
static
int
linux_to_osf_statfs
(
struct
statfs
*
linux_stat
,
struct
osf_statfs
*
osf_stat
,
unsigned
long
bufsiz
)
static
int
linux_to_osf_statfs
(
struct
statfs
*
linux_stat
,
struct
osf_statfs
*
osf_stat
,
unsigned
long
bufsiz
)
{
{
struct
osf_statfs
tmp_stat
;
struct
osf_statfs
tmp_stat
;
...
@@ -291,7 +298,9 @@ static int linux_to_osf_statfs(struct statfs *linux_stat, struct osf_statfs *osf
...
@@ -291,7 +298,9 @@ static int linux_to_osf_statfs(struct statfs *linux_stat, struct osf_statfs *osf
return
copy_to_user
(
osf_stat
,
&
tmp_stat
,
bufsiz
)
?
-
EFAULT
:
0
;
return
copy_to_user
(
osf_stat
,
&
tmp_stat
,
bufsiz
)
?
-
EFAULT
:
0
;
}
}
static
int
do_osf_statfs
(
struct
dentry
*
dentry
,
struct
osf_statfs
*
buffer
,
unsigned
long
bufsiz
)
static
int
do_osf_statfs
(
struct
dentry
*
dentry
,
struct
osf_statfs
*
buffer
,
unsigned
long
bufsiz
)
{
{
struct
statfs
linux_stat
;
struct
statfs
linux_stat
;
int
error
=
vfs_statfs
(
dentry
->
d_inode
->
i_sb
,
&
linux_stat
);
int
error
=
vfs_statfs
(
dentry
->
d_inode
->
i_sb
,
&
linux_stat
);
...
@@ -300,7 +309,8 @@ static int do_osf_statfs(struct dentry * dentry, struct osf_statfs *buffer, unsi
...
@@ -300,7 +309,8 @@ static int do_osf_statfs(struct dentry * dentry, struct osf_statfs *buffer, unsi
return
error
;
return
error
;
}
}
asmlinkage
int
osf_statfs
(
char
*
path
,
struct
osf_statfs
*
buffer
,
unsigned
long
bufsiz
)
asmlinkage
int
osf_statfs
(
char
*
path
,
struct
osf_statfs
*
buffer
,
unsigned
long
bufsiz
)
{
{
struct
nameidata
nd
;
struct
nameidata
nd
;
int
retval
;
int
retval
;
...
@@ -313,7 +323,8 @@ asmlinkage int osf_statfs(char *path, struct osf_statfs *buffer, unsigned long b
...
@@ -313,7 +323,8 @@ asmlinkage int osf_statfs(char *path, struct osf_statfs *buffer, unsigned long b
return
retval
;
return
retval
;
}
}
asmlinkage
int
osf_fstatfs
(
unsigned
long
fd
,
struct
osf_statfs
*
buffer
,
unsigned
long
bufsiz
)
asmlinkage
int
osf_fstatfs
(
unsigned
long
fd
,
struct
osf_statfs
*
buffer
,
unsigned
long
bufsiz
)
{
{
struct
file
*
file
;
struct
file
*
file
;
int
retval
;
int
retval
;
...
@@ -342,10 +353,9 @@ struct cdfs_args {
...
@@ -342,10 +353,9 @@ struct cdfs_args {
char
*
devname
;
char
*
devname
;
int
flags
;
int
flags
;
uid_t
exroot
;
uid_t
exroot
;
/*
* This has lots more here, which Linux handles with the option block
/* This has lots more here, which Linux handles with the option block
* but I'm too lazy to do the translation into ASCII.
but I'm too lazy to do the translation into ASCII. */
*/
};
};
struct
procfs_args
{
struct
procfs_args
{
...
@@ -362,7 +372,8 @@ struct procfs_args {
...
@@ -362,7 +372,8 @@ struct procfs_args {
* Just how long ago was it written? OTOH our UFS driver may be still
* Just how long ago was it written? OTOH our UFS driver may be still
* unhappy with OSF UFS. [CHECKME]
* unhappy with OSF UFS. [CHECKME]
*/
*/
static
int
osf_ufs_mount
(
char
*
dirname
,
struct
ufs_args
*
args
,
int
flags
)
static
int
osf_ufs_mount
(
char
*
dirname
,
struct
ufs_args
*
args
,
int
flags
)
{
{
int
retval
;
int
retval
;
struct
cdfs_args
tmp
;
struct
cdfs_args
tmp
;
...
@@ -377,11 +388,12 @@ static int osf_ufs_mount(char *dirname, struct ufs_args *args, int flags)
...
@@ -377,11 +388,12 @@ static int osf_ufs_mount(char *dirname, struct ufs_args *args, int flags)
goto
out
;
goto
out
;
retval
=
do_mount
(
devname
,
dirname
,
"ext2"
,
flags
,
NULL
);
retval
=
do_mount
(
devname
,
dirname
,
"ext2"
,
flags
,
NULL
);
putname
(
devname
);
putname
(
devname
);
out:
out:
return
retval
;
return
retval
;
}
}
static
int
osf_cdfs_mount
(
char
*
dirname
,
struct
cdfs_args
*
args
,
int
flags
)
static
int
osf_cdfs_mount
(
char
*
dirname
,
struct
cdfs_args
*
args
,
int
flags
)
{
{
int
retval
;
int
retval
;
struct
cdfs_args
tmp
;
struct
cdfs_args
tmp
;
...
@@ -396,11 +408,12 @@ static int osf_cdfs_mount(char *dirname, struct cdfs_args *args, int flags)
...
@@ -396,11 +408,12 @@ static int osf_cdfs_mount(char *dirname, struct cdfs_args *args, int flags)
goto
out
;
goto
out
;
retval
=
do_mount
(
devname
,
dirname
,
"iso9660"
,
flags
,
NULL
);
retval
=
do_mount
(
devname
,
dirname
,
"iso9660"
,
flags
,
NULL
);
putname
(
devname
);
putname
(
devname
);
out:
out:
return
retval
;
return
retval
;
}
}
static
int
osf_procfs_mount
(
char
*
dirname
,
struct
procfs_args
*
args
,
int
flags
)
static
int
osf_procfs_mount
(
char
*
dirname
,
struct
procfs_args
*
args
,
int
flags
)
{
{
struct
procfs_args
tmp
;
struct
procfs_args
tmp
;
...
@@ -410,7 +423,8 @@ static int osf_procfs_mount(char *dirname, struct procfs_args *args, int flags)
...
@@ -410,7 +423,8 @@ static int osf_procfs_mount(char *dirname, struct procfs_args *args, int flags)
return
do_mount
(
""
,
dirname
,
"proc"
,
flags
,
NULL
);
return
do_mount
(
""
,
dirname
,
"proc"
,
flags
,
NULL
);
}
}
asmlinkage
int
osf_mount
(
unsigned
long
typenr
,
char
*
path
,
int
flag
,
void
*
data
)
asmlinkage
int
osf_mount
(
unsigned
long
typenr
,
char
*
path
,
int
flag
,
void
*
data
)
{
{
int
retval
=
-
EINVAL
;
int
retval
=
-
EINVAL
;
char
*
name
;
char
*
name
;
...
@@ -435,12 +449,13 @@ asmlinkage int osf_mount(unsigned long typenr, char *path, int flag, void *data)
...
@@ -435,12 +449,13 @@ asmlinkage int osf_mount(unsigned long typenr, char *path, int flag, void *data)
printk
(
"osf_mount(%ld, %x)
\n
"
,
typenr
,
flag
);
printk
(
"osf_mount(%ld, %x)
\n
"
,
typenr
,
flag
);
}
}
putname
(
name
);
putname
(
name
);
out:
out:
unlock_kernel
();
unlock_kernel
();
return
retval
;
return
retval
;
}
}
asmlinkage
int
osf_utsname
(
char
*
name
)
asmlinkage
int
osf_utsname
(
char
*
name
)
{
{
int
error
;
int
error
;
...
@@ -458,12 +473,13 @@ asmlinkage int osf_utsname(char *name)
...
@@ -458,12 +473,13 @@ asmlinkage int osf_utsname(char *name)
goto
out
;
goto
out
;
error
=
0
;
error
=
0
;
out:
out:
up_read
(
&
uts_sem
);
up_read
(
&
uts_sem
);
return
error
;
return
error
;
}
}
asmlinkage
int
osf_swapon
(
const
char
*
path
,
int
flags
,
int
lowat
,
int
hiwat
)
asmlinkage
int
osf_swapon
(
const
char
*
path
,
int
flags
,
int
lowat
,
int
hiwat
)
{
{
int
ret
;
int
ret
;
...
@@ -474,35 +490,36 @@ asmlinkage int osf_swapon(const char *path, int flags, int lowat, int hiwat)
...
@@ -474,35 +490,36 @@ asmlinkage int osf_swapon(const char *path, int flags, int lowat, int hiwat)
return
ret
;
return
ret
;
}
}
asmlinkage
unsigned
long
sys_getpagesize
(
void
)
asmlinkage
unsigned
long
sys_getpagesize
(
void
)
{
{
return
PAGE_SIZE
;
return
PAGE_SIZE
;
}
}
asmlinkage
unsigned
long
sys_getdtablesize
(
void
)
asmlinkage
unsigned
long
sys_getdtablesize
(
void
)
{
{
return
NR_OPEN
;
return
NR_OPEN
;
}
}
asmlinkage
int
sys_pipe
(
int
a0
,
int
a1
,
int
a2
,
int
a3
,
int
a4
,
int
a5
,
asmlinkage
int
struct
pt_regs
regs
)
sys_pipe
(
int
a0
,
int
a1
,
int
a2
,
int
a3
,
int
a4
,
int
a5
,
struct
pt_regs
regs
)
{
{
int
fd
[
2
];
int
fd
[
2
],
error
;
int
error
;
error
=
do_pipe
(
fd
);
error
=
do_pipe
(
fd
);
if
(
error
)
if
(
!
error
)
{
goto
out
;
regs
.
r20
=
fd
[
1
];
(
&
regs
)
->
r20
=
fd
[
1
];
error
=
fd
[
0
];
error
=
fd
[
0
];
}
out:
return
error
;
return
error
;
}
}
/*
/*
* For compatibility with OSF/1 only. Use utsname(2) instead.
* For compatibility with OSF/1 only. Use utsname(2) instead.
*/
*/
asmlinkage
int
osf_getdomainname
(
char
*
name
,
int
namelen
)
asmlinkage
int
osf_getdomainname
(
char
*
name
,
int
namelen
)
{
{
unsigned
len
;
unsigned
len
;
int
i
,
error
;
int
i
,
error
;
...
@@ -522,12 +539,12 @@ asmlinkage int osf_getdomainname(char *name, int namelen)
...
@@ -522,12 +539,12 @@ asmlinkage int osf_getdomainname(char *name, int namelen)
break
;
break
;
}
}
up_read
(
&
uts_sem
);
up_read
(
&
uts_sem
);
out:
out:
return
error
;
return
error
;
}
}
asmlinkage
long
asmlinkage
long
osf_shmat
(
int
shmid
,
void
*
shmaddr
,
int
shmflg
)
osf_shmat
(
int
shmid
,
void
*
shmaddr
,
int
shmflg
)
{
{
unsigned
long
raddr
;
unsigned
long
raddr
;
long
err
;
long
err
;
...
@@ -541,7 +558,7 @@ asmlinkage long osf_shmat(int shmid, void *shmaddr, int shmflg)
...
@@ -541,7 +558,7 @@ asmlinkage long osf_shmat(int shmid, void *shmaddr, int shmflg)
* non-negative longs!
* non-negative longs!
*/
*/
err
=
raddr
;
err
=
raddr
;
out:
out:
unlock_kernel
();
unlock_kernel
();
return
err
;
return
err
;
}
}
...
@@ -612,7 +629,8 @@ enum pl_code {
...
@@ -612,7 +629,8 @@ enum pl_code {
PL_DEL
=
5
,
PL_FDEL
=
6
PL_DEL
=
5
,
PL_FDEL
=
6
};
};
asmlinkage
long
osf_proplist_syscall
(
enum
pl_code
code
,
union
pl_args
*
args
)
asmlinkage
long
osf_proplist_syscall
(
enum
pl_code
code
,
union
pl_args
*
args
)
{
{
long
error
;
long
error
;
int
*
min_buf_size_ptr
;
int
*
min_buf_size_ptr
;
...
@@ -655,7 +673,8 @@ asmlinkage long osf_proplist_syscall(enum pl_code code, union pl_args *args)
...
@@ -655,7 +673,8 @@ asmlinkage long osf_proplist_syscall(enum pl_code code, union pl_args *args)
return
error
;
return
error
;
}
}
asmlinkage
int
osf_sigstack
(
struct
sigstack
*
uss
,
struct
sigstack
*
uoss
)
asmlinkage
int
osf_sigstack
(
struct
sigstack
*
uss
,
struct
sigstack
*
uoss
)
{
{
unsigned
long
usp
=
rdusp
();
unsigned
long
usp
=
rdusp
();
unsigned
long
oss_sp
=
current
->
sas_ss_sp
+
current
->
sas_ss_size
;
unsigned
long
oss_sp
=
current
->
sas_ss_sp
+
current
->
sas_ss_size
;
...
@@ -691,7 +710,7 @@ asmlinkage int osf_sigstack(struct sigstack *uss, struct sigstack *uoss)
...
@@ -691,7 +710,7 @@ asmlinkage int osf_sigstack(struct sigstack *uss, struct sigstack *uoss)
}
}
error
=
0
;
error
=
0
;
out:
out:
return
error
;
return
error
;
}
}
...
@@ -702,32 +721,28 @@ asmlinkage int osf_sigstack(struct sigstack *uss, struct sigstack *uoss)
...
@@ -702,32 +721,28 @@ asmlinkage int osf_sigstack(struct sigstack *uss, struct sigstack *uoss)
* create_module() because it's one of the few system calls
* create_module() because it's one of the few system calls
* that return kernel addresses (which are negative).
* that return kernel addresses (which are negative).
*/
*/
asmlinkage
unsigned
long
alpha_create_module
(
char
*
module_name
,
unsigned
long
size
,
int
a3
,
int
a4
,
int
a5
,
int
a6
,
asmlinkage
unsigned
long
struct
pt_regs
regs
)
alpha_create_module
(
char
*
module_name
,
unsigned
long
size
,
int
a3
,
int
a4
,
int
a5
,
int
a6
,
struct
pt_regs
regs
)
{
{
asmlinkage
unsigned
long
sys_create_module
(
char
*
,
unsigned
long
);
long
retval
;
long
retval
;
lock_kernel
();
lock_kernel
();
retval
=
sys_create_module
(
module_name
,
size
);
retval
=
sys_create_module
(
module_name
,
size
);
/*
* we get either a module address or an error number,
* and we know the error number is a small negative
* number, while the address is always negative but
* much larger.
*/
if
(
retval
+
1000
>
0
)
goto
out
;
/* tell entry.S:syscall_error that this is NOT an error: */
/* We get either a module address or an error number, and we know
regs
.
r0
=
0
;
the error number is a small negative number, while the address
out:
is always negative but much larger. */
unlock_kernel
();
if
(
retval
+
1000
<
0
)
regs
.
r0
=
0
;
unlock_kernel
();
return
retval
;
return
retval
;
}
}
asmlinkage
long
osf_sysinfo
(
int
command
,
char
*
buf
,
long
count
)
asmlinkage
long
osf_sysinfo
(
int
command
,
char
*
buf
,
long
count
)
{
{
static
char
*
sysinfo_table
[]
=
{
static
char
*
sysinfo_table
[]
=
{
system_utsname
.
sysname
,
system_utsname
.
sysname
,
...
@@ -761,13 +776,13 @@ asmlinkage long osf_sysinfo(int command, char *buf, long count)
...
@@ -761,13 +776,13 @@ asmlinkage long osf_sysinfo(int command, char *buf, long count)
else
else
err
=
0
;
err
=
0
;
up_read
(
&
uts_sem
);
up_read
(
&
uts_sem
);
out:
out:
return
err
;
return
err
;
}
}
asmlinkage
unsigned
long
osf_getsysinfo
(
unsigned
long
op
,
void
*
buffer
,
asmlinkage
unsigned
long
unsigned
long
nbytes
,
osf_getsysinfo
(
unsigned
long
op
,
void
*
buffer
,
unsigned
long
nbytes
,
int
*
start
,
void
*
arg
)
int
*
start
,
void
*
arg
)
{
{
unsigned
long
w
;
unsigned
long
w
;
struct
percpu_struct
*
cpu
;
struct
percpu_struct
*
cpu
;
...
@@ -823,9 +838,9 @@ asmlinkage unsigned long osf_getsysinfo(unsigned long op, void *buffer,
...
@@ -823,9 +838,9 @@ asmlinkage unsigned long osf_getsysinfo(unsigned long op, void *buffer,
return
-
EOPNOTSUPP
;
return
-
EOPNOTSUPP
;
}
}
asmlinkage
unsigned
long
osf_setsysinfo
(
unsigned
long
op
,
void
*
buffer
,
asmlinkage
unsigned
long
unsigned
long
nbytes
,
osf_setsysinfo
(
unsigned
long
op
,
void
*
buffer
,
unsigned
long
nbytes
,
int
*
start
,
void
*
arg
)
int
*
start
,
void
*
arg
)
{
{
switch
(
op
)
{
switch
(
op
)
{
case
SSI_IEEE_FP_CONTROL
:
{
case
SSI_IEEE_FP_CONTROL
:
{
...
@@ -925,21 +940,24 @@ struct itimerval32
...
@@ -925,21 +940,24 @@ struct itimerval32
struct
timeval32
it_value
;
struct
timeval32
it_value
;
};
};
static
inline
long
get_tv32
(
struct
timeval
*
o
,
struct
timeval32
*
i
)
static
inline
long
get_tv32
(
struct
timeval
*
o
,
struct
timeval32
*
i
)
{
{
return
(
!
access_ok
(
VERIFY_READ
,
i
,
sizeof
(
*
i
))
||
return
(
!
access_ok
(
VERIFY_READ
,
i
,
sizeof
(
*
i
))
||
(
__get_user
(
o
->
tv_sec
,
&
i
->
tv_sec
)
|
(
__get_user
(
o
->
tv_sec
,
&
i
->
tv_sec
)
|
__get_user
(
o
->
tv_usec
,
&
i
->
tv_usec
)));
__get_user
(
o
->
tv_usec
,
&
i
->
tv_usec
)));
}
}
static
inline
long
put_tv32
(
struct
timeval32
*
o
,
struct
timeval
*
i
)
static
inline
long
put_tv32
(
struct
timeval32
*
o
,
struct
timeval
*
i
)
{
{
return
(
!
access_ok
(
VERIFY_WRITE
,
o
,
sizeof
(
*
o
))
||
return
(
!
access_ok
(
VERIFY_WRITE
,
o
,
sizeof
(
*
o
))
||
(
__put_user
(
i
->
tv_sec
,
&
o
->
tv_sec
)
|
(
__put_user
(
i
->
tv_sec
,
&
o
->
tv_sec
)
|
__put_user
(
i
->
tv_usec
,
&
o
->
tv_usec
)));
__put_user
(
i
->
tv_usec
,
&
o
->
tv_usec
)));
}
}
static
inline
long
get_it32
(
struct
itimerval
*
o
,
struct
itimerval32
*
i
)
static
inline
long
get_it32
(
struct
itimerval
*
o
,
struct
itimerval32
*
i
)
{
{
return
(
!
access_ok
(
VERIFY_READ
,
i
,
sizeof
(
*
i
))
||
return
(
!
access_ok
(
VERIFY_READ
,
i
,
sizeof
(
*
i
))
||
(
__get_user
(
o
->
it_interval
.
tv_sec
,
&
i
->
it_interval
.
tv_sec
)
|
(
__get_user
(
o
->
it_interval
.
tv_sec
,
&
i
->
it_interval
.
tv_sec
)
|
...
@@ -948,7 +966,8 @@ static inline long get_it32(struct itimerval *o, struct itimerval32 *i)
...
@@ -948,7 +966,8 @@ static inline long get_it32(struct itimerval *o, struct itimerval32 *i)
__get_user
(
o
->
it_value
.
tv_usec
,
&
i
->
it_value
.
tv_usec
)));
__get_user
(
o
->
it_value
.
tv_usec
,
&
i
->
it_value
.
tv_usec
)));
}
}
static
inline
long
put_it32
(
struct
itimerval32
*
o
,
struct
itimerval
*
i
)
static
inline
long
put_it32
(
struct
itimerval32
*
o
,
struct
itimerval
*
i
)
{
{
return
(
!
access_ok
(
VERIFY_WRITE
,
o
,
sizeof
(
*
o
))
||
return
(
!
access_ok
(
VERIFY_WRITE
,
o
,
sizeof
(
*
o
))
||
(
__put_user
(
i
->
it_interval
.
tv_sec
,
&
o
->
it_interval
.
tv_sec
)
|
(
__put_user
(
i
->
it_interval
.
tv_sec
,
&
o
->
it_interval
.
tv_sec
)
|
...
@@ -964,7 +983,8 @@ jiffies_to_timeval32(unsigned long jiffies, struct timeval32 *value)
...
@@ -964,7 +983,8 @@ jiffies_to_timeval32(unsigned long jiffies, struct timeval32 *value)
value
->
tv_sec
=
jiffies
/
HZ
;
value
->
tv_sec
=
jiffies
/
HZ
;
}
}
asmlinkage
int
osf_gettimeofday
(
struct
timeval32
*
tv
,
struct
timezone
*
tz
)
asmlinkage
int
osf_gettimeofday
(
struct
timeval32
*
tv
,
struct
timezone
*
tz
)
{
{
if
(
tv
)
{
if
(
tv
)
{
struct
timeval
ktv
;
struct
timeval
ktv
;
...
@@ -979,7 +999,8 @@ asmlinkage int osf_gettimeofday(struct timeval32 *tv, struct timezone *tz)
...
@@ -979,7 +999,8 @@ asmlinkage int osf_gettimeofday(struct timeval32 *tv, struct timezone *tz)
return
0
;
return
0
;
}
}
asmlinkage
int
osf_settimeofday
(
struct
timeval32
*
tv
,
struct
timezone
*
tz
)
asmlinkage
int
osf_settimeofday
(
struct
timeval32
*
tv
,
struct
timezone
*
tz
)
{
{
struct
timeval
ktv
;
struct
timeval
ktv
;
struct
timezone
ktz
;
struct
timezone
ktz
;
...
@@ -996,7 +1017,8 @@ asmlinkage int osf_settimeofday(struct timeval32 *tv, struct timezone *tz)
...
@@ -996,7 +1017,8 @@ asmlinkage int osf_settimeofday(struct timeval32 *tv, struct timezone *tz)
return
do_sys_settimeofday
(
tv
?
&
ktv
:
NULL
,
tz
?
&
ktz
:
NULL
);
return
do_sys_settimeofday
(
tv
?
&
ktv
:
NULL
,
tz
?
&
ktz
:
NULL
);
}
}
asmlinkage
int
osf_getitimer
(
int
which
,
struct
itimerval32
*
it
)
asmlinkage
int
osf_getitimer
(
int
which
,
struct
itimerval32
*
it
)
{
{
struct
itimerval
kit
;
struct
itimerval
kit
;
int
error
;
int
error
;
...
@@ -1008,8 +1030,8 @@ asmlinkage int osf_getitimer(int which, struct itimerval32 *it)
...
@@ -1008,8 +1030,8 @@ asmlinkage int osf_getitimer(int which, struct itimerval32 *it)
return
error
;
return
error
;
}
}
asmlinkage
int
osf_setitimer
(
int
which
,
struct
itimerval32
*
in
,
asmlinkage
int
struct
itimerval32
*
out
)
osf_setitimer
(
int
which
,
struct
itimerval32
*
in
,
struct
itimerval32
*
out
)
{
{
struct
itimerval
kin
,
kout
;
struct
itimerval
kin
,
kout
;
int
error
;
int
error
;
...
@@ -1031,7 +1053,8 @@ asmlinkage int osf_setitimer(int which, struct itimerval32 *in,
...
@@ -1031,7 +1053,8 @@ asmlinkage int osf_setitimer(int which, struct itimerval32 *in,
}
}
asmlinkage
int
osf_utimes
(
const
char
*
filename
,
struct
timeval32
*
tvs
)
asmlinkage
int
osf_utimes
(
const
char
*
filename
,
struct
timeval32
*
tvs
)
{
{
char
*
kfilename
;
char
*
kfilename
;
struct
timeval
ktvs
[
2
];
struct
timeval
ktvs
[
2
];
...
@@ -1136,9 +1159,9 @@ osf_select(int n, fd_set *inp, fd_set *outp, fd_set *exp,
...
@@ -1136,9 +1159,9 @@ osf_select(int n, fd_set *inp, fd_set *outp, fd_set *exp,
set_fd_set
(
n
,
outp
->
fds_bits
,
fds
.
res_out
);
set_fd_set
(
n
,
outp
->
fds_bits
,
fds
.
res_out
);
set_fd_set
(
n
,
exp
->
fds_bits
,
fds
.
res_ex
);
set_fd_set
(
n
,
exp
->
fds_bits
,
fds
.
res_ex
);
out:
out:
kfree
(
bits
);
kfree
(
bits
);
out_nofds:
out_nofds:
return
ret
;
return
ret
;
}
}
...
@@ -1161,7 +1184,8 @@ struct rusage32 {
...
@@ -1161,7 +1184,8 @@ struct rusage32 {
long
ru_nivcsw
;
/* involuntary " */
long
ru_nivcsw
;
/* involuntary " */
};
};
asmlinkage
int
osf_getrusage
(
int
who
,
struct
rusage32
*
ru
)
asmlinkage
int
osf_getrusage
(
int
who
,
struct
rusage32
*
ru
)
{
{
struct
rusage32
r
;
struct
rusage32
r
;
...
@@ -1198,8 +1222,8 @@ asmlinkage int osf_getrusage(int who, struct rusage32 *ru)
...
@@ -1198,8 +1222,8 @@ asmlinkage int osf_getrusage(int who, struct rusage32 *ru)
return
copy_to_user
(
ru
,
&
r
,
sizeof
(
r
))
?
-
EFAULT
:
0
;
return
copy_to_user
(
ru
,
&
r
,
sizeof
(
r
))
?
-
EFAULT
:
0
;
}
}
asmlinkage
int
osf_wait4
(
pid_t
pid
,
int
*
ustatus
,
int
options
,
asmlinkage
int
struct
rusage32
*
ur
)
osf_wait4
(
pid_t
pid
,
int
*
ustatus
,
int
options
,
struct
rusage32
*
ur
)
{
{
if
(
!
ur
)
{
if
(
!
ur
)
{
return
sys_wait4
(
pid
,
ustatus
,
options
,
NULL
);
return
sys_wait4
(
pid
,
ustatus
,
options
,
NULL
);
...
@@ -1245,7 +1269,8 @@ asmlinkage int osf_wait4(pid_t pid, int *ustatus, int options,
...
@@ -1245,7 +1269,8 @@ asmlinkage int osf_wait4(pid_t pid, int *ustatus, int options,
* seems to be a timeval pointer, and I suspect the second
* seems to be a timeval pointer, and I suspect the second
* one is the time remaining.. Ho humm.. No documentation.
* one is the time remaining.. Ho humm.. No documentation.
*/
*/
asmlinkage
int
osf_usleep_thread
(
struct
timeval32
*
sleep
,
struct
timeval32
*
remain
)
asmlinkage
int
osf_usleep_thread
(
struct
timeval32
*
sleep
,
struct
timeval32
*
remain
)
{
{
struct
timeval
tmp
;
struct
timeval
tmp
;
unsigned
long
ticks
;
unsigned
long
ticks
;
...
@@ -1268,7 +1293,7 @@ asmlinkage int osf_usleep_thread(struct timeval32 *sleep, struct timeval32 *rema
...
@@ -1268,7 +1293,7 @@ asmlinkage int osf_usleep_thread(struct timeval32 *sleep, struct timeval32 *rema
}
}
return
0
;
return
0
;
fault:
fault:
return
-
EFAULT
;
return
-
EFAULT
;
}
}
...
@@ -1302,7 +1327,8 @@ struct timex32 {
...
@@ -1302,7 +1327,8 @@ struct timex32 {
int
:
32
;
int
:
32
;
int
:
32
;
int
:
32
;
int
:
32
;
int
:
32
;
int
:
32
;
int
:
32
;
};
};
asmlinkage
int
sys_old_adjtimex
(
struct
timex32
*
txc_p
)
asmlinkage
int
sys_old_adjtimex
(
struct
timex32
*
txc_p
)
{
{
struct
timex
txc
;
struct
timex
txc
;
int
ret
;
int
ret
;
...
...
arch/alpha/kernel/process.c
View file @
c7816456
...
@@ -191,26 +191,13 @@ machine_power_off(void)
...
@@ -191,26 +191,13 @@ machine_power_off(void)
common_shutdown
(
LINUX_REBOOT_CMD_POWER_OFF
,
NULL
);
common_shutdown
(
LINUX_REBOOT_CMD_POWER_OFF
,
NULL
);
}
}
/* Used by sysrq-p, among others. I don't believe r9-r15 are ever
saved in the context it's used. */
void
void
show_regs
(
struct
pt_regs
*
regs
)
show_regs
(
struct
pt_regs
*
regs
)
{
{
printk
(
"
\n
"
);
dik_show_regs
(
regs
,
0
);
printk
(
"Pid: %d, comm: %20s
\n
"
,
current
->
pid
,
current
->
comm
);
printk
(
"ps: %04lx pc: [<%016lx>] CPU %d %s
\n
"
,
regs
->
ps
,
regs
->
pc
,
smp_processor_id
(),
print_tainted
());
printk
(
"rp: [<%016lx>] sp: %p
\n
"
,
regs
->
r26
,
regs
+
1
);
printk
(
" r0: %016lx r1: %016lx r2: %016lx r3: %016lx
\n
"
,
regs
->
r0
,
regs
->
r1
,
regs
->
r2
,
regs
->
r3
);
printk
(
" r4: %016lx r5: %016lx r6: %016lx r7: %016lx
\n
"
,
regs
->
r4
,
regs
->
r5
,
regs
->
r6
,
regs
->
r7
);
printk
(
" r8: %016lx r16: %016lx r17: %016lx r18: %016lx
\n
"
,
regs
->
r8
,
regs
->
r16
,
regs
->
r17
,
regs
->
r18
);
printk
(
"r19: %016lx r20: %016lx r21: %016lx r22: %016lx
\n
"
,
regs
->
r19
,
regs
->
r20
,
regs
->
r21
,
regs
->
r22
);
printk
(
"r23: %016lx r24: %016lx r25: %016lx r26: %016lx
\n
"
,
regs
->
r23
,
regs
->
r24
,
regs
->
r25
,
regs
->
r26
);
printk
(
"r27: %016lx r28: %016lx r29: %016lx hae: %016lx
\n
"
,
regs
->
r27
,
regs
->
r28
,
regs
->
gp
,
regs
->
hae
);
}
}
/*
/*
...
...
arch/alpha/lib/stackcheck.S
→
arch/alpha/lib/
dbg_
stackcheck.S
View file @
c7816456
File moved
arch/alpha/lib/stackkill.S
→
arch/alpha/lib/
dbg_
stackkill.S
View file @
c7816456
File moved
arch/alpha/mm/fault.c
View file @
c7816456
...
@@ -125,11 +125,10 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
...
@@ -125,11 +125,10 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
goto
bad_area
;
goto
bad_area
;
if
(
expand_stack
(
vma
,
address
))
if
(
expand_stack
(
vma
,
address
))
goto
bad_area
;
goto
bad_area
;
/*
* Ok, we have a good vm_area for this memory access, so
/* Ok, we have a good vm_area for this memory access, so
* we can handle it..
we can handle it. */
*/
good_area:
good_area:
if
(
cause
<
0
)
{
if
(
cause
<
0
)
{
if
(
!
(
vma
->
vm_flags
&
VM_EXEC
))
if
(
!
(
vma
->
vm_flags
&
VM_EXEC
))
goto
bad_area
;
goto
bad_area
;
...
@@ -143,11 +142,9 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
...
@@ -143,11 +142,9 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
}
}
survive:
survive:
/*
/* If for any reason at all we couldn't handle the fault,
* If for any reason at all we couldn't handle the fault,
make sure we exit gracefully rather than endlessly redo
* make sure we exit gracefully rather than endlessly redo
the fault. */
* the fault.
*/
fault
=
handle_mm_fault
(
mm
,
vma
,
address
,
cause
>
0
);
fault
=
handle_mm_fault
(
mm
,
vma
,
address
,
cause
>
0
);
up_read
(
&
mm
->
mmap_sem
);
up_read
(
&
mm
->
mmap_sem
);
...
@@ -155,14 +152,11 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
...
@@ -155,14 +152,11 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
goto
out_of_memory
;
goto
out_of_memory
;
if
(
fault
==
0
)
if
(
fault
==
0
)
goto
do_sigbus
;
goto
do_sigbus
;
return
;
return
;
/*
/* Something tried to access memory that isn't in our memory map.
* Something tried to access memory that isn't in our memory map..
Fix it, but check if it's kernel or user first. */
* Fix it, but check if it's kernel or user first..
bad_area:
*/
bad_area:
up_read
(
&
mm
->
mmap_sem
);
up_read
(
&
mm
->
mmap_sem
);
if
(
user_mode
(
regs
))
{
if
(
user_mode
(
regs
))
{
...
@@ -170,7 +164,7 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
...
@@ -170,7 +164,7 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
return
;
return
;
}
}
no_context:
no_context:
/* Are we prepared to handle this fault as an exception? */
/* Are we prepared to handle this fault as an exception? */
if
((
fixup
=
search_exception_table
(
regs
->
pc
,
regs
->
gp
))
!=
0
)
{
if
((
fixup
=
search_exception_table
(
regs
->
pc
,
regs
->
gp
))
!=
0
)
{
unsigned
long
newpc
;
unsigned
long
newpc
;
...
@@ -183,20 +177,16 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
...
@@ -183,20 +177,16 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
return
;
return
;
}
}
/*
/* Oops. The kernel tried to access some bad page. We'll have to
* Oops. The kernel tried to access some bad page. We'll have to
terminate things with extreme prejudice. */
* terminate things with extreme prejudice.
*/
printk
(
KERN_ALERT
"Unable to handle kernel paging request at "
printk
(
KERN_ALERT
"Unable to handle kernel paging request at "
"virtual address %016lx
\n
"
,
address
);
"virtual address %016lx
\n
"
,
address
);
die_if_kernel
(
"Oops"
,
regs
,
cause
,
(
unsigned
long
*
)
regs
-
16
);
die_if_kernel
(
"Oops"
,
regs
,
cause
,
(
unsigned
long
*
)
regs
-
16
);
do_exit
(
SIGKILL
);
do_exit
(
SIGKILL
);
/*
/* We ran out of memory, or some other thing happened to us that
* We ran out of memory, or some other thing happened to us that made
made us unable to handle the page fault gracefully. */
* us unable to handle the page fault gracefully.
out_of_memory:
*/
out_of_memory:
if
(
current
->
pid
==
1
)
{
if
(
current
->
pid
==
1
)
{
yield
();
yield
();
down_read
(
&
mm
->
mmap_sem
);
down_read
(
&
mm
->
mmap_sem
);
...
@@ -208,18 +198,16 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
...
@@ -208,18 +198,16 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
goto
no_context
;
goto
no_context
;
do_exit
(
SIGKILL
);
do_exit
(
SIGKILL
);
do_sigbus:
do_sigbus:
/*
/* Send a sigbus, regardless of whether we were in kernel
* Send a sigbus, regardless of whether we were in kernel
or user mode. */
* or user mode.
*/
force_sig
(
SIGBUS
,
current
);
force_sig
(
SIGBUS
,
current
);
if
(
!
user_mode
(
regs
))
if
(
!
user_mode
(
regs
))
goto
no_context
;
goto
no_context
;
return
;
return
;
#ifdef CONFIG_ALPHA_LARGE_VMALLOC
#ifdef CONFIG_ALPHA_LARGE_VMALLOC
vmalloc_fault:
vmalloc_fault:
if
(
user_mode
(
regs
))
{
if
(
user_mode
(
regs
))
{
force_sig
(
SIGSEGV
,
current
);
force_sig
(
SIGSEGV
,
current
);
return
;
return
;
...
...
arch/alpha/vmlinux.lds.S
View file @
c7816456
...
@@ -58,10 +58,11 @@ SECTIONS
...
@@ -58,10 +58,11 @@ SECTIONS
__initcall_end
=
.
;
__initcall_end
=
.
;
}
}
.
=
ALIGN
(
64
)
;
.
data.percpu
ALIGN
(
64
)
:
{
__per_cpu_start
=
.
;
__per_cpu_start
=
.
;
.
data.percpu
:
{
*(
.
data
.
percpu
)
}
*(.
data.percpu
)
__per_cpu_end
=
.
;
__per_cpu_end
=
.
;
}
/
*
The
initial
task
and
kernel
stack
*/
/
*
The
initial
task
and
kernel
stack
*/
.
data.
init_thread
ALIGN
(
2
*
8192
)
:
{
.
data.
init_thread
ALIGN
(
2
*
8192
)
:
{
...
...
include/asm-alpha/pal.h
View file @
c7816456
...
@@ -45,7 +45,7 @@
...
@@ -45,7 +45,7 @@
#define PAL_wrperfmon 57
#define PAL_wrperfmon 57
#define PAL_rdusp 58
#define PAL_rdusp 58
#define PAL_whami 60
#define PAL_whami 60
#define PAL_rtsys 61
#define PAL_r
e
tsys 61
#define PAL_rti 63
#define PAL_rti 63
#endif
/* __ALPHA_PAL_H */
#endif
/* __ALPHA_PAL_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