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
b2fdea4f
Commit
b2fdea4f
authored
Aug 14, 2003
by
David Mosberger
Browse files
Options
Browse Files
Download
Plain Diff
Merge tiger.hpl.hp.com:/data1/bk/vanilla/linux-2.6.0-test3
into tiger.hpl.hp.com:/data1/bk/lia64/to-linus-2.5
parents
ca377000
65cc6cd6
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
206 additions
and
93 deletions
+206
-93
arch/ia64/ia32/sys_ia32.c
arch/ia64/ia32/sys_ia32.c
+8
-4
arch/ia64/kernel/efivars.c
arch/ia64/kernel/efivars.c
+82
-16
include/asm-ia64/sn/nodepda.h
include/asm-ia64/sn/nodepda.h
+2
-1
include/asm-ia64/unistd.h
include/asm-ia64/unistd.h
+114
-72
No files found.
arch/ia64/ia32/sys_ia32.c
View file @
b2fdea4f
...
@@ -1374,7 +1374,7 @@ msgctl32 (int first, int second, void *uptr)
...
@@ -1374,7 +1374,7 @@ msgctl32 (int first, int second, void *uptr)
break
;
break
;
old_fs
=
get_fs
();
old_fs
=
get_fs
();
set_fs
(
KERNEL_DS
);
set_fs
(
KERNEL_DS
);
err
=
sys_msgctl
(
first
,
second
,
&
m64
);
err
=
sys_msgctl
(
first
,
second
,
(
struct
msqid_ds
*
)
&
m64
);
set_fs
(
old_fs
);
set_fs
(
old_fs
);
break
;
break
;
...
@@ -1382,7 +1382,7 @@ msgctl32 (int first, int second, void *uptr)
...
@@ -1382,7 +1382,7 @@ msgctl32 (int first, int second, void *uptr)
case
MSG_STAT
:
case
MSG_STAT
:
old_fs
=
get_fs
();
old_fs
=
get_fs
();
set_fs
(
KERNEL_DS
);
set_fs
(
KERNEL_DS
);
err
=
sys_msgctl
(
first
,
second
,
(
void
*
)
&
m64
);
err
=
sys_msgctl
(
first
,
second
,
(
struct
msqid_ds
*
)
&
m64
);
set_fs
(
old_fs
);
set_fs
(
old_fs
);
if
(
version
==
IPC_64
)
{
if
(
version
==
IPC_64
)
{
...
@@ -1518,7 +1518,7 @@ shmctl32 (int first, int second, void *uptr)
...
@@ -1518,7 +1518,7 @@ shmctl32 (int first, int second, void *uptr)
break
;
break
;
old_fs
=
get_fs
();
old_fs
=
get_fs
();
set_fs
(
KERNEL_DS
);
set_fs
(
KERNEL_DS
);
err
=
sys_shmctl
(
first
,
second
,
&
s64
);
err
=
sys_shmctl
(
first
,
second
,
(
struct
shmid_ds
*
)
&
s64
);
set_fs
(
old_fs
);
set_fs
(
old_fs
);
break
;
break
;
...
@@ -1526,7 +1526,7 @@ shmctl32 (int first, int second, void *uptr)
...
@@ -1526,7 +1526,7 @@ shmctl32 (int first, int second, void *uptr)
case
SHM_STAT
:
case
SHM_STAT
:
old_fs
=
get_fs
();
old_fs
=
get_fs
();
set_fs
(
KERNEL_DS
);
set_fs
(
KERNEL_DS
);
err
=
sys_shmctl
(
first
,
second
,
(
void
*
)
&
s64
);
err
=
sys_shmctl
(
first
,
second
,
(
struct
shmid_ds
*
)
&
s64
);
set_fs
(
old_fs
);
set_fs
(
old_fs
);
if
(
err
<
0
)
if
(
err
<
0
)
break
;
break
;
...
@@ -1694,6 +1694,10 @@ sys32_time (int *tloc)
...
@@ -1694,6 +1694,10 @@ sys32_time (int *tloc)
return
i
;
return
i
;
}
}
asmlinkage
long
compat_sys_wait4
(
compat_pid_t
pid
,
compat_uint_t
*
stat_addr
,
int
options
,
struct
compat_rusage
*
ru
);
asmlinkage
long
asmlinkage
long
sys32_waitpid
(
int
pid
,
unsigned
int
*
stat_addr
,
int
options
)
sys32_waitpid
(
int
pid
,
unsigned
int
*
stat_addr
,
int
options
)
{
{
...
...
arch/ia64/kernel/efivars.c
View file @
b2fdea4f
...
@@ -168,13 +168,12 @@ efivar_create_proc_entry(unsigned long variable_name_size,
...
@@ -168,13 +168,12 @@ efivar_create_proc_entry(unsigned long variable_name_size,
efi_char16_t
*
variable_name
,
efi_char16_t
*
variable_name
,
efi_guid_t
*
vendor_guid
)
efi_guid_t
*
vendor_guid
)
{
{
int
i
,
short_name_size
=
variable_name_size
/
sizeof
(
efi_char16_t
)
+
38
;
int
i
,
short_name_size
=
variable_name_size
/
sizeof
(
efi_char16_t
)
+
38
;
char
*
short_name
;
char
*
short_name
;
efivar_entry_t
*
new_efivar
;
efivar_entry_t
*
new_efivar
;
short_name
=
kmalloc
(
short_name_size
+
1
,
GFP_KERNEL
);
short_name
=
kmalloc
(
short_name_size
+
1
,
GFP_KERNEL
);
new_efivar
=
kmalloc
(
sizeof
(
efivar_entry_t
),
GFP_KERNEL
);
new_efivar
=
kmalloc
(
sizeof
(
efivar_entry_t
),
GFP_KERNEL
);
if
(
!
short_name
||
!
new_efivar
)
{
if
(
!
short_name
||
!
new_efivar
)
{
if
(
short_name
)
kfree
(
short_name
);
if
(
short_name
)
kfree
(
short_name
);
...
@@ -210,9 +209,9 @@ efivar_create_proc_entry(unsigned long variable_name_size,
...
@@ -210,9 +209,9 @@ efivar_create_proc_entry(unsigned long variable_name_size,
new_efivar
->
entry
->
read_proc
=
efivar_read
;
new_efivar
->
entry
->
read_proc
=
efivar_read
;
new_efivar
->
entry
->
write_proc
=
efivar_write
;
new_efivar
->
entry
->
write_proc
=
efivar_write
;
spin_lock
(
&
efivars_lock
);
spin_lock
(
&
efivars_lock
);
list_add
(
&
new_efivar
->
list
,
&
efivar_list
);
list_add
(
&
new_efivar
->
list
,
&
efivar_list
);
spin_unlock
(
&
efivars_lock
);
spin_unlock
(
&
efivars_lock
);
return
0
;
return
0
;
}
}
...
@@ -283,7 +282,7 @@ efivar_write(struct file *file, const char *buffer,
...
@@ -283,7 +282,7 @@ efivar_write(struct file *file, const char *buffer,
if
(
!
var_data
)
if
(
!
var_data
)
return
-
ENOMEM
;
return
-
ENOMEM
;
if
(
copy_from_user
(
var_data
,
buffer
,
size
))
{
if
(
copy_from_user
(
var_data
,
buffer
,
size
))
{
kfree
(
var_data
);
kfree
(
var_data
);
return
-
EFAULT
;
return
-
EFAULT
;
}
}
...
@@ -344,12 +343,73 @@ efivar_write(struct file *file, const char *buffer,
...
@@ -344,12 +343,73 @@ efivar_write(struct file *file, const char *buffer,
return
size
;
return
size
;
}
}
/*
* The EFI system table contains pointers to the SAL system table,
* HCDP, ACPI, SMBIOS, etc, that may be useful to applications.
*/
static
ssize_t
efi_systab_read
(
struct
file
*
file
,
char
*
buffer
,
size_t
count
,
loff_t
*
ppos
)
{
void
*
data
;
u8
*
proc_buffer
;
ssize_t
size
,
length
;
int
ret
;
const
int
max_nr_entries
=
7
;
/* num ptrs to tables we could expose */
const
int
max_line_len
=
80
;
if
(
!
efi
.
systab
)
return
0
;
proc_buffer
=
kmalloc
(
max_nr_entries
*
max_line_len
,
GFP_KERNEL
);
if
(
!
proc_buffer
)
return
-
ENOMEM
;
length
=
0
;
if
(
efi
.
mps
)
length
+=
sprintf
(
proc_buffer
+
length
,
"MPS=0x%lx
\n
"
,
__pa
(
efi
.
mps
));
if
(
efi
.
acpi20
)
length
+=
sprintf
(
proc_buffer
+
length
,
"ACPI20=0x%lx
\n
"
,
__pa
(
efi
.
acpi20
));
if
(
efi
.
acpi
)
length
+=
sprintf
(
proc_buffer
+
length
,
"ACPI=0x%lx
\n
"
,
__pa
(
efi
.
acpi
));
if
(
efi
.
smbios
)
length
+=
sprintf
(
proc_buffer
+
length
,
"SMBIOS=0x%lx
\n
"
,
__pa
(
efi
.
smbios
));
if
(
efi
.
sal_systab
)
length
+=
sprintf
(
proc_buffer
+
length
,
"SAL=0x%lx
\n
"
,
__pa
(
efi
.
sal_systab
));
if
(
efi
.
hcdp
)
length
+=
sprintf
(
proc_buffer
+
length
,
"HCDP=0x%lx
\n
"
,
__pa
(
efi
.
hcdp
));
if
(
efi
.
boot_info
)
length
+=
sprintf
(
proc_buffer
+
length
,
"BOOTINFO=0x%lx
\n
"
,
__pa
(
efi
.
boot_info
));
if
(
*
ppos
>=
length
)
{
ret
=
0
;
goto
out
;
}
data
=
proc_buffer
+
file
->
f_pos
;
size
=
length
-
file
->
f_pos
;
if
(
size
>
count
)
size
=
count
;
if
(
copy_to_user
(
buffer
,
data
,
size
))
{
ret
=
-
EFAULT
;
goto
out
;
}
*
ppos
+=
size
;
ret
=
size
;
out:
kfree
(
proc_buffer
);
return
ret
;
}
static
struct
proc_dir_entry
*
efi_systab_entry
;
static
struct
file_operations
efi_systab_fops
=
{
.
read
=
efi_systab_read
,
};
static
int
__init
static
int
__init
efivars_init
(
void
)
efivars_init
(
void
)
{
{
efi_status_t
status
;
efi_status_t
status
;
efi_guid_t
vendor_guid
;
efi_guid_t
vendor_guid
;
efi_char16_t
*
variable_name
=
kmalloc
(
1024
,
GFP_KERNEL
);
efi_char16_t
*
variable_name
=
kmalloc
(
1024
,
GFP_KERNEL
);
...
@@ -357,13 +417,17 @@ efivars_init(void)
...
@@ -357,13 +417,17 @@ efivars_init(void)
printk
(
KERN_INFO
"EFI Variables Facility v%s
\n
"
,
EFIVARS_VERSION
);
printk
(
KERN_INFO
"EFI Variables Facility v%s
\n
"
,
EFIVARS_VERSION
);
/* Since efi.c happens before procfs is available,
/* Since efi.c happens before procfs is available,
we create the directory here if it doesn't
we create the directory here if it doesn't
already exist. There's probably a better way
already exist. There's probably a better way
to do this.
to do this.
*/
*/
if
(
!
efi_dir
)
if
(
!
efi_dir
)
efi_dir
=
proc_mkdir
(
"efi"
,
NULL
);
efi_dir
=
proc_mkdir
(
"efi"
,
NULL
);
efi_systab_entry
=
create_proc_entry
(
"systab"
,
S_IRUSR
|
S_IRGRP
,
efi_dir
);
if
(
efi_systab_entry
)
efi_systab_entry
->
proc_fops
=
&
efi_systab_fops
;
efi_vars_dir
=
proc_mkdir
(
"vars"
,
efi_dir
);
efi_vars_dir
=
proc_mkdir
(
"vars"
,
efi_dir
);
...
@@ -407,7 +471,9 @@ efivars_exit(void)
...
@@ -407,7 +471,9 @@ efivars_exit(void)
struct
list_head
*
pos
,
*
n
;
struct
list_head
*
pos
,
*
n
;
efivar_entry_t
*
efivar
;
efivar_entry_t
*
efivar
;
spin_lock
(
&
efivars_lock
);
spin_lock
(
&
efivars_lock
);
if
(
efi_systab_entry
)
remove_proc_entry
(
efi_systab_entry
->
name
,
efi_dir
);
list_for_each_safe
(
pos
,
n
,
&
efivar_list
)
{
list_for_each_safe
(
pos
,
n
,
&
efivar_list
)
{
efivar
=
efivar_entry
(
pos
);
efivar
=
efivar_entry
(
pos
);
remove_proc_entry
(
efivar
->
entry
->
name
,
efi_vars_dir
);
remove_proc_entry
(
efivar
->
entry
->
name
,
efi_vars_dir
);
...
...
include/asm-ia64/sn/nodepda.h
View file @
b2fdea4f
...
@@ -12,6 +12,7 @@
...
@@ -12,6 +12,7 @@
#include <linux/config.h>
#include <linux/config.h>
#include <asm/sn/sgi.h>
#include <asm/sn/sgi.h>
#include <asm/irq.h>
#include <asm/irq.h>
#include <asm/topology.h>
#include <asm/sn/intr.h>
#include <asm/sn/intr.h>
#include <asm/sn/router.h>
#include <asm/sn/router.h>
#include <asm/sn/pda.h>
#include <asm/sn/pda.h>
...
@@ -127,7 +128,7 @@ typedef struct irqpda_s irqpda_t;
...
@@ -127,7 +128,7 @@ typedef struct irqpda_s irqpda_t;
* Check if given a compact node id the corresponding node has all the
* Check if given a compact node id the corresponding node has all the
* cpus disabled.
* cpus disabled.
*/
*/
#define is_headless_node(cnode) (!
test_bit(cnode, &node_has_active_cpus
))
#define is_headless_node(cnode) (!
node_to_cpumask(cnode
))
/*
/*
* Check if given a node vertex handle the corresponding node has all the
* Check if given a node vertex handle the corresponding node has all the
...
...
include/asm-ia64/unistd.h
View file @
b2fdea4f
...
@@ -257,96 +257,138 @@
...
@@ -257,96 +257,138 @@
extern
long
__ia64_syscall
(
long
a0
,
long
a1
,
long
a2
,
long
a3
,
long
a4
,
long
nr
);
extern
long
__ia64_syscall
(
long
a0
,
long
a1
,
long
a2
,
long
a3
,
long
a4
,
long
nr
);
#
define _syscall0(type,name) \
#
ifdef __KERNEL_SYSCALLS__
type \
name (void) \
#include <linux/string.h>
{ \
#include <linux/signal.h>
register long dummy1 __asm__ ("out0"); \
#include <asm/ptrace.h>
register long dummy2 __asm__ ("out1"); \
#include <linux/stringify.h>
register long dummy3 __asm__ ("out2"); \
register long dummy4 __asm__ ("out3"); \
static
inline
long
register long dummy5 __asm__ ("out4"); \
open
(
const
char
*
name
,
int
mode
,
int
flags
)
\
{
return __ia64_syscall(dummy1, dummy2, dummy3, dummy4, dummy5, \
extern
long
sys_open
(
const
char
*
,
int
,
int
);
__NR_##name); \
return
sys_open
(
name
,
mode
,
flags
);
}
}
#define _syscall1(type,name,type1,arg1) \
static
inline
long
type \
dup
(
int
fd
)
name (type1 arg1) \
{
{ \
extern
long
sys_dup
(
int
);
register long dummy2 __asm__ ("out1"); \
return
sys_dup
(
fd
);
register long dummy3 __asm__ ("out2"); \
register long dummy4 __asm__ ("out3"); \
register long dummy5 __asm__ ("out4"); \
\
return __ia64_syscall((long) arg1, dummy2, dummy3, dummy4, \
dummy5, __NR_##name); \
}
}
#define _syscall2(type,name,type1,arg1,type2,arg2) \
static
inline
long
type \
close
(
int
fd
)
name (type1 arg1, type2 arg2) \
{
{ \
extern
long
sys_close
(
unsigned
int
);
register long dummy3 __asm__ ("out2"); \
return
sys_close
(
fd
);
register long dummy4 __asm__ ("out3"); \
register long dummy5 __asm__ ("out4"); \
\
return __ia64_syscall((long) arg1, (long) arg2, dummy3, dummy4, \
dummy5, __NR_##name); \
}
}
#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
static
inline
off_t
type \
lseek
(
int
fd
,
off_t
off
,
int
whence
)
name (type1 arg1, type2 arg2, type3 arg3) \
{
{ \
extern
off_t
sys_lseek
(
int
,
off_t
,
int
);
register long dummy4 __asm__ ("out3"); \
return
sys_lseek
(
fd
,
off
,
whence
);
register long dummy5 __asm__ ("out4"); \
\
return __ia64_syscall((long) arg1, (long) arg2, (long) arg3, \
dummy4, dummy5, __NR_##name); \
}
}
#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \
static
inline
long
type \
_exit
(
int
value
)
name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
{
{ \
extern
long
sys_exit
(
int
);
register long dummy5 __asm__ ("out4"); \
return
sys_exit
(
value
);
\
return __ia64_syscall((long) arg1, (long) arg2, (long) arg3, \
(long) arg4, dummy5, __NR_##name); \
}
}
#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \
#define exit(x) _exit(x)
type \
name (type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \
static
inline
long
{ \
write
(
int
fd
,
const
char
*
buf
,
size_t
nr
)
return __ia64_syscall((long) arg1, (long) arg2, (long) arg3, \
{
(long) arg4, (long) arg5, __NR_##name); \
extern
long
sys_write
(
int
,
const
char
*
,
size_t
);
return
sys_write
(
fd
,
buf
,
nr
);
}
}
#ifdef __KERNEL_SYSCALLS__
static
inline
long
read
(
int
fd
,
char
*
buf
,
size_t
nr
)
{
extern
long
sys_read
(
int
,
char
*
,
size_t
);
return
sys_read
(
fd
,
buf
,
nr
);
}
struct
rusage
;
static
inline
_syscall0
(
pid_t
,
setsid
)
static
inline
long
static
inline
_syscall3
(
int
,
write
,
int
,
fd
,
const
char
*
,
buf
,
off_t
,
count
)
setsid
(
void
)
static
inline
_syscall3
(
int
,
read
,
int
,
fd
,
char
*
,
buf
,
off_t
,
count
)
{
static
inline
_syscall3
(
off_t
,
lseek
,
int
,
fd
,
off_t
,
offset
,
int
,
count
)
extern
long
sys_setsid
(
void
);
static
inline
_syscall1
(
int
,
dup
,
int
,
fd
)
return
sys_setsid
();
static
inline
_syscall3
(
int
,
execve
,
const
char
*
,
file
,
char
**
,
argv
,
char
**
,
envp
)
}
static
inline
_syscall3
(
int
,
open
,
const
char
*
,
file
,
int
,
flag
,
int
,
mode
)
static
inline
_syscall1
(
int
,
close
,
int
,
fd
)
static
inline
pid_t
static
inline
_syscall4
(
pid_t
,
wait4
,
pid_t
,
pid
,
int
*
,
wait_stat
,
int
,
options
,
struct
rusage
*
,
rusage
)
waitpid
(
int
pid
,
int
*
wait_stat
,
int
flags
)
static
inline
_syscall2
(
pid_t
,
clone
,
unsigned
long
,
flags
,
void
*
,
sp
);
{
extern
asmlinkage
long
sys_wait4
(
pid_t
,
unsigned
int
*
,
int
,
struct
rusage
*
);
struct
rusage
;
return
sys_wait4
(
pid
,
wait_stat
,
flags
,
NULL
);
}
#define __NR__exit __NR_exit
static
inline
_syscall1
(
int
,
_exit
,
int
,
exitcode
)
static
inline
int
execve
(
const
char
*
filename
,
char
*
const
av
[],
char
*
const
ep
[])
{
register
long
r8
asm
(
"r8"
);
register
long
r10
asm
(
"r10"
);
register
long
r15
asm
(
"r15"
)
=
__NR_execve
;
register
long
out0
asm
(
"out0"
)
=
(
long
)
filename
;
register
long
out1
asm
(
"out1"
)
=
(
long
)
av
;
register
long
out2
asm
(
"out2"
)
=
(
long
)
ep
;
asm
volatile
(
"break "
__stringify
(
__BREAK_SYSCALL
)
";;
\n\t
"
:
"=r"
(
r8
),
"=r"
(
r10
),
"=r"
(
r15
),
"=r"
(
out0
),
"=r"
(
out1
),
"=r"
(
out2
)
:
"2"
(
r15
),
"3"
(
out0
),
"4"
(
out1
),
"5"
(
out2
)
:
"memory"
,
"out3"
,
"out4"
,
"out5"
,
"out6"
,
"out7"
,
/* Non-stacked integer registers, minus r8, r10, r15, r13 */
"r2"
,
"r3"
,
"r9"
,
"r11"
,
"r12"
,
"r14"
,
"r16"
,
"r17"
,
"r18"
,
"r19"
,
"r20"
,
"r21"
,
"r22"
,
"r23"
,
"r24"
,
"r25"
,
"r26"
,
"r27"
,
"r28"
,
"r29"
,
"r30"
,
"r31"
,
/* Predicate registers. */
"p6"
,
"p7"
,
"p8"
,
"p9"
,
"p10"
,
"p11"
,
"p12"
,
"p13"
,
"p14"
,
"p15"
,
/* Non-rotating fp registers. */
"f6"
,
"f7"
,
"f8"
,
"f9"
,
"f10"
,
"f11"
,
"f12"
,
"f13"
,
"f14"
,
"f15"
,
/* Branch registers. */
"b6"
,
"b7"
);
return
r8
;
}
static
inline
pid_t
static
inline
pid_t
waitpid
(
int
pid
,
int
*
wait_stat
,
int
flags
)
clone
(
unsigned
long
flags
,
void
*
sp
)
{
{
return
wait4
(
pid
,
wait_stat
,
flags
,
NULL
);
register
long
r8
asm
(
"r8"
);
register
long
r10
asm
(
"r10"
);
register
long
r15
asm
(
"r15"
)
=
__NR_clone
;
register
long
out0
asm
(
"out0"
)
=
(
long
)
flags
;
register
long
out1
asm
(
"out1"
)
=
(
long
)
sp
;
long
retval
;
/* clone clobbers current, hence the "r13" in the clobbers list */
asm
volatile
(
"break "
__stringify
(
__BREAK_SYSCALL
)
";;
\n\t
"
:
"=r"
(
r8
),
"=r"
(
r10
),
"=r"
(
r15
),
"=r"
(
out0
),
"=r"
(
out1
)
:
"2"
(
r15
),
"3"
(
out0
),
"4"
(
out1
)
:
"memory"
,
"out0"
,
"out1"
,
"out2"
,
"out3"
,
"out4"
,
"out5"
,
"out6"
,
"out7"
,
"r13"
,
/* Non-stacked integer registers, minus r8, r10, r15, r13 */
"r2"
,
"r3"
,
"r9"
,
"r11"
,
"r12"
,
"r14"
,
"r16"
,
"r17"
,
"r18"
,
"r19"
,
"r20"
,
"r21"
,
"r22"
,
"r23"
,
"r24"
,
"r25"
,
"r26"
,
"r27"
,
"r28"
,
"r29"
,
"r30"
,
"r31"
,
/* Predicate registers. */
"p6"
,
"p7"
,
"p8"
,
"p9"
,
"p10"
,
"p11"
,
"p12"
,
"p13"
,
"p14"
,
"p15"
,
/* Non-rotating fp registers. */
"f6"
,
"f7"
,
"f8"
,
"f9"
,
"f10"
,
"f11"
,
"f12"
,
"f13"
,
"f14"
,
"f15"
,
/* Branch registers. */
"b6"
,
"b7"
);
retval
=
r8
;
return
retval
;;
}
}
#endif
/* __KERNEL_SYSCALLS__ */
#endif
/* __KERNEL_SYSCALLS__ */
...
...
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