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
57cafcc8
Commit
57cafcc8
authored
Mar 30, 2004
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://kernel.bkbits.net/wesolows/sparc32-2.6
into nuts.davemloft.net:/disk1/BK/sparc-2.6
parents
f96599ee
f756a8b3
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
316 additions
and
210 deletions
+316
-210
arch/sparc/defconfig
arch/sparc/defconfig
+225
-78
arch/sparc/kernel/entry.S
arch/sparc/kernel/entry.S
+7
-20
arch/sparc/kernel/head.S
arch/sparc/kernel/head.S
+0
-3
arch/sparc/kernel/init_task.c
arch/sparc/kernel/init_task.c
+4
-2
arch/sparc/kernel/module.c
arch/sparc/kernel/module.c
+13
-5
arch/sparc/kernel/signal.c
arch/sparc/kernel/signal.c
+2
-2
arch/sparc/kernel/sparc_ksyms.c
arch/sparc/kernel/sparc_ksyms.c
+45
-60
arch/sparc/kernel/sys_sunos.c
arch/sparc/kernel/sys_sunos.c
+2
-2
arch/sparc/kernel/traps.c
arch/sparc/kernel/traps.c
+5
-5
arch/sparc/lib/Makefile
arch/sparc/lib/Makefile
+3
-1
arch/sparc/lib/debuglocks.c
arch/sparc/lib/debuglocks.c
+2
-3
arch/sparc/math-emu/math.c
arch/sparc/math-emu/math.c
+2
-0
include/asm-sparc/asmmacro.h
include/asm-sparc/asmmacro.h
+0
-11
include/asm-sparc/smp.h
include/asm-sparc/smp.h
+4
-4
scripts/modpost.c
scripts/modpost.c
+2
-14
No files found.
arch/sparc/defconfig
View file @
57cafcc8
...
...
@@ -10,6 +10,9 @@ CONFIG_GENERIC_ISA_DMA=y
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
CONFIG_CLEAN_COMPILE=y
CONFIG_STANDALONE=y
CONFIG_BROKEN_ON_SMP=y
#
# General setup
...
...
@@ -19,6 +22,16 @@ CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
CONFIG_LOG_BUF_SHIFT=14
# CONFIG_HOTPLUG is not set
# CONFIG_IKCONFIG is not set
# CONFIG_EMBEDDED is not set
CONFIG_KALLSYMS=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
#
# Loadable module support
...
...
@@ -50,9 +63,8 @@ CONFIG_PCI=y
# CONFIG_PCI_LEGACY_PROC is not set
# CONFIG_PCI_NAMES is not set
CONFIG_SUN_OPENPROMFS=m
CONFIG_KCORE_ELF=y
CONFIG_BINFMT_AOUT=y
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_AOUT=y
CONFIG_BINFMT_MISC=m
CONFIG_SUNOS_EMUL=y
...
...
@@ -61,6 +73,11 @@ CONFIG_SUNOS_EMUL=y
#
# CONFIG_PARPORT is not set
#
# Generic Driver Options
#
# CONFIG_DEBUG_DRIVER is not set
#
# Graphics support
#
...
...
@@ -69,7 +86,6 @@ CONFIG_SUNOS_EMUL=y
#
# Console display driver support
#
# CONFIG_VGA_CONSOLE is not set
# CONFIG_MDA_CONSOLE is not set
# CONFIG_PROM_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
...
...
@@ -89,7 +105,9 @@ CONFIG_DUMMY_CONSOLE=y
#
CONFIG_SERIAL_SUNCORE=y
CONFIG_SERIAL_SUNZILOG=y
CONFIG_SERIAL_SUNZILOG_CONSOLE=y
CONFIG_SERIAL_SUNSU=y
CONFIG_SERIAL_SUNSU_CONSOLE=y
# CONFIG_SERIAL_SUNSAB is not set
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
...
...
@@ -111,13 +129,14 @@ CONFIG_RTC=m
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
CONFIG_BLK_DEV_LOOP=m
CONFIG_BLK_DEV_CRYPTOLOOP=m
# CONFIG_BLK_DEV_NBD is not set
#
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set
# CONFIG_BLK_DEV_CARMEL is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=4096
CONFIG_BLK_DEV_INITRD=y
...
...
@@ -130,12 +149,13 @@ CONFIG_BLK_DEV_INITRD=y
#
# ISDN subsystem
#
# CONFIG_ISDN
_BOOL
is not set
# CONFIG_ISDN is not set
#
# SCSI support
# SCSI
device
support
#
CONFIG_SCSI=y
CONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
...
...
@@ -155,6 +175,12 @@ CONFIG_SCSI_REPORT_LUNS=y
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
#
# SCSI Transport Attributes
#
CONFIG_SCSI_SPI_ATTRS=m
# CONFIG_SCSI_FC_ATTRS is not set
#
# SCSI low-level drivers
#
...
...
@@ -164,10 +190,9 @@ CONFIG_SCSI_REPORT_LUNS=y
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC7XXX_OLD is not set
# CONFIG_SCSI_AIC79XX is not set
# CONFIG_SCSI_DPT_I2O is not set
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_AM53C974 is not set
# CONFIG_SCSI_MEGARAID is not set
# CONFIG_SCSI_SATA is not set
# CONFIG_SCSI_BUSLOGIC is not set
# CONFIG_SCSI_CPQFCTS is not set
# CONFIG_SCSI_DMX3191D is not set
...
...
@@ -175,21 +200,22 @@ CONFIG_SCSI_REPORT_LUNS=y
# CONFIG_SCSI_EATA_PIO is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_GDTH is not set
# CONFIG_SCSI_GENERIC_NCR5380 is not set
# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
# CONFIG_SCSI_INITIO is not set
# CONFIG_SCSI_IPS is not set
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_SYM53C8XX_2 is not set
# CONFIG_SCSI_NCR53C8XX is not set
# CONFIG_SCSI_PCI2000 is not set
# CONFIG_SCSI_PCI2220I is not set
# CONFIG_SCSI_QLOGIC_ISP is not set
# CONFIG_SCSI_QLOGIC_FC is not set
# CONFIG_SCSI_QLOGIC_1280 is not set
CONFIG_SCSI_QLOGICPTI=m
CONFIG_SCSI_QLA2XXX=y
# CONFIG_SCSI_QLA21XX is not set
# CONFIG_SCSI_QLA22XX is not set
# CONFIG_SCSI_QLA2300 is not set
# CONFIG_SCSI_QLA2322 is not set
# CONFIG_SCSI_QLA6312 is not set
# CONFIG_SCSI_QLA6322 is not set
# CONFIG_SCSI_DC395x is not set
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_U14_34F is not set
# CONFIG_SCSI_NSP32 is not set
# CONFIG_SCSI_DEBUG is not set
CONFIG_SCSI_SUNESP=y
...
...
@@ -199,6 +225,11 @@ CONFIG_SCSI_SUNESP=y
#
# CONFIG_FC4 is not set
#
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set
#
# Networking support
#
...
...
@@ -210,8 +241,6 @@ CONFIG_NET=y
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
CONFIG_NETLINK_DEV=y
# CONFIG_NETFILTER is not set
# CONFIG_FILTER is not set
CONFIG_UNIX=y
CONFIG_NET_KEY=m
CONFIG_INET=y
...
...
@@ -224,26 +253,36 @@ CONFIG_IP_PNP_DHCP=y
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
# CONFIG_INET_ECN is not set
# CONFIG_SYN_COOKIES is not set
CONFIG_INET_AH=y
CONFIG_INET_ESP=y
CONFIG_
XFRM_USER=m
CONFIG_
INET_IPCOMP=y
CONFIG_IPV6=m
CONFIG_IPV6_PRIVACY=y
CONFIG_INET6_AH=m
CONFIG_INET6_ESP=m
CONFIG_INET6_IPCOMP=m
CONFIG_IPV6_TUNNEL=m
# CONFIG_DECNET is not set
# CONFIG_BRIDGE is not set
# CONFIG_NETFILTER is not set
CONFIG_XFRM=y
CONFIG_XFRM_USER=m
#
# SCTP Configuration (EXPERIMENTAL)
#
CONFIG_IPV6_SCTP__=y
CONFIG_IP_SCTP=m
# CONFIG_SCTP_ADLER32 is not set
# CONFIG_SCTP_DBG_MSG is not set
CONFIG_SCTP_DBG_OBJCNT=y
# CONFIG_SCTP_HMAC_NONE is not set
# CONFIG_SCTP_HMAC_SHA1 is not set
CONFIG_SCTP_HMAC_MD5=y
# CONFIG_ATM is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_LLC is not set
# CONFIG_
DECNET
is not set
# CONFIG_
BRIDGE
is not set
# CONFIG_LLC
2
is not set
# CONFIG_
IPX
is not set
# CONFIG_
ATALK
is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_NET_DIVERT is not set
...
...
@@ -261,28 +300,97 @@ CONFIG_SCTP_DBG_OBJCNT=y
# Network testing
#
CONFIG_NET_PKTGEN=m
CONFIG_NETDEVICES=y
#
#
Network device support
#
ARCnet devices
#
CONFIG_NETDEVICES=y
# CONFIG_ARCNET is not set
CONFIG_DUMMY=m
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
CONFIG_TUN=m
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
CONFIG_SUNLANCE=m
CONFIG_HAPPYMEAL=y
# CONFIG_SUNBMAC is not set
# CONFIG_ETHERTAP is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
CONFIG_MII=m
CONFIG_SUNLANCE=y
CONFIG_HAPPYMEAL=m
CONFIG_SUNBMAC=m
CONFIG_SUNQE=m
# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
#
# Tulip family network device support
#
# CONFIG_NET_TULIP is not set
# CONFIG_HP100 is not set
# CONFIG_NET_PCI is not set
#
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
# CONFIG_E1000 is not set
# CONFIG_MYRI_SBUS is not set
CONFIG_VORTEX=m
# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_R8169 is not set
# CONFIG_SIS190 is not set
# CONFIG_SK98LIN is not set
# CONFIG_TIGON3 is not set
#
# Ethernet (10000 Mbit)
#
# CONFIG_IXGB is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
#
# Wireless LAN (non-hamradio)
#
# CONFIG_NET_RADIO is not set
#
# Token Ring devices
#
# CONFIG_TR is not set
# CONFIG_NET_FC is not set
# CONFIG_RCPCI is not set
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
#
# Wan interfaces
#
# CONFIG_WAN is not set
#
# Amateur Radio support
#
# CONFIG_HAMRADIO is not set
#
# IrDA (infrared) support
#
# CONFIG_IRDA is not set
#
# Bluetooth support
#
# CONFIG_BT is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
#
# Unix98 PTY support
#
...
...
@@ -297,7 +405,7 @@ CONFIG_INPUT=y
#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=
m
CONFIG_INPUT_MOUSEDEV=
y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
...
...
@@ -315,6 +423,7 @@ CONFIG_SERIO=m
# CONFIG_SERIO_I8042 is not set
CONFIG_SERIO_SERPORT=m
# CONFIG_SERIO_CT82C710 is not set
# CONFIG_SERIO_PCIPS2 is not set
#
# Input Device Drivers
...
...
@@ -322,11 +431,13 @@ CONFIG_SERIO_SERPORT=m
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=m
CONFIG_KEYBOARD_SUNKBD=m
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=m
CONFIG_MOUSE_SERIAL=m
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set
...
...
@@ -334,68 +445,93 @@ CONFIG_MOUSE_SERIAL=m
#
# File systems
#
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT2_FS_SECURITY=y
# CONFIG_EXT3_FS is not set
# CONFIG_JBD is not set
CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
CONFIG_XFS_FS=m
CONFIG_XFS_RT=y
CONFIG_XFS_QUOTA=y
CONFIG_XFS_SECURITY=y
CONFIG_XFS_POSIX_ACL=y
# CONFIG_MINIX_FS is not set
CONFIG_ROMFS_FS=m
# CONFIG_QUOTA is not set
CONFIG_QUOTACTL=y
CONFIG_AUTOFS_FS=m
CONFIG_AUTOFS4_FS=m
# CONFIG_REISERFS_FS is not set
#
# CD-ROM/DVD Filesystems
#
CONFIG_ISO9660_FS=m
# CONFIG_JOLIET is not set
# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
# DOS/FAT/NT Filesystems
#
# CONFIG_FAT_FS is not set
# CONFIG_NTFS_FS is not set
#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
# CONFIG_DEVFS_FS is not set
CONFIG_DEVPTS_FS_XATTR=y
# CONFIG_DEVPTS_FS_SECURITY is not set
# CONFIG_TMPFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
CONFIG_BEFS_FS=m
# CONFIG_BEFS_DEBUG is not set
# CONFIG_BFS_FS is not set
# CONFIG_EXT3_FS is not set
# CONFIG_JBD is not set
# CONFIG_FAT_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_TMPFS is not set
CONFIG_RAMFS=y
CONFIG_ISO9660_FS=m
# CONFIG_JOLIET is not set
# CONFIG_ZISOFS is not set
# CONFIG_JFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_HPFS_FS is not set
CONFIG_PROC_FS=y
# CONFIG_DEVFS_FS is not set
CONFIG_DEVPTS_FS=y
# CONFIG_QNX4FS_FS is not set
CONFIG_ROMFS_FS=m
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
# CONFIG_SYSV_FS is not set
# CONFIG_UDF_FS is not set
# CONFIG_UFS_FS is not set
CONFIG_XFS_FS=m
CONFIG_XFS_RT=y
CONFIG_XFS_QUOTA=y
CONFIG_XFS_POSIX_ACL=y
#
# Network File Systems
#
# CONFIG_CODA_FS is not set
# CONFIG_INTERMEZZO_FS is not set
CONFIG_NFS_FS=y
# CONFIG_NFS_V3 is not set
# CONFIG_NFS_V4 is not set
CONFIG_ROOT_NFS=y
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
CONFIG_
SUNRPC
=y
CONFIG_
ROOT_NFS
=y
CONFIG_LOCKD=y
# CONFIG_EXPORTFS is not set
CONFIG_CIFS=m
CONFIG_SUNRPC=y
CONFIG_SUNRPC_GSS=m
CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_SMB_FS is not set
CONFIG_CIFS=m
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_INTERMEZZO_FS is not set
CONFIG_AFS_FS=m
CONFIG_RXRPC=m
CONFIG_FS_MBCACHE=y
CONFIG_FS_POSIX_ACL=y
#
# Partition Types
...
...
@@ -403,11 +539,11 @@ CONFIG_FS_POSIX_ACL=y
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
CONFIG_SUN_PARTITION=y
CONFIG_NLS=y
#
# Native Language Support
#
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
# CONFIG_NLS_CODEPAGE_437 is not set
# CONFIG_NLS_CODEPAGE_737 is not set
...
...
@@ -448,7 +584,7 @@ CONFIG_NLS_DEFAULT="iso8859-1"
# CONFIG_NLS_UTF8 is not set
#
# Sound
card support
# Sound
#
# CONFIG_SOUND is not set
...
...
@@ -456,26 +592,28 @@ CONFIG_NLS_DEFAULT="iso8859-1"
# USB support
#
# CONFIG_USB is not set
# CONFIG_USB_GADGET is not set
#
#
Bluetooth s
upport
#
USB Gadget S
upport
#
# CONFIG_
B
T is not set
# CONFIG_
USB_GADGE
T is not set
#
# Watchdog
# Watchdog
Cards
#
# CONFIG_
SOFT_
WATCHDOG is not set
# CONFIG_WATCHDOG is not set
#
# Kernel hacking
#
CONFIG_DEBUG_SLAB=y
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_SLAB is not set
CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_SPINLOCK=y
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_HIGHMEM is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_BUGVERBOSE is not set
#
# Security options
...
...
@@ -492,13 +630,22 @@ CONFIG_CRYPTO_MD4=y
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_AES=m
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
CONFIG_CRYPTO_ARC4=m
CONFIG_CRYPTO_DEFLATE=y
CONFIG_CRYPTO_MICHAEL_MIC=m
# CONFIG_CRYPTO_TEST is not set
#
# Library routines
#
CONFIG_CRC32=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
arch/sparc/kernel/entry.S
View file @
57cafcc8
...
...
@@ -288,10 +288,9 @@ bad_trap_handler:
wr
%
l0
,
PSR_ET
,
%
psr
WRITE_PAUSE
mov
%
l7
,
%
o0
!
trap
number
mov
%
l0
,
%
o1
!
psr
add
%
sp
,
STACKFRAME_SZ
,
%
o0
!
pt_regs
call
do_hw_interrupt
mov
%
l
1
,
%
o2
!
pc
mov
%
l
7
,
%
o1
!
trap
number
RESTORE_ALL
...
...
@@ -350,21 +349,15 @@ smp4m_ticker:
*
for
cross
calls
.
That
has
a
separate
entry
point
below
.
*/
maybe_smp4m_msg
:
GET_PROCESSOR
_M
ID
(
o3
)
GET_PROCESSOR
4M_
ID
(
o3
)
set
sun4m_interrupts
,
%
l5
ld
[%
l5
],
%
o5
sethi
%
hi
(
0x
60000000
),
%
o4
sethi
%
hi
(
0x
40000000
),
%
o2
sll
%
o3
,
12
,
%
o3
ld
[%
o5
+
%
o3
],
%
o1
andcc
%
o1
,
%
o
4
,
%
g0
andcc
%
o1
,
%
o
2
,
%
g0
be
,
a
smp4m_ticker
cmp
%
l7
,
14
sethi
%
hi
(
0x40000000
),
%
o2
add
%
o5
,
%
o3
,
%
o5
andcc
%
o1
,
%
o2
,
%
g0
be
,
a
1
f
sethi
%
hi
(
0x20000000
),
%
o2
1
:
st
%
o2
,
[%
o5
+
0x4
]
WRITE_PAUSE
ld
[%
o5
],
%
g0
...
...
@@ -374,15 +367,9 @@ maybe_smp4m_msg:
WRITE_PAUSE
wr
%
l4
,
PSR_ET
,
%
psr
WRITE_PAUSE
srl
%
o2
,
(
16
+
14
),
%
o2
tst
%
o2
bne
2
f
nop
call
smp_reschedule_irq
add
%
o7
,
8
,
%
o7
2
:
call
smp_stop_cpu_irq
nop
RESTORE_ALL
.
align
4
...
...
@@ -390,7 +377,7 @@ maybe_smp4m_msg:
linux_trap_ipi15_sun4m
:
SAVE_ALL
sethi
%
hi
(
0x80000000
),
%
o2
GET_PROCESSOR
_M
ID
(
o0
)
GET_PROCESSOR
4M_
ID
(
o0
)
set
sun4m_interrupts
,
%
l5
ld
[%
l5
],
%
o5
sll
%
o0
,
12
,
%
o0
...
...
arch/sparc/kernel/head.S
View file @
57cafcc8
...
...
@@ -746,9 +746,6 @@ go_to_highmem:
jmpl
%
g1
,
%
g0
nop
/
*
This
is
to
align
init_thread_union
properly
,
be
careful
.
-
DaveM
*/
.
align
8192
/*
The
code
above
should
be
at
beginning
and
we
have
to
take
care
about
*
short
jumps
,
as
branching
to
.
text
.
init
section
from
.
text
is
usually
*
impossible
*/
...
...
arch/sparc/kernel/init_task.c
View file @
57cafcc8
...
...
@@ -21,5 +21,7 @@ EXPORT_SYMBOL(init_task);
* If this is not aligned on a 8k boundry, then you should change code
* in etrap.S which assumes it.
*/
__asm__
(
".section
\"
.text
\"
,#alloc
\n
"
);
union
thread_union
init_thread_union
=
{
INIT_THREAD_INFO
(
init_task
)
};
union
thread_union
init_thread_union
__attribute__
((
section
(
".text"
)))
__attribute__
((
aligned
(
THREAD_SIZE
)))
=
{
INIT_THREAD_INFO
(
init_task
)
};
arch/sparc/kernel/module.c
View file @
57cafcc8
...
...
@@ -36,7 +36,9 @@ void module_free(struct module *mod, void *module_region)
table entries. */
}
/* Make generic code ignore STT_REGISTER dummy undefined symbols. */
/* Make generic code ignore STT_REGISTER dummy undefined symbols,
* and replace references to .func with func as in ppc64's dedotify.
*/
int
module_frob_arch_sections
(
Elf_Ehdr
*
hdr
,
Elf_Shdr
*
sechdrs
,
char
*
secstrings
,
...
...
@@ -44,7 +46,7 @@ int module_frob_arch_sections(Elf_Ehdr *hdr,
{
unsigned
int
symidx
;
Elf32_Sym
*
sym
;
c
onst
c
har
*
strtab
;
char
*
strtab
;
int
i
;
for
(
symidx
=
0
;
sechdrs
[
symidx
].
sh_type
!=
SHT_SYMTAB
;
symidx
++
)
{
...
...
@@ -57,9 +59,15 @@ int module_frob_arch_sections(Elf_Ehdr *hdr,
strtab
=
(
char
*
)
sechdrs
[
sechdrs
[
symidx
].
sh_link
].
sh_addr
;
for
(
i
=
1
;
i
<
sechdrs
[
symidx
].
sh_size
/
sizeof
(
Elf_Sym
);
i
++
)
{
if
(
sym
[
i
].
st_shndx
==
SHN_UNDEF
&&
ELF32_ST_TYPE
(
sym
[
i
].
st_info
)
==
STT_REGISTER
)
sym
[
i
].
st_shndx
=
SHN_ABS
;
if
(
sym
[
i
].
st_shndx
==
SHN_UNDEF
)
{
if
(
ELF32_ST_TYPE
(
sym
[
i
].
st_info
)
==
STT_REGISTER
)
sym
[
i
].
st_shndx
=
SHN_ABS
;
else
{
char
*
name
=
strtab
+
sym
[
i
].
st_name
;
if
(
name
[
0
]
==
'.'
)
memmove
(
name
,
name
+
1
,
strlen
(
name
));
}
}
}
return
0
;
}
...
...
arch/sparc/kernel/signal.c
View file @
57cafcc8
...
...
@@ -1128,9 +1128,9 @@ do_sys_sigstack(struct sigstack __user *ssptr, struct sigstack __user *ossptr,
/* Now see if we want to update the new state. */
if
(
ssptr
)
{
void
*
ss_sp
;
char
*
ss_sp
;
if
(
get_user
(
(
long
)
ss_sp
,
&
ssptr
->
the_stack
))
if
(
get_user
(
ss_sp
,
&
ssptr
->
the_stack
))
goto
out
;
/* If the current stack was set with sigaltstack, don't
swap stacks while we are on it. */
...
...
arch/sparc/kernel/sparc_ksyms.c
View file @
57cafcc8
...
...
@@ -92,31 +92,21 @@ extern void ___set_bit(void);
extern
void
___clear_bit
(
void
);
extern
void
___change_bit
(
void
);
/* One thing to note is that the way the symbols of the mul/div
* support routines are named is a mess, they all start with
* a '.' which makes it a bitch to export, here is the trick:
/* Alias functions whose names begin with "." and export the aliases.
* The module references will be fixed up by module_frob_arch_sections.
*/
#define DOT_ALIAS2(__ret, __x, __arg1, __arg2) \
extern __ret __x(__arg1, __arg2) \
__attribute__((weak, alias("." # __x)));
/* If the interface of any of these special functions does ever
* change in an incompatible way, you must modify this.
*/
#define DOT_PROTO(sym) extern int __dot_##sym(int, int)
#ifdef __GENKSYMS__
#define EXPORT_SYMBOL_DOT(sym) \
DOT_PROTO(sym); \
EXPORT_SYMBOL(__dot_ ## sym)
#else
/* !__GENKSYMS__ */
#define EXPORT_SYMBOL_DOT(sym) \
DOT_PROTO(sym) __asm__("." # sym); \
__CRC_SYMBOL(__dot_##sym, "") \
static const char __kstrtab___dot_##sym[] \
__attribute__((section("__ksymtab_strings"))) \
= "." #sym; \
static const struct kernel_symbol __ksymtab___dot_##sym \
__attribute__((section("__ksymtab"))) \
= { (unsigned long)&__dot_##sym, __kstrtab___dot_##sym }
#endif
DOT_ALIAS2
(
int
,
div
,
int
,
int
)
DOT_ALIAS2
(
int
,
mul
,
int
,
int
)
DOT_ALIAS2
(
int
,
rem
,
int
,
int
)
DOT_ALIAS2
(
unsigned
,
udiv
,
unsigned
,
unsigned
)
DOT_ALIAS2
(
unsigned
,
umul
,
unsigned
,
unsigned
)
DOT_ALIAS2
(
unsigned
,
urem
,
unsigned
,
unsigned
)
#undef DOT_ALIAS2
/* used by various drivers */
EXPORT_SYMBOL
(
sparc_cpu_model
);
...
...
@@ -180,21 +170,20 @@ EXPORT_SYMBOL(io_remap_page_range);
/* EXPORT_SYMBOL(iounit_map_dma_init); */
/* EXPORT_SYMBOL(iounit_map_dma_page); */
/* Btfixup stuff cannot have versions, it would be complicated too much */
#ifndef CONFIG_SMP
EXPORT_SYMBOL
_NOVERS
(
BTFIXUP_CALL
(
___xchg32
));
EXPORT_SYMBOL
(
BTFIXUP_CALL
(
___xchg32
));
#else
EXPORT_SYMBOL
_NOVERS
(
BTFIXUP_CALL
(
_
_smp_processor_id
));
EXPORT_SYMBOL
(
BTFIXUP_CALL
(
__hard
_smp_processor_id
));
#endif
EXPORT_SYMBOL
_NOVERS
(
BTFIXUP_CALL
(
enable_irq
));
EXPORT_SYMBOL
_NOVERS
(
BTFIXUP_CALL
(
disable_irq
));
EXPORT_SYMBOL
_NOVERS
(
BTFIXUP_CALL
(
__irq_itoa
));
EXPORT_SYMBOL
_NOVERS
(
BTFIXUP_CALL
(
mmu_unlockarea
));
EXPORT_SYMBOL
_NOVERS
(
BTFIXUP_CALL
(
mmu_lockarea
));
EXPORT_SYMBOL
_NOVERS
(
BTFIXUP_CALL
(
mmu_get_scsi_sgl
));
EXPORT_SYMBOL
_NOVERS
(
BTFIXUP_CALL
(
mmu_get_scsi_one
));
EXPORT_SYMBOL
_NOVERS
(
BTFIXUP_CALL
(
mmu_release_scsi_sgl
));
EXPORT_SYMBOL
_NOVERS
(
BTFIXUP_CALL
(
mmu_release_scsi_one
));
EXPORT_SYMBOL
(
BTFIXUP_CALL
(
enable_irq
));
EXPORT_SYMBOL
(
BTFIXUP_CALL
(
disable_irq
));
EXPORT_SYMBOL
(
BTFIXUP_CALL
(
__irq_itoa
));
EXPORT_SYMBOL
(
BTFIXUP_CALL
(
mmu_unlockarea
));
EXPORT_SYMBOL
(
BTFIXUP_CALL
(
mmu_lockarea
));
EXPORT_SYMBOL
(
BTFIXUP_CALL
(
mmu_get_scsi_sgl
));
EXPORT_SYMBOL
(
BTFIXUP_CALL
(
mmu_get_scsi_one
));
EXPORT_SYMBOL
(
BTFIXUP_CALL
(
mmu_release_scsi_sgl
));
EXPORT_SYMBOL
(
BTFIXUP_CALL
(
mmu_release_scsi_one
));
#ifdef CONFIG_SBUS
EXPORT_SYMBOL
(
sbus_root
);
...
...
@@ -271,15 +260,15 @@ EXPORT_SYMBOL(__prom_getsibling);
/* sparc library symbols */
EXPORT_SYMBOL
(
bcopy
);
EXPORT_SYMBOL
(
memchr
);
EXPORT_SYMBOL
_NOVERS
(
memscan
);
EXPORT_SYMBOL
_NOVERS
(
strlen
);
EXPORT_SYMBOL
(
memscan
);
EXPORT_SYMBOL
(
strlen
);
EXPORT_SYMBOL
(
strnlen
);
EXPORT_SYMBOL
(
strcpy
);
EXPORT_SYMBOL
(
strncpy
);
EXPORT_SYMBOL
(
strcat
);
EXPORT_SYMBOL
(
strncat
);
EXPORT_SYMBOL
(
strcmp
);
EXPORT_SYMBOL
_NOVERS
(
strncmp
);
EXPORT_SYMBOL
(
strncmp
);
EXPORT_SYMBOL
(
strchr
);
EXPORT_SYMBOL
(
strrchr
);
EXPORT_SYMBOL
(
strpbrk
);
...
...
@@ -309,28 +298,24 @@ EXPORT_SYMBOL(csum_partial);
/* Cache flushing. */
EXPORT_SYMBOL
(
sparc_flush_page_to_ram
);
/* No version information on this, heavily used in inline asm,
* and will always be 'void __ret_efault(void)'.
*/
EXPORT_SYMBOL_NOVERS
(
__ret_efault
);
/* No version information on these, as gcc produces such symbols. */
EXPORT_SYMBOL_NOVERS
(
memcmp
);
EXPORT_SYMBOL_NOVERS
(
memcpy
);
EXPORT_SYMBOL_NOVERS
(
memset
);
EXPORT_SYMBOL_NOVERS
(
memmove
);
EXPORT_SYMBOL_NOVERS
(
__ashrdi3
);
EXPORT_SYMBOL_NOVERS
(
__ashldi3
);
EXPORT_SYMBOL_NOVERS
(
__lshrdi3
);
EXPORT_SYMBOL_NOVERS
(
__muldi3
);
EXPORT_SYMBOL_NOVERS
(
__divdi3
);
EXPORT_SYMBOL_DOT
(
rem
);
EXPORT_SYMBOL_DOT
(
urem
);
EXPORT_SYMBOL_DOT
(
mul
);
EXPORT_SYMBOL_DOT
(
umul
);
EXPORT_SYMBOL_DOT
(
div
);
EXPORT_SYMBOL_DOT
(
udiv
);
EXPORT_SYMBOL
(
__ret_efault
);
EXPORT_SYMBOL
(
memcmp
);
EXPORT_SYMBOL
(
memcpy
);
EXPORT_SYMBOL
(
memset
);
EXPORT_SYMBOL
(
memmove
);
EXPORT_SYMBOL
(
__ashrdi3
);
EXPORT_SYMBOL
(
__ashldi3
);
EXPORT_SYMBOL
(
__lshrdi3
);
EXPORT_SYMBOL
(
__muldi3
);
EXPORT_SYMBOL
(
__divdi3
);
EXPORT_SYMBOL
(
rem
);
EXPORT_SYMBOL
(
urem
);
EXPORT_SYMBOL
(
mul
);
EXPORT_SYMBOL
(
umul
);
EXPORT_SYMBOL
(
div
);
EXPORT_SYMBOL
(
udiv
);
#ifdef CONFIG_DEBUG_BUGVERBOSE
EXPORT_SYMBOL
(
do_BUG
);
...
...
arch/sparc/kernel/sys_sunos.c
View file @
57cafcc8
...
...
@@ -343,7 +343,7 @@ static int sunos_filldir(void * __buf, const char * name, int namlen,
put_user
(
reclen
,
&
dirent
->
d_reclen
);
copy_to_user
(
dirent
->
d_name
,
name
,
namlen
);
put_user
(
0
,
dirent
->
d_name
+
namlen
);
((
char
*
)
dirent
)
+=
reclen
;
dirent
=
(
void
*
)
dirent
+
reclen
;
buf
->
curr
=
dirent
;
buf
->
count
-=
reclen
;
return
0
;
...
...
@@ -422,7 +422,7 @@ static int sunos_filldirentry(void * __buf, const char * name, int namlen,
put_user
(
reclen
,
&
dirent
->
d_reclen
);
copy_to_user
(
dirent
->
d_name
,
name
,
namlen
);
put_user
(
0
,
dirent
->
d_name
+
namlen
);
((
char
*
)
dirent
)
+=
reclen
;
dirent
=
(
void
*
)
dirent
+
reclen
;
buf
->
curr
=
dirent
;
buf
->
count
-=
reclen
;
return
0
;
...
...
arch/sparc/kernel/traps.c
View file @
57cafcc8
...
...
@@ -131,23 +131,23 @@ void die_if_kernel(char *str, struct pt_regs *regs)
do_exit
(
SIGSEGV
);
}
void
do_hw_interrupt
(
unsigned
long
type
,
unsigned
long
psr
,
unsigned
long
pc
)
void
do_hw_interrupt
(
struct
pt_regs
*
regs
,
unsigned
long
type
)
{
siginfo_t
info
;
if
(
type
<
0x80
)
{
/* Sun OS's puke from bad traps, Linux survives! */
printk
(
"Unimplemented Sparc TRAP, type = %02lx
\n
"
,
type
);
die_if_kernel
(
"Whee... Hello Mr. Penguin"
,
current
->
thread
.
k
regs
);
die_if_kernel
(
"Whee... Hello Mr. Penguin"
,
regs
);
}
if
(
psr
&
PSR_PS
)
die_if_kernel
(
"Kernel bad trap"
,
current
->
thread
.
k
regs
);
if
(
regs
->
psr
&
PSR_PS
)
die_if_kernel
(
"Kernel bad trap"
,
regs
);
info
.
si_signo
=
SIGILL
;
info
.
si_errno
=
0
;
info
.
si_code
=
ILL_ILLTRP
;
info
.
si_addr
=
(
void
*
)
pc
;
info
.
si_addr
=
(
void
*
)
regs
->
pc
;
info
.
si_trapno
=
type
-
0x80
;
force_sig_info
(
SIGILL
,
&
info
,
current
);
}
...
...
arch/sparc/lib/Makefile
View file @
57cafcc8
...
...
@@ -7,5 +7,7 @@ EXTRA_AFLAGS := -ansi -DST_DIV0=0x02
lib-y
:=
mul.o rem.o sdiv.o udiv.o umul.o urem.o ashrdi3.o memcpy.o memset.o
\
strlen.o checksum.o blockops.o memscan.o memcmp.o strncmp.o
\
strncpy_from_user.o divdi3.o udivdi3.o strlen_user.o
\
copy_user.o locks.o atomic.o atomic32.o bitops.o
debuglocks.o
\
copy_user.o locks.o atomic.o atomic32.o bitops.o
\
lshrdi3.o ashldi3.o rwsem.o muldi3.o bitext.o
lib-$(CONFIG_DEBUG_SPINLOCK)
+=
debuglocks.o
arch/sparc/lib/debuglocks.c
View file @
57cafcc8
...
...
@@ -12,8 +12,7 @@
#include <asm/psr.h>
#include <asm/system.h>
/* To enable this code, just define SPIN_LOCK_DEBUG in asm/spinlock.h */
#ifdef SPIN_LOCK_DEBUG
#ifdef CONFIG_SMP
/* Some notes on how these debugging routines work. When a lock is acquired
* an extra debugging member lock->owner_pc is set to the caller of the lock
...
...
@@ -200,4 +199,4 @@ void _do_write_unlock(rwlock_t *rw)
rw
->
lock
=
0
;
}
#endif
/* S
PIN_LOCK_DEBUG
*/
#endif
/* S
MP
*/
arch/sparc/math-emu/math.c
View file @
57cafcc8
...
...
@@ -327,6 +327,7 @@ static int do_one_mathemu(u32 insn, unsigned long *pfsr, unsigned long *fregs)
#ifdef DEBUG_MATHEMU
printk
(
"unknown FPop1: %03lx
\n
"
,(
insn
>>
5
)
&
0x1ff
);
#endif
break
;
}
}
else
if
((
insn
&
0xc1f80000
)
==
0x81a80000
)
/* FPOP2 */
{
switch
((
insn
>>
5
)
&
0x1ff
)
{
...
...
@@ -340,6 +341,7 @@ static int do_one_mathemu(u32 insn, unsigned long *pfsr, unsigned long *fregs)
#ifdef DEBUG_MATHEMU
printk
(
"unknown FPop2: %03lx
\n
"
,(
insn
>>
5
)
&
0x1ff
);
#endif
break
;
}
}
...
...
include/asm-sparc/asmmacro.h
View file @
57cafcc8
...
...
@@ -18,17 +18,6 @@
#define GET_PROCESSOR4D_ID(reg) \
lda [%g0] ASI_M_VIKING_TMP1, %reg;
/* Blackbox */
#define GET_PROCESSOR_ID(reg) \
sethi %hi(___b_smp_processor_id), %reg; \
sethi %hi(boot_cpu_id), %reg; \
ldub [%reg + %lo(boot_cpu_id)], %reg;
#define GET_PROCESSOR_MID(reg) \
rd %tbr, %reg; \
srl %reg, 12, %reg; \
and %reg, 3, %reg;
/* All trap entry points _must_ begin with this macro or else you
* lose. It makes sure the kernel has a proper window so that
* c-code can be called.
...
...
include/asm-sparc/smp.h
View file @
57cafcc8
...
...
@@ -53,8 +53,8 @@ void smp_info(struct seq_file *);
BTFIXUPDEF_CALL
(
void
,
smp_cross_call
,
smpfunc_t
,
unsigned
long
,
unsigned
long
,
unsigned
long
,
unsigned
long
,
unsigned
long
)
BTFIXUPDEF_CALL
(
void
,
smp_message_pass
,
int
,
int
,
unsigned
long
,
int
)
BTFIXUPDEF_CALL
(
int
,
__smp_processor_id
,
void
)
BTFIXUPDEF_BLACKBOX
(
smp_processor_id
)
BTFIXUPDEF_CALL
(
int
,
__
hard_
smp_processor_id
,
void
)
BTFIXUPDEF_BLACKBOX
(
hard_
smp_processor_id
)
BTFIXUPDEF_BLACKBOX
(
load_current
)
#define smp_cross_call(func,arg1,arg2,arg3,arg4,arg5) BTFIXUP_CALL(smp_cross_call)(func,arg1,arg2,arg3,arg4,arg5)
...
...
@@ -129,7 +129,7 @@ extern __inline__ int hard_smp_processor_id(void)
"=&r" (cpuid));
See btfixup.h and btfixupprep.c to understand how a blackbox works.
*/
__asm__
__volatile__
(
"sethi %%hi(___b_smp_processor_id), %0
\n\t
"
__asm__
__volatile__
(
"sethi %%hi(___b_
hard_
smp_processor_id), %0
\n\t
"
"sethi %%hi(boot_cpu_id), %0
\n\t
"
"ldub [%0 + %%lo(boot_cpu_id)], %0
\n\t
"
:
"=&r"
(
cpuid
));
...
...
@@ -141,7 +141,7 @@ extern __inline__ int hard_smp_processor_id(void)
int
cpuid
;
__asm__
__volatile__
(
"mov %%o7, %%g1
\n\t
"
"call ___f___smp_processor_id
\n\t
"
"call ___f___
hard_
smp_processor_id
\n\t
"
" nop
\n\t
"
"mov %%g2, %0
\n\t
"
:
"=r"
(
cpuid
)
:
:
"g1"
,
"g2"
);
return
cpuid
;
...
...
scripts/modpost.c
View file @
57cafcc8
...
...
@@ -141,26 +141,14 @@ new_symbol(const char *name, struct module *module, unsigned int *crc)
symbolhash
[
hash
]
=
new
;
}
#define DOTSYM_PFX "__dot_"
struct
symbol
*
find_symbol
(
const
char
*
name
)
{
struct
symbol
*
s
;
char
dotname
[
64
+
sizeof
(
DOTSYM_PFX
)];
/* .foo matches foo. PPC64 needs this. */
if
(
name
[
0
]
==
'.'
)
{
/*
For our purposes,
.foo matches foo. PPC64 needs this. */
if
(
name
[
0
]
==
'.'
)
name
++
;
strcpy
(
dotname
,
DOTSYM_PFX
);
strncat
(
dotname
,
name
,
sizeof
(
dotname
)
-
sizeof
(
DOTSYM_PFX
)
-
1
);
dotname
[
sizeof
(
dotname
)
-
1
]
=
0
;
/* Sparc32 wants .foo to match __dot_foo, try this first. */
for
(
s
=
symbolhash
[
tdb_hash
(
dotname
)
%
SYMBOL_HASH_SIZE
];
s
;
s
=
s
->
next
)
{
if
(
strcmp
(
s
->
name
,
dotname
)
==
0
)
return
s
;
}
}
for
(
s
=
symbolhash
[
tdb_hash
(
name
)
%
SYMBOL_HASH_SIZE
];
s
;
s
=
s
->
next
)
{
if
(
strcmp
(
s
->
name
,
name
)
==
0
)
...
...
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