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
423f8711
Commit
423f8711
authored
Jul 22, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://kernel.bkbits.net/davem/net-2.6
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
02bc27cb
84e47b6a
Changes
13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
161 additions
and
73 deletions
+161
-73
MAINTAINERS
MAINTAINERS
+2
-2
arch/sparc/lib/copy_user.S
arch/sparc/lib/copy_user.S
+38
-38
arch/sparc64/Kconfig
arch/sparc64/Kconfig
+2
-1
arch/sparc64/defconfig
arch/sparc64/defconfig
+6
-5
arch/sparc64/kernel/entry.S
arch/sparc64/kernel/entry.S
+21
-7
arch/sparc64/kernel/process.c
arch/sparc64/kernel/process.c
+6
-1
arch/sparc64/kernel/sbus.c
arch/sparc64/kernel/sbus.c
+50
-17
arch/sparc64/kernel/sparc64_ksyms.c
arch/sparc64/kernel/sparc64_ksyms.c
+2
-1
arch/sparc64/kernel/systbls.S
arch/sparc64/kernel/systbls.S
+4
-1
include/asm-sparc/pci.h
include/asm-sparc/pci.h
+7
-0
include/asm-sparc64/siginfo.h
include/asm-sparc64/siginfo.h
+8
-0
include/asm-sparc64/signal.h
include/asm-sparc64/signal.h
+11
-0
include/asm-sparc64/ttable.h
include/asm-sparc64/ttable.h
+4
-0
No files found.
MAINTAINERS
View file @
423f8711
...
@@ -1945,8 +1945,8 @@ L: ultralinux@vger.kernel.org
...
@@ -1945,8 +1945,8 @@ L: ultralinux@vger.kernel.org
S: Maintained
S: Maintained
SPARC (sparc32):
SPARC (sparc32):
P:
Keith M. Wesolowski
P:
William L. Irwin
M: w
esolows@foobazco.org
M: w
li@holomorphy.com
L: sparclinux@vger.kernel.org
L: sparclinux@vger.kernel.org
S: Maintained
S: Maintained
...
...
arch/sparc/lib/copy_user.S
View file @
423f8711
...
@@ -64,52 +64,52 @@
...
@@ -64,52 +64,52 @@
/*
Both
these
macros
have
to
start
with
exactly
the
same
insn
*/
/*
Both
these
macros
have
to
start
with
exactly
the
same
insn
*/
#define MOVE_BIGCHUNK(src, dst, offset, t0, t1, t2, t3, t4, t5, t6, t7) \
#define MOVE_BIGCHUNK(src, dst, offset, t0, t1, t2, t3, t4, t5, t6, t7) \
ldd
[%
src
+
offset
+
0x00
],
%t0
; \
ldd
[%
src
+
(
offset
)
+
0x00
],
%t0
; \
ldd
[%
src
+
offset
+
0x08
],
%t2
; \
ldd
[%
src
+
(
offset
)
+
0x08
],
%t2
; \
ldd
[%
src
+
offset
+
0x10
],
%t4
; \
ldd
[%
src
+
(
offset
)
+
0x10
],
%t4
; \
ldd
[%
src
+
offset
+
0x18
],
%t6
; \
ldd
[%
src
+
(
offset
)
+
0x18
],
%t6
; \
st
%t0
,
[%
dst
+
offset
+
0x00
]
; \
st
%t0
,
[%
dst
+
(
offset
)
+
0x00
]
; \
st
%t1
,
[%
dst
+
offset
+
0x04
]
; \
st
%t1
,
[%
dst
+
(
offset
)
+
0x04
]
; \
st
%t2
,
[%
dst
+
offset
+
0x08
]
; \
st
%t2
,
[%
dst
+
(
offset
)
+
0x08
]
; \
st
%t3
,
[%
dst
+
offset
+
0x0c
]
; \
st
%t3
,
[%
dst
+
(
offset
)
+
0x0c
]
; \
st
%t4
,
[%
dst
+
offset
+
0x10
]
; \
st
%t4
,
[%
dst
+
(
offset
)
+
0x10
]
; \
st
%t5
,
[%
dst
+
offset
+
0x14
]
; \
st
%t5
,
[%
dst
+
(
offset
)
+
0x14
]
; \
st
%t6
,
[%
dst
+
offset
+
0x18
]
; \
st
%t6
,
[%
dst
+
(
offset
)
+
0x18
]
; \
st
%t7
,
[%
dst
+
offset
+
0x1c
]
;
st
%t7
,
[%
dst
+
(
offset
)
+
0x1c
]
;
#define MOVE_BIGALIGNCHUNK(src, dst, offset, t0, t1, t2, t3, t4, t5, t6, t7) \
#define MOVE_BIGALIGNCHUNK(src, dst, offset, t0, t1, t2, t3, t4, t5, t6, t7) \
ldd
[%
src
+
offset
+
0x00
],
%t0
; \
ldd
[%
src
+
(
offset
)
+
0x00
],
%t0
; \
ldd
[%
src
+
offset
+
0x08
],
%t2
; \
ldd
[%
src
+
(
offset
)
+
0x08
],
%t2
; \
ldd
[%
src
+
offset
+
0x10
],
%t4
; \
ldd
[%
src
+
(
offset
)
+
0x10
],
%t4
; \
ldd
[%
src
+
offset
+
0x18
],
%t6
; \
ldd
[%
src
+
(
offset
)
+
0x18
],
%t6
; \
std
%t0
,
[%
dst
+
offset
+
0x00
]
; \
std
%t0
,
[%
dst
+
(
offset
)
+
0x00
]
; \
std
%t2
,
[%
dst
+
offset
+
0x08
]
; \
std
%t2
,
[%
dst
+
(
offset
)
+
0x08
]
; \
std
%t4
,
[%
dst
+
offset
+
0x10
]
; \
std
%t4
,
[%
dst
+
(
offset
)
+
0x10
]
; \
std
%t6
,
[%
dst
+
offset
+
0x18
]
;
std
%t6
,
[%
dst
+
(
offset
)
+
0x18
]
;
#define MOVE_LASTCHUNK(src, dst, offset, t0, t1, t2, t3) \
#define MOVE_LASTCHUNK(src, dst, offset, t0, t1, t2, t3) \
ldd
[%
src
-
offset
-
0x10
],
%t0
; \
ldd
[%
src
-
(
offset
)
-
0x10
],
%t0
; \
ldd
[%
src
-
offset
-
0x08
],
%t2
; \
ldd
[%
src
-
(
offset
)
-
0x08
],
%t2
; \
st
%t0
,
[%
dst
-
offset
-
0x10
]
; \
st
%t0
,
[%
dst
-
(
offset
)
-
0x10
]
; \
st
%t1
,
[%
dst
-
offset
-
0x0c
]
; \
st
%t1
,
[%
dst
-
(
offset
)
-
0x0c
]
; \
st
%t2
,
[%
dst
-
offset
-
0x08
]
; \
st
%t2
,
[%
dst
-
(
offset
)
-
0x08
]
; \
st
%t3
,
[%
dst
-
offset
-
0x04
]
;
st
%t3
,
[%
dst
-
(
offset
)
-
0x04
]
;
#define MOVE_HALFCHUNK(src, dst, offset, t0, t1, t2, t3) \
#define MOVE_HALFCHUNK(src, dst, offset, t0, t1, t2, t3) \
lduh
[%
src
+
offset
+
0x00
],
%t0
; \
lduh
[%
src
+
(
offset
)
+
0x00
],
%t0
; \
lduh
[%
src
+
offset
+
0x02
],
%t1
; \
lduh
[%
src
+
(
offset
)
+
0x02
],
%t1
; \
lduh
[%
src
+
offset
+
0x04
],
%t2
; \
lduh
[%
src
+
(
offset
)
+
0x04
],
%t2
; \
lduh
[%
src
+
offset
+
0x06
],
%t3
; \
lduh
[%
src
+
(
offset
)
+
0x06
],
%t3
; \
sth
%t0
,
[%
dst
+
offset
+
0x00
]
; \
sth
%t0
,
[%
dst
+
(
offset
)
+
0x00
]
; \
sth
%t1
,
[%
dst
+
offset
+
0x02
]
; \
sth
%t1
,
[%
dst
+
(
offset
)
+
0x02
]
; \
sth
%t2
,
[%
dst
+
offset
+
0x04
]
; \
sth
%t2
,
[%
dst
+
(
offset
)
+
0x04
]
; \
sth
%t3
,
[%
dst
+
offset
+
0x06
]
;
sth
%t3
,
[%
dst
+
(
offset
)
+
0x06
]
;
#define MOVE_SHORTCHUNK(src, dst, offset, t0, t1) \
#define MOVE_SHORTCHUNK(src, dst, offset, t0, t1) \
ldub
[%
src
-
offset
-
0x02
],
%t0
; \
ldub
[%
src
-
(
offset
)
-
0x02
],
%t0
; \
ldub
[%
src
-
offset
-
0x01
],
%t1
; \
ldub
[%
src
-
(
offset
)
-
0x01
],
%t1
; \
stb
%t0
,
[%
dst
-
offset
-
0x02
]
; \
stb
%t0
,
[%
dst
-
(
offset
)
-
0x02
]
; \
stb
%t1
,
[%
dst
-
offset
-
0x01
]
;
stb
%t1
,
[%
dst
-
(
offset
)
-
0x01
]
;
.
text
.
text
.
align
4
.
align
4
...
...
arch/sparc64/Kconfig
View file @
423f8711
...
@@ -382,6 +382,7 @@ source "fs/Kconfig.binfmt"
...
@@ -382,6 +382,7 @@ source "fs/Kconfig.binfmt"
config SUNOS_EMUL
config SUNOS_EMUL
bool "SunOS binary emulation"
bool "SunOS binary emulation"
depends on BINFMT_AOUT32
help
help
This allows you to run most SunOS binaries. If you want to do this,
This allows you to run most SunOS binaries. If you want to do this,
say Y here and place appropriate files in /usr/gnemul/sunos. See
say Y here and place appropriate files in /usr/gnemul/sunos. See
...
@@ -391,7 +392,7 @@ config SUNOS_EMUL
...
@@ -391,7 +392,7 @@ config SUNOS_EMUL
config SOLARIS_EMUL
config SOLARIS_EMUL
tristate "Solaris binary emulation (EXPERIMENTAL)"
tristate "Solaris binary emulation (EXPERIMENTAL)"
depends on EXPERIMENTAL
depends on
SPARC32_COMPAT &&
EXPERIMENTAL
help
help
This is experimental code which will enable you to run (many)
This is experimental code which will enable you to run (many)
Solaris binaries on your SPARC Linux machine.
Solaris binaries on your SPARC Linux machine.
...
...
arch/sparc64/defconfig
View file @
423f8711
...
@@ -201,8 +201,6 @@ CONFIG_SUN_OPENPROMIO=m
...
@@ -201,8 +201,6 @@ CONFIG_SUN_OPENPROMIO=m
CONFIG_SUN_MOSTEK_RTC=y
CONFIG_SUN_MOSTEK_RTC=y
CONFIG_OBP_FLASH=m
CONFIG_OBP_FLASH=m
# CONFIG_SUN_BPP is not set
# CONFIG_SUN_BPP is not set
# CONFIG_SUN_VIDEOPIX is not set
# CONFIG_SUN_AURORA is not set
#
#
# Memory Technology Devices (MTD)
# Memory Technology Devices (MTD)
...
@@ -346,10 +344,8 @@ CONFIG_SCSI_SATA_VIA=m
...
@@ -346,10 +344,8 @@ CONFIG_SCSI_SATA_VIA=m
CONFIG_SCSI_SATA_VITESSE=m
CONFIG_SCSI_SATA_VITESSE=m
# CONFIG_SCSI_BUSLOGIC is not set
# CONFIG_SCSI_BUSLOGIC is not set
CONFIG_SCSI_DMX3191D=m
CONFIG_SCSI_DMX3191D=m
# CONFIG_SCSI_EATA is not set
CONFIG_SCSI_EATA_PIO=m
CONFIG_SCSI_EATA_PIO=m
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_GDTH is not set
CONFIG_SCSI_IPS=m
CONFIG_SCSI_IPS=m
CONFIG_SCSI_INIA100=m
CONFIG_SCSI_INIA100=m
CONFIG_SCSI_PPA=m
CONFIG_SCSI_PPA=m
...
@@ -377,7 +373,7 @@ CONFIG_SCSI_QLA2XXX=y
...
@@ -377,7 +373,7 @@ CONFIG_SCSI_QLA2XXX=y
# CONFIG_SCSI_QLA6312 is not set
# CONFIG_SCSI_QLA6312 is not set
# CONFIG_SCSI_QLA6322 is not set
# CONFIG_SCSI_QLA6322 is not set
CONFIG_SCSI_DC395x=m
CONFIG_SCSI_DC395x=m
CONFIG_SCSI_DC390T=m
# CONFIG_SCSI_DC390T is not set
CONFIG_SCSI_DEBUG=m
CONFIG_SCSI_DEBUG=m
CONFIG_SCSI_SUNESP=y
CONFIG_SCSI_SUNESP=y
...
@@ -1132,12 +1128,15 @@ CONFIG_I2C_VOODOO3=m
...
@@ -1132,12 +1128,15 @@ CONFIG_I2C_VOODOO3=m
#
#
CONFIG_I2C_SENSOR=m
CONFIG_I2C_SENSOR=m
CONFIG_SENSORS_ADM1021=m
CONFIG_SENSORS_ADM1021=m
CONFIG_SENSORS_ADM1025=m
CONFIG_SENSORS_ADM1031=m
CONFIG_SENSORS_ASB100=m
CONFIG_SENSORS_ASB100=m
CONFIG_SENSORS_DS1621=m
CONFIG_SENSORS_DS1621=m
CONFIG_SENSORS_FSCHER=m
CONFIG_SENSORS_FSCHER=m
CONFIG_SENSORS_GL518SM=m
CONFIG_SENSORS_GL518SM=m
CONFIG_SENSORS_IT87=m
CONFIG_SENSORS_IT87=m
CONFIG_SENSORS_LM75=m
CONFIG_SENSORS_LM75=m
CONFIG_SENSORS_LM77=m
CONFIG_SENSORS_LM78=m
CONFIG_SENSORS_LM78=m
CONFIG_SENSORS_LM80=m
CONFIG_SENSORS_LM80=m
CONFIG_SENSORS_LM83=m
CONFIG_SENSORS_LM83=m
...
@@ -1240,6 +1239,7 @@ CONFIG_BEFS_FS=m
...
@@ -1240,6 +1239,7 @@ CONFIG_BEFS_FS=m
# CONFIG_BEFS_DEBUG is not set
# CONFIG_BEFS_DEBUG is not set
CONFIG_BFS_FS=m
CONFIG_BFS_FS=m
CONFIG_EFS_FS=m
CONFIG_EFS_FS=m
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
CONFIG_CRAMFS=m
CONFIG_CRAMFS=m
CONFIG_VXFS_FS=m
CONFIG_VXFS_FS=m
CONFIG_HPFS_FS=m
CONFIG_HPFS_FS=m
...
@@ -1606,6 +1606,7 @@ CONFIG_USB_HPUSBSCSI=m
...
@@ -1606,6 +1606,7 @@ CONFIG_USB_HPUSBSCSI=m
# CONFIG_USB_OV511 is not set
# CONFIG_USB_OV511 is not set
CONFIG_USB_PWC=m
CONFIG_USB_PWC=m
# CONFIG_USB_SE401 is not set
# CONFIG_USB_SE401 is not set
CONFIG_USB_SN9C102=m
# CONFIG_USB_STV680 is not set
# CONFIG_USB_STV680 is not set
CONFIG_USB_W9968CF=m
CONFIG_USB_W9968CF=m
...
...
arch/sparc64/kernel/entry.S
View file @
423f8711
...
@@ -1496,28 +1496,30 @@ sunos_getgid:
...
@@ -1496,28 +1496,30 @@ sunos_getgid:
/
*
SunOS
's execv() call only specifies the argv argument, the
/
*
SunOS
's execv() call only specifies the argv argument, the
*
environment
settings
are
the
same
as
the
calling
processes
.
*
environment
settings
are
the
same
as
the
calling
processes
.
*/
*/
.
globl
sunos_execv
,
sys_execve
,
sys32_execve
.
globl
sunos_execv
sys_execve
:
sys_execve
:
sethi
%
hi
(
sparc_execve
),
%
g1
sethi
%
hi
(
sparc_execve
),
%
g1
ba
,
pt
%
xcc
,
execve_merge
ba
,
pt
%
xcc
,
execve_merge
or
%
g1
,
%
lo
(
sparc_execve
),
%
g1
or
%
g1
,
%
lo
(
sparc_execve
),
%
g1
#ifdef CONFIG_COMPAT
.
globl
sys_execve
sunos_execv
:
sunos_execv
:
stx
%
g0
,
[%
sp
+
PTREGS_OFF
+
PT_V9_I2
]
stx
%
g0
,
[%
sp
+
PTREGS_OFF
+
PT_V9_I2
]
.
globl
sys32_execve
sys32_execve
:
sys32_execve
:
sethi
%
hi
(
sparc32_execve
),
%
g1
sethi
%
hi
(
sparc32_execve
),
%
g1
or
%
g1
,
%
lo
(
sparc32_execve
),
%
g1
or
%
g1
,
%
lo
(
sparc32_execve
),
%
g1
#endif
execve_merge
:
execve_merge
:
flushw
flushw
jmpl
%
g1
,
%
g0
jmpl
%
g1
,
%
g0
add
%
sp
,
PTREGS_OFF
,
%
o0
add
%
sp
,
PTREGS_OFF
,
%
o0
.
globl
sys_pipe
,
sys_sigpause
,
sys_nis_syscall
.
globl
sys_pipe
,
sys_sigpause
,
sys_nis_syscall
.
globl
sys_sigsuspend
,
sys_rt_sigsuspend
,
sys32_rt_sigsuspend
.
globl
sys_sigsuspend
,
sys_rt_sigsuspend
.
globl
sys_rt_sigreturn
.
globl
sys_rt_sigreturn
.
globl
sys32_sigreturn
,
sys32_rt_sigreturn
.
globl
sys_ptrace
.
globl
sys32_execve
,
sys_ptrace
.
globl
sys_sigaltstack
.
globl
sys_sigaltstack
,
sys32_sigaltstack
.
globl
sys32_sigstack
.
align
32
.
align
32
sys_pipe
:
ba
,
pt
%
xcc
,
sparc_pipe
sys_pipe
:
ba
,
pt
%
xcc
,
sparc_pipe
add
%
sp
,
PTREGS_OFF
,
%
o0
add
%
sp
,
PTREGS_OFF
,
%
o0
...
@@ -1528,12 +1530,15 @@ sys_memory_ordering:
...
@@ -1528,12 +1530,15 @@ sys_memory_ordering:
add
%
sp
,
PTREGS_OFF
,
%
o1
add
%
sp
,
PTREGS_OFF
,
%
o1
sys_sigaltstack
:
ba
,
pt
%
xcc
,
do_sigaltstack
sys_sigaltstack
:
ba
,
pt
%
xcc
,
do_sigaltstack
add
%
i6
,
STACK_BIAS
,
%
o2
add
%
i6
,
STACK_BIAS
,
%
o2
#ifdef CONFIG_COMPAT
.
globl
sys32_sigstack
sys32_sigstack
:
ba
,
pt
%
xcc
,
do_sys32_sigstack
sys32_sigstack
:
ba
,
pt
%
xcc
,
do_sys32_sigstack
mov
%
i6
,
%
o2
mov
%
i6
,
%
o2
.
globl
sys32_sigaltstack
sys32_sigaltstack
:
sys32_sigaltstack
:
ba
,
pt
%
xcc
,
do_sys32_sigaltstack
ba
,
pt
%
xcc
,
do_sys32_sigaltstack
mov
%
i6
,
%
o2
mov
%
i6
,
%
o2
#endif
.
align
32
.
align
32
sys_sigsuspend
:
add
%
sp
,
PTREGS_OFF
,
%
o0
sys_sigsuspend
:
add
%
sp
,
PTREGS_OFF
,
%
o0
call
do_sigsuspend
call
do_sigsuspend
...
@@ -1544,31 +1549,40 @@ sys_rt_sigsuspend: /* NOTE: %o0,%o1 have a correct value already */
...
@@ -1544,31 +1549,40 @@ sys_rt_sigsuspend: /* NOTE: %o0,%o1 have a correct value already */
call
do_rt_sigsuspend
call
do_rt_sigsuspend
add
%
o7
,
1
f
-
.
-
4
,
%
o7
add
%
o7
,
1
f
-
.
-
4
,
%
o7
nop
nop
#ifdef CONFIG_COMPAT
.
globl
sys32_rt_sigsuspend
sys32_rt_sigsuspend
:
/
*
NOTE
:
%
o0
,%
o1
have
a
correct
value
already
*/
sys32_rt_sigsuspend
:
/
*
NOTE
:
%
o0
,%
o1
have
a
correct
value
already
*/
srl
%
o0
,
0
,
%
o0
srl
%
o0
,
0
,
%
o0
add
%
sp
,
PTREGS_OFF
,
%
o2
add
%
sp
,
PTREGS_OFF
,
%
o2
call
do_rt_sigsuspend32
call
do_rt_sigsuspend32
add
%
o7
,
1
f
-
.
-
4
,
%
o7
add
%
o7
,
1
f
-
.
-
4
,
%
o7
#endif
/
*
NOTE
:
%
o0
has
a
correct
value
already
*/
/
*
NOTE
:
%
o0
has
a
correct
value
already
*/
sys_sigpause
:
add
%
sp
,
PTREGS_OFF
,
%
o1
sys_sigpause
:
add
%
sp
,
PTREGS_OFF
,
%
o1
call
do_sigpause
call
do_sigpause
add
%
o7
,
1
f
-
.
-
4
,
%
o7
add
%
o7
,
1
f
-
.
-
4
,
%
o7
nop
nop
#ifdef CONFIG_COMPAT
.
globl
sys32_sigreturn
sys32_sigreturn
:
sys32_sigreturn
:
add
%
sp
,
PTREGS_OFF
,
%
o0
add
%
sp
,
PTREGS_OFF
,
%
o0
call
do_sigreturn32
call
do_sigreturn32
add
%
o7
,
1
f
-
.
-
4
,
%
o7
add
%
o7
,
1
f
-
.
-
4
,
%
o7
nop
nop
#endif
sys_rt_sigreturn
:
sys_rt_sigreturn
:
add
%
sp
,
PTREGS_OFF
,
%
o0
add
%
sp
,
PTREGS_OFF
,
%
o0
call
do_rt_sigreturn
call
do_rt_sigreturn
add
%
o7
,
1
f
-
.
-
4
,
%
o7
add
%
o7
,
1
f
-
.
-
4
,
%
o7
nop
nop
#ifdef CONFIG_COMPAT
.
globl
sys32_rt_sigreturn
sys32_rt_sigreturn
:
sys32_rt_sigreturn
:
add
%
sp
,
PTREGS_OFF
,
%
o0
add
%
sp
,
PTREGS_OFF
,
%
o0
call
do_rt_sigreturn32
call
do_rt_sigreturn32
add
%
o7
,
1
f
-
.
-
4
,
%
o7
add
%
o7
,
1
f
-
.
-
4
,
%
o7
nop
nop
#endif
sys_ptrace
:
add
%
sp
,
PTREGS_OFF
,
%
o0
sys_ptrace
:
add
%
sp
,
PTREGS_OFF
,
%
o0
call
do_ptrace
call
do_ptrace
add
%
o7
,
1
f
-
.
-
4
,
%
o7
add
%
o7
,
1
f
-
.
-
4
,
%
o7
...
...
arch/sparc64/kernel/process.c
View file @
423f8711
...
@@ -12,6 +12,7 @@
...
@@ -12,6 +12,7 @@
#include <stdarg.h>
#include <stdarg.h>
#include <linux/config.h>
#include <linux/errno.h>
#include <linux/errno.h>
#include <linux/module.h>
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/sched.h>
...
@@ -28,6 +29,7 @@
...
@@ -28,6 +29,7 @@
#include <linux/config.h>
#include <linux/config.h>
#include <linux/reboot.h>
#include <linux/reboot.h>
#include <linux/delay.h>
#include <linux/delay.h>
#include <linux/compat.h>
#include <linux/init.h>
#include <linux/init.h>
#include <asm/oplib.h>
#include <asm/oplib.h>
...
@@ -588,10 +590,13 @@ asmlinkage long sparc_do_fork(unsigned long clone_flags,
...
@@ -588,10 +590,13 @@ asmlinkage long sparc_do_fork(unsigned long clone_flags,
clone_flags
&=
~
CLONE_IDLETASK
;
clone_flags
&=
~
CLONE_IDLETASK
;
#ifdef CONFIG_COMPAT
if
(
test_thread_flag
(
TIF_32BIT
))
{
if
(
test_thread_flag
(
TIF_32BIT
))
{
parent_tid_ptr
=
compat_ptr
(
regs
->
u_regs
[
UREG_I2
]);
parent_tid_ptr
=
compat_ptr
(
regs
->
u_regs
[
UREG_I2
]);
child_tid_ptr
=
compat_ptr
(
regs
->
u_regs
[
UREG_I4
]);
child_tid_ptr
=
compat_ptr
(
regs
->
u_regs
[
UREG_I4
]);
}
else
{
}
else
#endif
{
parent_tid_ptr
=
(
int
__user
*
)
regs
->
u_regs
[
UREG_I2
];
parent_tid_ptr
=
(
int
__user
*
)
regs
->
u_regs
[
UREG_I2
];
child_tid_ptr
=
(
int
__user
*
)
regs
->
u_regs
[
UREG_I4
];
child_tid_ptr
=
(
int
__user
*
)
regs
->
u_regs
[
UREG_I4
];
}
}
...
...
arch/sparc64/kernel/sbus.c
View file @
423f8711
...
@@ -28,10 +28,10 @@
...
@@ -28,10 +28,10 @@
*
*
* On SYSIO, using an 8K page size we have 1GB of SBUS
* On SYSIO, using an 8K page size we have 1GB of SBUS
* DMA space mapped. We divide this space into equally
* DMA space mapped. We divide this space into equally
* sized clusters.
Currently we allow clusters up to a
* sized clusters.
We allocate a DMA mapping from the
*
size of 1MB. If anything begins to generate DMA
*
cluster that matches the order of the allocation, or
*
mapping requests larger than this we will need to
*
if the order is greater than the number of clusters,
*
increase things a bit
.
*
we try to allocate from the last cluster
.
*/
*/
#define NCLUSTERS 8UL
#define NCLUSTERS 8UL
...
@@ -134,12 +134,17 @@ static void strbuf_flush(struct sbus_iommu *iommu, u32 base, unsigned long npage
...
@@ -134,12 +134,17 @@ static void strbuf_flush(struct sbus_iommu *iommu, u32 base, unsigned long npage
static
iopte_t
*
alloc_streaming_cluster
(
struct
sbus_iommu
*
iommu
,
unsigned
long
npages
)
static
iopte_t
*
alloc_streaming_cluster
(
struct
sbus_iommu
*
iommu
,
unsigned
long
npages
)
{
{
iopte_t
*
iopte
,
*
limit
,
*
first
;
iopte_t
*
iopte
,
*
limit
,
*
first
,
*
cluster
;
unsigned
long
cnum
,
ent
,
flush_point
;
unsigned
long
cnum
,
ent
,
nent
,
flush_point
,
found
;
cnum
=
0
;
cnum
=
0
;
nent
=
1
;
while
((
1UL
<<
cnum
)
<
npages
)
while
((
1UL
<<
cnum
)
<
npages
)
cnum
++
;
cnum
++
;
if
(
cnum
>=
NCLUSTERS
)
{
nent
=
1UL
<<
(
cnum
-
NCLUSTERS
);
cnum
=
NCLUSTERS
-
1
;
}
iopte
=
iommu
->
page_table
+
(
cnum
*
CLUSTER_NPAGES
);
iopte
=
iommu
->
page_table
+
(
cnum
*
CLUSTER_NPAGES
);
if
(
cnum
==
0
)
if
(
cnum
==
0
)
...
@@ -152,22 +157,31 @@ static iopte_t *alloc_streaming_cluster(struct sbus_iommu *iommu, unsigned long
...
@@ -152,22 +157,31 @@ static iopte_t *alloc_streaming_cluster(struct sbus_iommu *iommu, unsigned long
flush_point
=
iommu
->
alloc_info
[
cnum
].
flush
;
flush_point
=
iommu
->
alloc_info
[
cnum
].
flush
;
first
=
iopte
;
first
=
iopte
;
cluster
=
NULL
;
found
=
0
;
for
(;;)
{
for
(;;)
{
if
(
iopte_val
(
*
iopte
)
==
0UL
)
{
if
(
iopte_val
(
*
iopte
)
==
0UL
)
{
if
((
iopte
+
(
1
<<
cnum
))
>=
limit
)
found
++
;
ent
=
0
;
if
(
!
cluster
)
else
cluster
=
iopte
;
ent
=
ent
+
1
;
}
else
{
iommu
->
alloc_info
[
cnum
].
next
=
ent
;
/* Used cluster in the way */
if
(
ent
==
flush_point
)
cluster
=
NULL
;
__iommu_flushall
(
iommu
);
found
=
0
;
break
;
}
}
if
(
found
==
nent
)
break
;
iopte
+=
(
1
<<
cnum
);
iopte
+=
(
1
<<
cnum
);
ent
++
;
ent
++
;
if
(
iopte
>=
limit
)
{
if
(
iopte
>=
limit
)
{
iopte
=
(
iommu
->
page_table
+
(
cnum
*
CLUSTER_NPAGES
));
iopte
=
(
iommu
->
page_table
+
(
cnum
*
CLUSTER_NPAGES
));
ent
=
0
;
ent
=
0
;
/* Multiple cluster allocations must not wrap */
cluster
=
NULL
;
found
=
0
;
}
}
if
(
ent
==
flush_point
)
if
(
ent
==
flush_point
)
__iommu_flushall
(
iommu
);
__iommu_flushall
(
iommu
);
...
@@ -175,8 +189,19 @@ static iopte_t *alloc_streaming_cluster(struct sbus_iommu *iommu, unsigned long
...
@@ -175,8 +189,19 @@ static iopte_t *alloc_streaming_cluster(struct sbus_iommu *iommu, unsigned long
goto
bad
;
goto
bad
;
}
}
/* ent/iopte points to the last cluster entry we're going to use,
* so save our place for the next allocation.
*/
if
((
iopte
+
(
1
<<
cnum
))
>=
limit
)
ent
=
0
;
else
ent
=
ent
+
1
;
iommu
->
alloc_info
[
cnum
].
next
=
ent
;
if
(
ent
==
flush_point
)
__iommu_flushall
(
iommu
);
/* I've got your streaming cluster right here buddy boy... */
/* I've got your streaming cluster right here buddy boy... */
return
iopte
;
return
cluster
;
bad:
bad:
printk
(
KERN_EMERG
"sbus: alloc_streaming_cluster of npages(%ld) failed!
\n
"
,
printk
(
KERN_EMERG
"sbus: alloc_streaming_cluster of npages(%ld) failed!
\n
"
,
...
@@ -186,15 +211,23 @@ static iopte_t *alloc_streaming_cluster(struct sbus_iommu *iommu, unsigned long
...
@@ -186,15 +211,23 @@ static iopte_t *alloc_streaming_cluster(struct sbus_iommu *iommu, unsigned long
static
void
free_streaming_cluster
(
struct
sbus_iommu
*
iommu
,
u32
base
,
unsigned
long
npages
)
static
void
free_streaming_cluster
(
struct
sbus_iommu
*
iommu
,
u32
base
,
unsigned
long
npages
)
{
{
unsigned
long
cnum
,
ent
;
unsigned
long
cnum
,
ent
,
nent
;
iopte_t
*
iopte
;
iopte_t
*
iopte
;
cnum
=
0
;
cnum
=
0
;
nent
=
1
;
while
((
1UL
<<
cnum
)
<
npages
)
while
((
1UL
<<
cnum
)
<
npages
)
cnum
++
;
cnum
++
;
if
(
cnum
>=
NCLUSTERS
)
{
nent
=
1UL
<<
(
cnum
-
NCLUSTERS
);
cnum
=
NCLUSTERS
-
1
;
}
ent
=
(
base
&
CLUSTER_MASK
)
>>
(
IO_PAGE_SHIFT
+
cnum
);
ent
=
(
base
&
CLUSTER_MASK
)
>>
(
IO_PAGE_SHIFT
+
cnum
);
iopte
=
iommu
->
page_table
+
((
base
-
MAP_BASE
)
>>
IO_PAGE_SHIFT
);
iopte
=
iommu
->
page_table
+
((
base
-
MAP_BASE
)
>>
IO_PAGE_SHIFT
);
do
{
iopte_val
(
*
iopte
)
=
0UL
;
iopte_val
(
*
iopte
)
=
0UL
;
iopte
+=
1
<<
cnum
;
}
while
(
--
nent
);
/* If the global flush might not have caught this entry,
/* If the global flush might not have caught this entry,
* adjust the flush point such that we will flush before
* adjust the flush point such that we will flush before
...
...
arch/sparc64/kernel/sparc64_ksyms.c
View file @
423f8711
...
@@ -350,9 +350,10 @@ EXPORT_SYMBOL(csum_partial);
...
@@ -350,9 +350,10 @@ EXPORT_SYMBOL(csum_partial);
EXPORT_SYMBOL
(
csum_partial_copy_sparc64
);
EXPORT_SYMBOL
(
csum_partial_copy_sparc64
);
EXPORT_SYMBOL
(
ip_fast_csum
);
EXPORT_SYMBOL
(
ip_fast_csum
);
/* Moving data to/from userspace. */
/* Moving data to/from
/in
userspace. */
EXPORT_SYMBOL
(
__copy_to_user
);
EXPORT_SYMBOL
(
__copy_to_user
);
EXPORT_SYMBOL
(
__copy_from_user
);
EXPORT_SYMBOL
(
__copy_from_user
);
EXPORT_SYMBOL
(
__copy_in_user
);
EXPORT_SYMBOL
(
__strncpy_from_user
);
EXPORT_SYMBOL
(
__strncpy_from_user
);
EXPORT_SYMBOL
(
__bzero_noasi
);
EXPORT_SYMBOL
(
__bzero_noasi
);
...
...
arch/sparc64/kernel/systbls.S
View file @
423f8711
...
@@ -15,6 +15,7 @@
...
@@ -15,6 +15,7 @@
.
text
.
text
.
align
4
.
align
4
#ifdef CONFIG_COMPAT
/
*
First
,
the
32
-
bit
Linux
native
syscall
table
.
*/
/
*
First
,
the
32
-
bit
Linux
native
syscall
table
.
*/
.
globl
sys_call_table32
.
globl
sys_call_table32
...
@@ -77,6 +78,8 @@ sys_call_table32:
...
@@ -77,6 +78,8 @@ sys_call_table32:
.
word
sys_mq_timedsend
,
sys_mq_timedreceive
,
compat_sys_mq_notify
,
compat_sys_mq_getsetattr
,
sys_ni_syscall
.
word
sys_mq_timedsend
,
sys_mq_timedreceive
,
compat_sys_mq_notify
,
compat_sys_mq_getsetattr
,
sys_ni_syscall
/*
280
*/
.
word
sys_ni_syscall
,
sys_ni_syscall
,
sys_ni_syscall
/*
280
*/
.
word
sys_ni_syscall
,
sys_ni_syscall
,
sys_ni_syscall
#endif /* CONFIG_COMPAT */
/
*
Now
the
64
-
bit
native
Linux
syscall
table
.
*/
/
*
Now
the
64
-
bit
native
Linux
syscall
table
.
*/
.
align
4
.
align
4
...
@@ -85,7 +88,7 @@ sys_call_table64:
...
@@ -85,7 +88,7 @@ sys_call_table64:
sys_call_table
:
sys_call_table
:
/*
0
*/
.
word
sys_restart_syscall
,
sparc_exit
,
sys_fork
,
sys_read
,
sys_write
/*
0
*/
.
word
sys_restart_syscall
,
sparc_exit
,
sys_fork
,
sys_read
,
sys_write
/*
5
*/
.
word
sys_open
,
sys_close
,
sys_wait4
,
sys_creat
,
sys_link
/*
5
*/
.
word
sys_open
,
sys_close
,
sys_wait4
,
sys_creat
,
sys_link
/*
10
*/
.
word
sys_unlink
,
s
unos_execv
,
sys_chdir
,
sys_chown
,
sys_mknod
/*
10
*/
.
word
sys_unlink
,
s
ys_nis_syscall
,
sys_chdir
,
sys_chown
,
sys_mknod
/*
15
*/
.
word
sys_chmod
,
sys_lchown
,
sparc_brk
,
sys_perfctr
,
sys_lseek
/*
15
*/
.
word
sys_chmod
,
sys_lchown
,
sparc_brk
,
sys_perfctr
,
sys_lseek
/*
20
*/
.
word
sys_getpid
,
sys_capget
,
sys_capset
,
sys_setuid
,
sys_getuid
/*
20
*/
.
word
sys_getpid
,
sys_capget
,
sys_capset
,
sys_setuid
,
sys_getuid
/*
25
*/
.
word
sys_nis_syscall
,
sys_ptrace
,
sys_alarm
,
sys_sigaltstack
,
sys_nis_syscall
/*
25
*/
.
word
sys_nis_syscall
,
sys_ptrace
,
sys_alarm
,
sys_sigaltstack
,
sys_nis_syscall
...
...
include/asm-sparc/pci.h
View file @
423f8711
...
@@ -154,6 +154,13 @@ static inline void pcibios_add_platform_entries(struct pci_dev *dev)
...
@@ -154,6 +154,13 @@ static inline void pcibios_add_platform_entries(struct pci_dev *dev)
{
{
}
}
#define PCI_DMA_ERROR_CODE (~(dma_addr_t)0x0)
static
inline
int
pci_dma_mapping_error
(
dma_addr_t
dma_addr
)
{
return
(
dma_addr
==
PCI_DMA_ERROR_CODE
);
}
#endif
/* __KERNEL__ */
#endif
/* __KERNEL__ */
/* generic pci stuff */
/* generic pci stuff */
...
...
include/asm-sparc64/siginfo.h
View file @
423f8711
...
@@ -14,8 +14,11 @@
...
@@ -14,8 +14,11 @@
#ifdef __KERNEL__
#ifdef __KERNEL__
#include <linux/config.h>
#include <linux/compat.h>
#include <linux/compat.h>
#ifdef CONFIG_COMPAT
typedef
union
sigval32
{
typedef
union
sigval32
{
int
sival_int
;
int
sival_int
;
u32
sival_ptr
;
u32
sival_ptr
;
...
@@ -72,6 +75,7 @@ typedef struct siginfo32 {
...
@@ -72,6 +75,7 @@ typedef struct siginfo32 {
}
_sigpoll
;
}
_sigpoll
;
}
_sifields
;
}
_sifields
;
}
siginfo_t32
;
}
siginfo_t32
;
#endif
/* CONFIG_COMPAT */
#endif
/* __KERNEL__ */
#endif
/* __KERNEL__ */
...
@@ -85,6 +89,8 @@ typedef struct siginfo32 {
...
@@ -85,6 +89,8 @@ typedef struct siginfo32 {
#ifdef __KERNEL__
#ifdef __KERNEL__
#ifdef CONFIG_COMPAT
typedef
struct
sigevent32
{
typedef
struct
sigevent32
{
sigval_t32
sigev_value
;
sigval_t32
sigev_value
;
int
sigev_signo
;
int
sigev_signo
;
...
@@ -101,6 +107,8 @@ typedef struct sigevent32 {
...
@@ -101,6 +107,8 @@ typedef struct sigevent32 {
extern
int
copy_siginfo_to_user32
(
siginfo_t32
__user
*
to
,
siginfo_t
*
from
);
extern
int
copy_siginfo_to_user32
(
siginfo_t32
__user
*
to
,
siginfo_t
*
from
);
#endif
/* CONFIG_COMPAT */
#endif
/* __KERNEL__ */
#endif
/* __KERNEL__ */
#endif
#endif
include/asm-sparc64/signal.h
View file @
423f8711
...
@@ -6,6 +6,7 @@
...
@@ -6,6 +6,7 @@
#ifdef __KERNEL__
#ifdef __KERNEL__
#ifndef __ASSEMBLY__
#ifndef __ASSEMBLY__
#include <linux/config.h>
#include <linux/personality.h>
#include <linux/personality.h>
#include <linux/types.h>
#include <linux/types.h>
#include <linux/compat.h>
#include <linux/compat.h>
...
@@ -208,12 +209,15 @@ struct __new_sigaction {
...
@@ -208,12 +209,15 @@ struct __new_sigaction {
};
};
#ifdef __KERNEL__
#ifdef __KERNEL__
#ifdef CONFIG_COMPAT
struct
__new_sigaction32
{
struct
__new_sigaction32
{
unsigned
sa_handler
;
unsigned
sa_handler
;
unsigned
int
sa_flags
;
unsigned
int
sa_flags
;
unsigned
sa_restorer
;
/* not used by Linux/SPARC yet */
unsigned
sa_restorer
;
/* not used by Linux/SPARC yet */
compat_sigset_t
sa_mask
;
compat_sigset_t
sa_mask
;
};
};
#endif
struct
k_sigaction
{
struct
k_sigaction
{
struct
__new_sigaction
sa
;
struct
__new_sigaction
sa
;
...
@@ -229,6 +233,8 @@ struct __old_sigaction {
...
@@ -229,6 +233,8 @@ struct __old_sigaction {
};
};
#ifdef __KERNEL__
#ifdef __KERNEL__
#ifdef CONFIG_COMPAT
struct
__old_sigaction32
{
struct
__old_sigaction32
{
unsigned
sa_handler
;
unsigned
sa_handler
;
compat_old_sigset_t
sa_mask
;
compat_old_sigset_t
sa_mask
;
...
@@ -237,6 +243,8 @@ struct __old_sigaction32 {
...
@@ -237,6 +243,8 @@ struct __old_sigaction32 {
};
};
#endif
#endif
#endif
typedef
struct
sigaltstack
{
typedef
struct
sigaltstack
{
void
__user
*
ss_sp
;
void
__user
*
ss_sp
;
int
ss_flags
;
int
ss_flags
;
...
@@ -244,11 +252,14 @@ typedef struct sigaltstack {
...
@@ -244,11 +252,14 @@ typedef struct sigaltstack {
}
stack_t
;
}
stack_t
;
#ifdef __KERNEL__
#ifdef __KERNEL__
#ifdef CONFIG_COMPAT
typedef
struct
sigaltstack32
{
typedef
struct
sigaltstack32
{
u32
ss_sp
;
u32
ss_sp
;
int
ss_flags
;
int
ss_flags
;
compat_size_t
ss_size
;
compat_size_t
ss_size
;
}
stack_t32
;
}
stack_t32
;
#endif
struct
signal_deliver_cookie
{
struct
signal_deliver_cookie
{
int
restart_syscall
;
int
restart_syscall
;
...
...
include/asm-sparc64/ttable.h
View file @
423f8711
...
@@ -123,7 +123,11 @@
...
@@ -123,7 +123,11 @@
#else
#else
#define SUNOS_SYSCALL_TRAP TRAP(sunos_syscall)
#define SUNOS_SYSCALL_TRAP TRAP(sunos_syscall)
#endif
#endif
#ifdef CONFIG_COMPAT
#define LINUX_32BIT_SYSCALL_TRAP SYSCALL_TRAP(linux_sparc_syscall32, sys_call_table32)
#define LINUX_32BIT_SYSCALL_TRAP SYSCALL_TRAP(linux_sparc_syscall32, sys_call_table32)
#else
#define LINUX_32BIT_SYSCALL_TRAP BTRAP(0x110)
#endif
#define LINUX_64BIT_SYSCALL_TRAP SYSCALL_TRAP(linux_sparc_syscall, sys_call_table64)
#define LINUX_64BIT_SYSCALL_TRAP SYSCALL_TRAP(linux_sparc_syscall, sys_call_table64)
#define GETCC_TRAP TRAP(getcc)
#define GETCC_TRAP TRAP(getcc)
#define SETCC_TRAP TRAP(setcc)
#define SETCC_TRAP TRAP(setcc)
...
...
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