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
225b563b
Commit
225b563b
authored
Sep 13, 2002
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge nuts.ninka.net:/home/davem/src/BK/zaitcev-2.5
into nuts.ninka.net:/home/davem/src/BK/sparc-2.5
parents
cc8a6820
23340580
Changes
26
Hide whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
333 additions
and
462 deletions
+333
-462
arch/sparc/config.in
arch/sparc/config.in
+5
-0
arch/sparc/defconfig
arch/sparc/defconfig
+127
-178
arch/sparc/kernel/Makefile
arch/sparc/kernel/Makefile
+1
-1
arch/sparc/kernel/ebus.c
arch/sparc/kernel/ebus.c
+0
-4
arch/sparc/kernel/entry.S
arch/sparc/kernel/entry.S
+2
-1
arch/sparc/kernel/pcic.c
arch/sparc/kernel/pcic.c
+82
-73
arch/sparc/kernel/process.c
arch/sparc/kernel/process.c
+2
-4
arch/sparc/kernel/setup.c
arch/sparc/kernel/setup.c
+44
-84
arch/sparc/kernel/sparc-stub.c
arch/sparc/kernel/sparc-stub.c
+3
-11
arch/sparc/kernel/tadpole.c
arch/sparc/kernel/tadpole.c
+8
-5
arch/sparc/kernel/tick14.c
arch/sparc/kernel/tick14.c
+5
-7
arch/sparc/kernel/unaligned.c
arch/sparc/kernel/unaligned.c
+9
-0
arch/sparc/mm/srmmu.c
arch/sparc/mm/srmmu.c
+0
-8
arch/sparc/mm/sun4c.c
arch/sparc/mm/sun4c.c
+0
-7
arch/sparc/prom/misc.c
arch/sparc/prom/misc.c
+4
-6
arch/sparc64/kernel/power.c
arch/sparc64/kernel/power.c
+1
-2
arch/sparc64/kernel/process.c
arch/sparc64/kernel/process.c
+0
-1
arch/sparc64/kernel/setup.c
arch/sparc64/kernel/setup.c
+1
-29
arch/sparc64/mm/init.c
arch/sparc64/mm/init.c
+0
-8
arch/sparc64/prom/misc.c
arch/sparc64/prom/misc.c
+1
-1
drivers/serial/sunsu.c
drivers/serial/sunsu.c
+3
-0
drivers/serial/sunzilog.c
drivers/serial/sunzilog.c
+18
-28
include/asm-sparc/hardirq.h
include/asm-sparc/hardirq.h
+1
-1
include/asm-sparc/irq.h
include/asm-sparc/irq.h
+2
-0
include/asm-sparc/kmap_types.h
include/asm-sparc/kmap_types.h
+2
-0
include/asm-sparc/system.h
include/asm-sparc/system.h
+12
-3
No files found.
arch/sparc/config.in
View file @
225b563b
...
...
@@ -59,6 +59,9 @@ endmenu
mainmenu_option next_comment
comment 'Console drivers'
bool 'PROM console' CONFIG_PROM_CONSOLE
if [ "$CONFIG_PROM_CONSOLE" != "y" ]; then
define_bool CONFIG_DUMMY_CONSOLE y
fi
source drivers/video/Config.in
endmenu
...
...
@@ -214,6 +217,8 @@ if [ "$CONFIG_UNIX98_PTYS" = "y" ]; then
fi
endmenu
source drivers/input/Config.in
source fs/Config.in
if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
...
...
arch/sparc/defconfig
View file @
225b563b
...
...
@@ -3,6 +3,12 @@
#
CONFIG_UID16=y
CONFIG_HIGHMEM=y
CONFIG_GENERIC_ISA_DMA=y
#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
#
# General setup
...
...
@@ -12,11 +18,6 @@ CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
#
# Loadable module support
#
...
...
@@ -29,6 +30,7 @@ CONFIG_KMOD=y
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_SMP is not set
CONFIG_SPARC32=y
# CONFIG_ISA is not set
...
...
@@ -37,20 +39,15 @@ CONFIG_SPARC32=y
# CONFIG_PCMCIA is not set
CONFIG_SBUS=y
CONFIG_SBUSCHAR=y
CONFIG_BUSMOUSE=y
CONFIG_SUN_MOUSE=y
CONFIG_SERIAL=y
CONFIG_SUN_SERIAL=y
CONFIG_SERIAL_CONSOLE=y
CONFIG_SUN_KEYBOARD=y
CONFIG_SUN_CONSOLE=y
CONFIG_SUN_AUXIO=y
CONFIG_SUN_IO=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
CONFIG_SUN_PM=y
# CONFIG_SUN4 is not set
# CONFIG_PCI is not set
CONFIG_PCI=y
# CONFIG_PCI_NAMES is not set
CONFIG_SUN_OPENPROMFS=m
CONFIG_KCORE_ELF=y
CONFIG_BINFMT_AOUT=y
...
...
@@ -67,35 +64,43 @@ CONFIG_SUNOS_EMUL=y
#
# Console drivers
#
CONFIG_PROM_CONSOLE=y
# CONFIG_PROM_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
#
# Frame-buffer support
#
CONFIG_FB=y
CONFIG_DUMMY_CONSOLE=y
# CONFIG_FB_CYBER2000 is not set
CONFIG_FB_SBUS=y
CONFIG_FB_CGSIX=y
CONFIG_FB_BWTWO=y
CONFIG_FB_CGTHREE=y
CONFIG_FB_TCX=y
CONFIG_FB_CGFOURTEEN=y
# CONFIG_FB_P9100 is not set
CONFIG_FB_LEO=y
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FBCON_ADVANCED is not set
CONFIG_FBCON_MFB=y
CONFIG_FBCON_CFB8=y
CONFIG_FBCON_FONTWIDTH8_ONLY=y
CONFIG_FONT_SUN8x16=y
# CONFIG_FBCON_FONTS is not set
# CONFIG_FB is not set
#
# Memory Technology Devices (MTD)
#
# CONFIG_MTD is not set
#
# Serial drivers
#
# CONFIG_SERIAL_8250 is not set
# CONFIG_SERIAL_8250_CONSOLE is not set
# CONFIG_SERIAL_8250_CS is not set
# CONFIG_SERIAL_8250_EXTENDED is not set
# CONFIG_SERIAL_8250_MANY_PORTS is not set
# CONFIG_SERIAL_8250_SHARE_IRQ is not set
# CONFIG_SERIAL_8250_DETECT_IRQ is not set
# CONFIG_SERIAL_8250_MULTIPORT is not set
# CONFIG_SERIAL_8250_RSA is not set
#
# Non-8250 serial port support
#
CONFIG_SERIAL_SUNCORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_SERIAL_SUNZILOG=y
CONFIG_SERIAL_SUNSU=y
# CONFIG_SERIAL_SUNSAB is not set
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
#
# Misc Linux/SPARC drivers
#
...
...
@@ -103,9 +108,11 @@ CONFIG_SUN_OPENPROMIO=m
CONFIG_SUN_MOSTEK_RTC=y
# CONFIG_SUN_BPP is not set
# CONFIG_SUN_VIDEOPIX is not set
CONFIG_SUN_AURORA=m
# CONFIG_SUN_AURORA is not set
# CONFIG_TADPOLE_TS102_UCTRL is not set
# CONFIG_SUN_JSFLASH is not set
CONFIG_APM_RTC_IS_GMT=y
# CONFIG_RTC is not set
#
# Linux/SPARC audio subsystem (EXPERIMENTAL)
...
...
@@ -119,9 +126,9 @@ CONFIG_SUN_AURORA=m
#
# Block devices
#
CONFIG_BLK_DEV_FD=y
# CONFIG_BLK_DEV_FD is not set
CONFIG_BLK_DEV_LOOP=m
CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_NBD is not set
#
# Multi-device support (RAID and LVM)
...
...
@@ -138,6 +145,31 @@ CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=4096
CONFIG_BLK_DEV_INITRD=y
#
# ATA/ATAPI/MFM/RLL support
#
# CONFIG_IDE is not set
# CONFIG_BLK_DEV_HD is not set
#
# ISDN subsystem
#
# CONFIG_ISDN_BOOL is not set
#
# SCSI support
#
# CONFIG_SCSI is not set
#
# Fibre Channel support
#
# CONFIG_FC4 is not set
# CONFIG_FC4_SOC is not set
# CONFIG_FC4_SOCAL is not set
# CONFIG_SCSI_PLUTO is not set
# CONFIG_SCSI_FCAL is not set
#
# Networking options
#
...
...
@@ -150,30 +182,35 @@ CONFIG_UNIX=y
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
# CONFIG_IP_PNP is not set
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
# CONFIG_IP_PNP_BOOTP is not set
# CONFIG_IP_PNP_RARP is not set
# 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_IPV6=m
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
# CONFIG_VLAN_8021Q is not set
#
#
#
SCTP Configuration (EXPERIMENTAL)
#
CONFIG_IPX=m
# CONFIG_IPX_INTERN is not set
CONFIG_ATALK=m
CONFIG_DECNET=m
CONFIG_DECNET_SIOCGIFCONF=y
# CONFIG_DECNET_ROUTER is not set
CONFIG_IPV6_SCTP__=m
CONFIG_IP_SCTP=m
# CONFIG_SCTP_ADLER32 is not set
# CONFIG_SCTP_DBG_MSG is not set
CONFIG_SCTP_DBG_OBJCNT=y
# CONFIG_ATM is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_LLC is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_DEV_APPLETALK is not set
# CONFIG_DECNET is not set
# CONFIG_BRIDGE is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_LLC is not set
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
...
...
@@ -184,83 +221,22 @@ CONFIG_DECNET_SIOCGIFCONF=y
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
# CONFIG_IDE is not set
# CONFIG_BLK_DEV_IDE_MODES is not set
# CONFIG_BLK_DEV_HD is not set
#
# ISDN subsystem
#
# CONFIG_ISDN is not set
#
# SCSI support
#
CONFIG_SCSI=y
#
# SCSI support type (disk, tape, CDrom)
#
CONFIG_BLK_DEV_SD=y
CONFIG_SD_EXTRA_DEVS=40
CONFIG_CHR_DEV_ST=y
# CONFIG_CHR_DEV_OSST is not set
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_SR_EXTRA_DEVS=2
CONFIG_CHR_DEV_SG=m
#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y
# CONFIG_SCSI_LOGGING is not set
#
# SCSI low-level drivers
#
CONFIG_SCSI_SUNESP=y
CONFIG_SCSI_QLOGICPTI=m
#
# Fibre Channel support
#
CONFIG_FC4=m
#
# FC4 drivers
#
CONFIG_FC4_SOC=m
CONFIG_FC4_SOCAL=m
#
# FC4 targets
#
CONFIG_SCSI_PLUTO=m
CONFIG_SCSI_FCAL=m
#
# Network device support
#
CONFIG_NETDEVICES=y
CONFIG_DUMMY=m
CONFIG_BONDING=m
# CONFIG_TUN is not set
CONFIG_PPP=m
CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
CONFIG_SLIP=m
CONFIG_SLIP_COMPRESSED=y
CONFIG_SLIP_SMART=y
# CONFIG_SLIP_MODE_SLIP6 is not set
CONFIG_SUNLANCE=y
CONFIG_HAPPYMEAL=m
CONFIG_SUNBMAC=m
# CONFIG_BONDING 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_SUNQE=m
CONFIG_MYRI_SBUS=m
# CONFIG_MYRI_SBUS is not set
CONFIG_VORTEX=m
#
# Unix98 PTY support
...
...
@@ -272,6 +248,8 @@ CONFIG_UNIX98_PTY_COUNT=256
# File systems
#
# CONFIG_QUOTA is not set
# CONFIG_QFMT_V1 is not set
# CONFIG_QFMT_V2 is not set
CONFIG_AUTOFS_FS=m
CONFIG_AUTOFS4_FS=m
# CONFIG_REISERFS_FS is not set
...
...
@@ -279,17 +257,17 @@ CONFIG_AUTOFS4_FS=m
# CONFIG_REISERFS_PROC_INFO is not set
# CONFIG_ADFS_FS is not set
# CONFIG_ADFS_FS_RW is not set
CONFIG_AFFS_FS=m
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_BFS_FS is not set
CONFIG_EXT3_FS=m
CONFIG_JBD=m
# CONFIG_EXT3_FS is not set
# CONFIG_JBD is not set
# CONFIG_JBD_DEBUG is not set
CONFIG_FAT_FS=m
CONFIG_MSDOS_FS=m
# CONFIG_FAT_FS is not set
# CONFIG_MSDOS_FS is not set
# CONFIG_UMSDOS_FS is not set
CONFIG_VFAT_FS=m
CONFIG_EFS_FS=m
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
...
...
@@ -298,12 +276,15 @@ CONFIG_RAMFS=y
CONFIG_ISO9660_FS=m
# CONFIG_JOLIET is not set
# CONFIG_ZISOFS is not set
CONFIG_MINIX_FS=m
# CONFIG_JFS_FS is not set
# CONFIG_JFS_DEBUG is not set
# CONFIG_JFS_STATISTICS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_DEBUG is not set
# CONFIG_NTFS_RW is not set
CONFIG_HPFS_FS=m
# CONFIG_HPFS_FS is not set
CONFIG_PROC_FS=y
# CONFIG_DEVFS_FS is not set
# CONFIG_DEVFS_MOUNT is not set
...
...
@@ -313,26 +294,27 @@ CONFIG_DEVPTS_FS=y
# CONFIG_QNX4FS_RW is not set
CONFIG_ROMFS_FS=m
CONFIG_EXT2_FS=y
CONFIG_SYSV_FS=m
# CONFIG_SYSV_FS is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
CONFIG_UFS_FS=m
# CONFIG_UFS_FS is not set
# CONFIG_UFS_FS_WRITE is not set
#
# Network File Systems
#
CONFIG_CODA_FS=m
CONFIG_INTERMEZZO_FS=m
# CONFIG_CODA_FS is not set
# CONFIG_INTERMEZZO_FS is not set
CONFIG_NFS_FS=y
# CONFIG_NFS_V3 is not set
# CONFIG_ROOT_NFS is not set
CONFIG_NFSD=m
CONFIG_ROOT_NFS=y
# CONFIG_NFSD is not set
# CONFIG_NFSD_V3 is not set
# CONFIG_NFSD_TCP is not set
CONFIG_SUNRPC=y
CONFIG_LOCKD=y
CONFIG_SMB_FS=m
# CONFIG_SMB_
NLS_DEFAULT
is not set
# CONFIG_EXPORTFS is not set
# CONFIG_SMB_
FS
is not set
# CONFIG_NCP_FS is not set
# CONFIG_NCPFS_PACKET_SIGNING is not set
# CONFIG_NCPFS_IOCTL_LOCKING is not set
...
...
@@ -343,7 +325,6 @@ CONFIG_SMB_FS=m
# CONFIG_NCPFS_NLS is not set
# CONFIG_NCPFS_EXTRAS is not set
# CONFIG_ZISOFS_FS is not set
# CONFIG_ZLIB_FS_INFLATE is not set
#
# Partition Types
...
...
@@ -351,49 +332,8 @@ CONFIG_SMB_FS=m
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
CONFIG_SUN_PARTITION=y
CONFIG_SMB_NLS=y
CONFIG_NLS=y
#
# Native Language Support
#
CONFIG_NLS_DEFAULT="iso8859-1"
# CONFIG_NLS_CODEPAGE_437 is not set
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
# CONFIG_NLS_CODEPAGE_850 is not set
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set
# CONFIG_NLS_ISO8859_1 is not set
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
# CONFIG_NLS_ISO8859_15 is not set
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
# CONFIG_NLS_UTF8 is not set
# CONFIG_SMB_NLS is not set
# CONFIG_NLS is not set
#
# Bluetooth support
...
...
@@ -408,9 +348,18 @@ CONFIG_NLS_DEFAULT="iso8859-1"
#
# Kernel hacking
#
# CONFIG_MAGIC_SYSRQ is not set
CONFIG_DEBUG_SLAB=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_SPINLOCK=y
#
# Security options
#
CONFIG_SECURITY_CAPABILITIES=y
#
# Library routines
#
CONFIG_CRC32=y
# CONFIG_ZLIB_INFLATE is not set
# CONFIG_ZLIB_DEFLATE is not set
arch/sparc/kernel/Makefile
View file @
225b563b
...
...
@@ -13,7 +13,7 @@ export-objs := sparc_ksyms.o
IRQ_OBJS
:=
irq.o sun4m_irq.o sun4c_irq.o sun4d_irq.o
obj-y
:=
entry.o wof.o wuf.o etrap.o rtrap.o traps.o
${IRQ_OBJS}
\
process.o signal.o ioport.o setup.o idprom.o
\
sys_sparc.o sunos_asm.o s
parc-stub.o s
ystbls.o
\
sys_sparc.o sunos_asm.o systbls.o
\
time.o windows.o cpu.o devices.o sclow.o
\
tadpole.o tick14.o ptrace.o sys_solaris.o
\
unaligned.o muldiv.o pcic.o semaphore.o sparc_ksyms.o
...
...
arch/sparc/kernel/ebus.c
View file @
225b563b
...
...
@@ -24,8 +24,6 @@
struct
linux_ebus
*
ebus_chain
=
0
;
extern
void
rs_init
(
void
);
/* We are together with pcic.c under CONFIG_PCI. */
extern
unsigned
int
pcic_pin_to_irq
(
unsigned
int
,
char
*
name
);
...
...
@@ -361,6 +359,4 @@ void __init ebus_init(void)
ebus
->
next
=
0
;
++
num_ebus
;
}
rs_init
();
}
arch/sparc/kernel/entry.S
View file @
225b563b
...
...
@@ -53,6 +53,7 @@ in_trap_handler:
.
text
.
align
4
#if 0 /* kgdb is dropped from 2.5.33 */
!
This
function
is
called
when
any
SPARC
trap
(
except
window
overflow
or
!
underflow
)
occurs
.
It
makes
sure
that
the
invalid
register
window
is
still
!
available
before
jumping
into
C
code
.
It
will
also
restore
the
world
if
you
...
...
@@ -119,7 +120,7 @@ C_LABEL(trap_low):
STORE_PT_PRIV
(
sp
,
l0
,
l1
,
l2
)
RESTORE_ALL
#endif
#ifdef CONFIG_BLK_DEV_FD
.
text
...
...
arch/sparc/kernel/pcic.c
View file @
225b563b
/*
$Id: pcic.c,v 1.23 2002/01/23 14:33:55 davem Exp $
* pcic.c:
Sparc/
PCI controller support
/*
* pcic.c:
MicroSPARC-IIep
PCI controller support
*
* Copyright (C) 1998 V. Roganov and G. Raiko
*
...
...
@@ -193,48 +193,26 @@ static void pci_do_settimeofday(struct timeval *tv);
#define CONFIG_CMD(bus, device_fn, where) (0x80000000 | (((unsigned int)bus) << 16) | (((unsigned int)device_fn) << 8) | (where & ~3))
static
int
pcic_read_config
(
struct
pci_bus
*
bus
,
unsigned
int
devfn
,
int
where
,
int
siz
e
,
u32
*
value
)
static
int
pcic_read_config
_dword
(
unsigned
int
busno
,
unsigned
int
devfn
,
int
wher
e
,
u32
*
value
)
{
unsigned
int
v
;
unsigned
char
busnum
=
bus
->
number
;
struct
linux_pcic
*
pcic
;
unsigned
long
flags
;
/* unsigned char where; */
switch
(
size
)
{
case
1
:
pcic_read_config
(
bus
,
devfn
,
where
&~
3
,
4
,
&
v
);
*
value
=
0xff
&
(
v
>>
(
8
*
(
where
&
3
)));
return
PCIBIOS_SUCCESSFUL
;
break
;
case
2
:
if
(
where
&
1
)
return
PCIBIOS_BAD_REGISTER_NUMBER
;
pcic_read_config
(
bus
,
devfn
,
where
&~
3
,
4
,
&
v
);
*
value
=
0xffff
&
(
v
>>
(
8
*
(
where
&
3
)));
return
PCIBIOS_SUCCESSFUL
;
break
;
}
/* size == 4, i.e. dword */
if
(
where
&
3
)
return
PCIBIOS_BAD_REGISTER_NUMBER
;
if
(
busnum
!=
0
)
return
PCIBIOS_DEVICE_NOT_FOUND
;
pcic
=
&
pcic0
;
save_and_cli
(
flags
);
local_irq_save
(
flags
);
#if 0 /* does not fail here */
pcic_speculative = 1;
pcic_trapped = 0;
#endif
writel
(
CONFIG_CMD
(
busn
um
,
devfn
,
where
),
pcic
->
pcic_config_space_addr
);
writel
(
CONFIG_CMD
(
busn
o
,
devfn
,
where
),
pcic
->
pcic_config_space_addr
);
#if 0 /* does not fail here */
nop();
if (pcic_trapped) {
restore_flags
(flags);
local_irq_restore
(flags);
*value = ~0;
return
PCIBIOS_SUCCESSFUL
;
return
0
;
}
#endif
pcic_speculative
=
2
;
...
...
@@ -243,50 +221,77 @@ static int pcic_read_config(struct pci_bus *bus, unsigned int devfn,
nop
();
if
(
pcic_trapped
)
{
pcic_speculative
=
0
;
restore_flags
(
flags
);
local_irq_restore
(
flags
);
*
value
=
~
0
;
return
PCIBIOS_SUCCESSFUL
;
return
0
;
}
pcic_speculative
=
0
;
restore_flags
(
flags
);
return
PCIBIOS_SUCCESSFUL
;
local_irq_restore
(
flags
);
return
0
;
}
static
int
pcic_
write
_config
(
struct
pci_bus
*
bus
,
unsigned
int
devfn
,
int
where
,
int
size
,
u32
value
)
static
int
pcic_
read
_config
(
struct
pci_bus
*
bus
,
unsigned
int
devfn
,
int
where
,
int
size
,
u32
*
val
)
{
unsigned
int
v
;
unsigned
char
busnum
=
bus
->
number
;
struct
linux_pcic
*
pcic
;
unsigned
long
flags
;
if
(
bus
->
number
!=
0
)
return
-
EINVAL
;
switch
(
size
)
{
case
1
:
pcic_read_config
(
bus
,
devfn
,
where
&~
3
,
4
,
&
v
);
v
=
(
v
&
~
(
0xff
<<
(
8
*
(
where
&
3
))))
|
((
0xff
&
(
unsigned
)
value
)
<<
(
8
*
(
where
&
3
)));
return
pcic_write_config
(
bus
,
devfn
,
where
&~
3
,
4
,
v
);
break
;
pcic_read_config_dword
(
bus
->
number
,
devfn
,
where
&~
3
,
&
v
);
*
val
=
0xff
&
(
v
>>
(
8
*
(
where
&
3
)));
return
0
;
case
2
:
if
(
where
&
1
)
return
PCIBIOS_BAD_REGISTER_NUMBER
;
pcic_read_config
(
bus
,
devfn
,
where
&~
3
,
4
,
&
v
);
v
=
(
v
&
~
(
0xffff
<<
(
8
*
(
where
&
3
))))
|
((
0xffff
&
(
unsigned
)
value
)
<<
(
8
*
(
where
&
3
)));
return
pcic_write_config
(
bus
,
devfn
,
where
&~
3
,
4
,
v
);
break
;
if
(
where
&
1
)
return
-
EINVAL
;
pcic_read_config_dword
(
bus
->
number
,
devfn
,
where
&~
3
,
&
v
);
*
val
=
0xffff
&
(
v
>>
(
8
*
(
where
&
3
)));
return
0
;
case
4
:
if
(
where
&
3
)
return
-
EINVAL
;
pcic_read_config_dword
(
bus
->
number
,
devfn
,
where
&~
3
,
val
);
return
0
;
}
return
-
EINVAL
;
}
static
int
pcic_write_config_dword
(
unsigned
int
busno
,
unsigned
int
devfn
,
int
where
,
u32
value
)
{
struct
linux_pcic
*
pcic
;
unsigned
long
flags
;
/* size == 4, i.e. dword */
if
(
where
&
3
)
return
PCIBIOS_BAD_REGISTER_NUMBER
;
if
(
busnum
!=
0
)
return
PCIBIOS_DEVICE_NOT_FOUND
;
pcic
=
&
pcic0
;
save_and_cli
(
flags
);
writel
(
CONFIG_CMD
(
busn
um
,
devfn
,
where
),
pcic
->
pcic_config_space_addr
);
local_irq_save
(
flags
);
writel
(
CONFIG_CMD
(
busn
o
,
devfn
,
where
),
pcic
->
pcic_config_space_addr
);
writel
(
value
,
pcic
->
pcic_config_space_data
+
(
where
&
4
));
restore_flags
(
flags
);
return
PCIBIOS_SUCCESSFUL
;
local_irq_restore
(
flags
);
return
0
;
}
static
int
pcic_write_config
(
struct
pci_bus
*
bus
,
unsigned
int
devfn
,
int
where
,
int
size
,
u32
val
)
{
unsigned
int
v
;
if
(
bus
->
number
!=
0
)
return
-
EINVAL
;
switch
(
size
)
{
case
1
:
pcic_read_config_dword
(
bus
->
number
,
devfn
,
where
&~
3
,
&
v
);
v
=
(
v
&
~
(
0xff
<<
(
8
*
(
where
&
3
))))
|
((
0xff
&
val
)
<<
(
8
*
(
where
&
3
)));
return
pcic_write_config_dword
(
bus
->
number
,
devfn
,
where
&~
3
,
v
);
case
2
:
if
(
where
&
1
)
return
-
EINVAL
;
pcic_read_config_dword
(
bus
->
number
,
devfn
,
where
&~
3
,
&
v
);
v
=
(
v
&
~
(
0xffff
<<
(
8
*
(
where
&
3
))))
|
((
0xffff
&
val
)
<<
(
8
*
(
where
&
3
)));
return
pcic_write_config_dword
(
bus
->
number
,
devfn
,
where
&~
3
,
v
);
case
4
:
if
(
where
&
3
)
return
-
EINVAL
;
return
pcic_write_config_dword
(
bus
->
number
,
devfn
,
where
,
val
);
}
return
-
EINVAL
;
}
static
struct
pci_ops
pcic_ops
=
{
...
...
@@ -420,7 +425,7 @@ static void __init pcic_pbm_scan_bus(struct linux_pcic *pcic)
/*
* Main entry point from the PCI subsystem.
*/
static
int
__init
pci
bios
_init
(
void
)
static
int
__init
pci
c
_init
(
void
)
{
struct
linux_pcic
*
pcic
;
...
...
@@ -623,7 +628,7 @@ void __init pcibios_fixup_bus(struct pci_bus *bus)
{
struct
list_head
*
walk
;
int
i
,
has_io
,
has_mem
;
unsigned
shor
t
cmd
;
unsigned
in
t
cmd
;
struct
linux_pcic
*
pcic
;
/* struct linux_pbm_info* pbm = &pcic->pbm; */
int
node
;
...
...
@@ -663,19 +668,21 @@ void __init pcibios_fixup_bus(struct pci_bus *bus)
}
else
if
(
f
&
IORESOURCE_MEM
)
has_mem
=
1
;
}
pcic_read_config
_word
(
dev
,
PCI_COMMAND
,
&
cmd
);
pcic_read_config
(
dev
->
bus
,
dev
->
devfn
,
PCI_COMMAND
,
2
,
&
cmd
);
if
(
has_io
&&
!
(
cmd
&
PCI_COMMAND_IO
))
{
printk
(
"PCIC: Enabling I/O for device %02x:%02x
\n
"
,
dev
->
bus
->
number
,
dev
->
devfn
);
cmd
|=
PCI_COMMAND_IO
;
pcic_write_config_word
(
dev
,
PCI_COMMAND
,
cmd
);
pcic_write_config
(
dev
->
bus
,
dev
->
devfn
,
PCI_COMMAND
,
2
,
cmd
);
}
if
(
has_mem
&&
!
(
cmd
&
PCI_COMMAND_MEMORY
))
{
printk
(
"PCIC: Enabling memory for device %02x:%02x
\n
"
,
dev
->
bus
->
number
,
dev
->
devfn
);
cmd
|=
PCI_COMMAND_MEMORY
;
pcic_write_config_word
(
dev
,
PCI_COMMAND
,
cmd
);
}
pcic_write_config
(
dev
->
bus
,
dev
->
devfn
,
PCI_COMMAND
,
2
,
cmd
);
}
node
=
pdev_to_pnode
(
&
pcic
->
pbm
,
dev
);
if
(
node
==
0
)
...
...
@@ -791,7 +798,7 @@ static void pci_do_gettimeofday(struct timeval *tv)
{
unsigned
long
flags
;
save_and_cli
(
flags
);
local_irq_save
(
flags
);
*
tv
=
xtime
;
tv
->
tv_usec
+=
do_gettimeoffset
();
...
...
@@ -803,7 +810,7 @@ static void pci_do_gettimeofday(struct timeval *tv)
if
((
jiffies
-
wall_jiffies
)
!=
0
)
tv
->
tv_usec
+=
USECS_PER_JIFFY
;
restore_flags
(
flags
);
local_irq_restore
(
flags
);
if
(
tv
->
tv_usec
>=
1000000
)
{
tv
->
tv_usec
-=
1000000
;
...
...
@@ -813,7 +820,9 @@ static void pci_do_gettimeofday(struct timeval *tv)
static
void
pci_do_settimeofday
(
struct
timeval
*
tv
)
{
cli
();
unsigned
long
flags
;
local_irq_save
(
flags
);
tv
->
tv_usec
-=
do_gettimeoffset
();
if
(
tv
->
tv_usec
<
0
)
{
tv
->
tv_usec
+=
1000000
;
...
...
@@ -824,7 +833,7 @@ static void pci_do_settimeofday(struct timeval *tv)
time_status
|=
STA_UNSYNC
;
time_maxerror
=
NTP_PHASE_LIMIT
;
time_esterror
=
NTP_PHASE_LIMIT
;
sti
(
);
local_irq_restore
(
flags
);
}
#if 0
...
...
@@ -898,9 +907,9 @@ static void pcic_disable_irq(unsigned int irq_nr)
unsigned
long
mask
,
flags
;
mask
=
get_irqmask
(
irq_nr
);
save_and_cli
(
flags
);
local_irq_save
(
flags
);
writel
(
mask
,
pcic0
.
pcic_regs
+
PCI_SYS_INT_TARGET_MASK_SET
);
restore_flags
(
flags
);
local_irq_restore
(
flags
);
}
static
void
pcic_enable_irq
(
unsigned
int
irq_nr
)
...
...
@@ -908,9 +917,9 @@ static void pcic_enable_irq(unsigned int irq_nr)
unsigned
long
mask
,
flags
;
mask
=
get_irqmask
(
irq_nr
);
save_and_cli
(
flags
);
local_irq_save
(
flags
);
writel
(
mask
,
pcic0
.
pcic_regs
+
PCI_SYS_INT_TARGET_MASK_CLEAR
);
restore_flags
(
flags
);
local_irq_restore
(
flags
);
}
static
void
pcic_clear_profile_irq
(
int
cpu
)
...
...
@@ -1021,4 +1030,4 @@ void insl(unsigned long addr, void *dst, unsigned long count) {
#endif
subsys_initcall
(
pci
bios
_init
);
subsys_initcall
(
pci
c
_init
);
arch/sparc/kernel/process.c
View file @
225b563b
...
...
@@ -94,7 +94,7 @@ int cpu_idle(void)
extern
unsigned
long
sun4c_kernel_faults
;
extern
void
sun4c_grow_kernel_ring
(
void
);
save_and_cli
(
flags
);
local_irq_save
(
flags
);
now
=
jiffies
;
count
-=
(
now
-
last_jiffies
);
last_jiffies
=
now
;
...
...
@@ -110,7 +110,7 @@ int cpu_idle(void)
sun4c_grow_kernel_ring
();
}
}
restore_flags
(
flags
);
local_irq_restore
(
flags
);
}
while
((
!
need_resched
())
&&
pm_idle
)
{
...
...
@@ -144,8 +144,6 @@ int cpu_idle(void)
extern
char
reboot_command
[];
extern
int
serial_console
;
extern
void
(
*
prom_palette
)(
int
);
void
machine_halt
(
void
)
...
...
arch/sparc/kernel/setup.c
View file @
225b563b
...
...
@@ -34,7 +34,6 @@
#include <asm/segment.h>
#include <asm/system.h>
#include <asm/io.h>
#include <asm/kgdb.h>
#include <asm/processor.h>
#include <asm/oplib.h>
#include <asm/page.h>
...
...
@@ -67,8 +66,6 @@ struct screen_info screen_info = {
*/
extern
unsigned
long
trapbase
;
extern
int
serial_console
;
extern
void
breakpoint
(
void
);
void
(
*
prom_palette
)(
int
);
asmlinkage
void
sys_sync
(
void
);
/* it's really int */
...
...
@@ -105,28 +102,15 @@ void prom_sync_me(void)
return
;
}
extern
void
rs_kgdb_hook
(
int
tty_num
);
/* sparc/serial.c */
unsigned
int
boot_flags
__initdata
=
0
;
#define BOOTME_DEBUG 0x1
#define BOOTME_SINGLE 0x2
#define BOOTME_KGDBA 0x4
#define BOOTME_KGDBB 0x8
#define BOOTME_KGDB 0xc
static
int
console_fb
__initdata
=
0
;
/* Exported for mm/init.c:paging_init. */
unsigned
long
cmdline_memory_size
__initdata
=
0
;
void
kernel_enter_debugger
(
void
)
{
if
(
boot_flags
&
BOOTME_KGDB
)
{
printk
(
"KGDB: Entered
\n
"
);
breakpoint
();
}
}
static
void
prom_console_write
(
struct
console
*
con
,
const
char
*
s
,
unsigned
n
)
{
...
...
@@ -142,11 +126,6 @@ static struct console prom_debug_console = {
int
obp_system_intr
(
void
)
{
if
(
boot_flags
&
BOOTME_KGDB
)
{
printk
(
"KGDB: system interrupted
\n
"
);
breakpoint
();
return
1
;
}
if
(
boot_flags
&
BOOTME_DEBUG
)
{
printk
(
"OBP: system interrupted
\n
"
);
prom_halt
();
...
...
@@ -196,24 +175,6 @@ static void __init boot_flags_init(char *commands)
commands
++
;
while
(
*
commands
&&
*
commands
!=
' '
)
process_switch
(
*
commands
++
);
}
else
if
(
strlen
(
commands
)
>=
9
&&
!
strncmp
(
commands
,
"kgdb=tty"
,
8
))
{
switch
(
commands
[
8
])
{
#ifdef CONFIG_SUN_SERIAL
case
'a'
:
boot_flags
|=
BOOTME_KGDBA
;
prom_printf
(
"KGDB: Using serial line /dev/ttya.
\n
"
);
break
;
case
'b'
:
boot_flags
|=
BOOTME_KGDBB
;
prom_printf
(
"KGDB: Using serial line /dev/ttyb.
\n
"
);
break
;
#endif
default:
printk
(
"KGDB: Unknown tty line.
\n
"
);
break
;
}
commands
+=
9
;
}
else
{
if
(
!
strncmp
(
commands
,
"console="
,
8
))
{
commands
+=
8
;
...
...
@@ -378,65 +339,48 @@ void __init setup_arch(char **cmdline_p)
prom_setsync
(
prom_sync_me
);
{
#if !CONFIG_SUN_SERIAL
serial_console
=
0
;
#ifndef CONFIG_SERIAL_CONSOLE
/* Not CONFIG_SERIAL_SUNCORE: to be gone. */
serial_console
=
0
;
#else
switch
(
console_fb
)
{
case
0
:
/* Let get our io devices from prom */
{
int
idev
=
prom_query_input_device
();
int
odev
=
prom_query_output_device
();
if
(
idev
==
PROMDEV_IKBD
&&
odev
==
PROMDEV_OSCREEN
)
{
serial_console
=
0
;
}
else
if
(
idev
==
PROMDEV_ITTYA
&&
odev
==
PROMDEV_OTTYA
)
{
serial_console
=
1
;
}
else
if
(
idev
==
PROMDEV_ITTYB
&&
odev
==
PROMDEV_OTTYB
)
{
serial_console
=
2
;
}
else
if
(
idev
==
PROMDEV_I_UNK
&&
odev
==
PROMDEV_OTTYA
)
{
prom_printf
(
"MrCoffee ttya
\n
"
);
serial_console
=
1
;
}
else
if
(
idev
==
PROMDEV_I_UNK
&&
odev
==
PROMDEV_OSCREEN
)
{
serial_console
=
0
;
prom_printf
(
"MrCoffee keyboard
\n
"
);
}
else
{
prom_printf
(
"Inconsistent or unknown console
\n
"
);
prom_printf
(
"You cannot mix serial and non serial input/output devices
\n
"
);
prom_halt
();
}
switch
(
console_fb
)
{
case
0
:
/* Let get our io devices from prom */
{
int
idev
=
prom_query_input_device
();
int
odev
=
prom_query_output_device
();
if
(
idev
==
PROMDEV_IKBD
&&
odev
==
PROMDEV_OSCREEN
)
{
serial_console
=
0
;
}
else
if
(
idev
==
PROMDEV_ITTYA
&&
odev
==
PROMDEV_OTTYA
)
{
serial_console
=
1
;
}
else
if
(
idev
==
PROMDEV_ITTYB
&&
odev
==
PROMDEV_OTTYB
)
{
serial_console
=
2
;
}
else
if
(
idev
==
PROMDEV_I_UNK
&&
odev
==
PROMDEV_OTTYA
)
{
prom_printf
(
"MrCoffee ttya
\n
"
);
serial_console
=
1
;
}
else
if
(
idev
==
PROMDEV_I_UNK
&&
odev
==
PROMDEV_OSCREEN
)
{
serial_console
=
0
;
prom_printf
(
"MrCoffee keyboard
\n
"
);
}
else
{
prom_printf
(
"Inconsistent or unknown console
\n
"
);
prom_printf
(
"You cannot mix serial and non serial input/output devices
\n
"
);
prom_halt
();
}
break
;
case
1
:
serial_console
=
0
;
break
;
/* Force one of the framebuffers as console */
case
2
:
serial_console
=
1
;
break
;
/* Force ttya as console */
case
3
:
serial_console
=
2
;
break
;
/* Force ttyb as console */
}
#endif
}
if
((
boot_flags
&
BOOTME_KGDBA
))
{
rs_kgdb_hook
(
0
);
}
if
((
boot_flags
&
BOOTME_KGDBB
))
{
rs_kgdb_hook
(
1
);
break
;
case
1
:
serial_console
=
0
;
break
;
/* Force one of the framebuffers as console */
case
2
:
serial_console
=
1
;
break
;
/* Force ttya as console */
case
3
:
serial_console
=
2
;
break
;
/* Force ttyb as console */
}
#endif
if
((
boot_flags
&
BOOTME_DEBUG
)
&&
(
linux_dbvec
!=
0
)
&&
((
*
(
short
*
)
linux_dbvec
)
!=
-
1
))
{
printk
(
"Booted under KADB. Syncing trap table.
\n
"
);
(
*
(
linux_dbvec
->
teach_debugger
))();
}
if
((
boot_flags
&
BOOTME_KGDB
))
{
set_debug_traps
();
prom_printf
(
"Breakpoint!
\n
"
);
breakpoint
();
}
init_mm
.
context
=
(
unsigned
long
)
NO_CONTEXT
;
init_task
.
thread
.
kregs
=
&
fake_swapper_regs
;
if
(
serial_console
)
conswitchp
=
NULL
;
paging_init
();
}
...
...
@@ -514,3 +458,19 @@ struct seq_operations cpuinfo_op = {
.
stop
=
c_stop
,
.
show
=
show_cpuinfo
,
};
extern
int
stop_a_enabled
;
void
sun_do_break
(
void
)
{
if
(
!
stop_a_enabled
)
return
;
printk
(
"
\n
"
);
flush_user_windows
();
prom_cmdline
();
}
int
serial_console
;
int
stop_a_enabled
=
1
;
arch/sparc/kernel/sparc-stub.c
View file @
225b563b
...
...
@@ -188,22 +188,16 @@ static inline void copy_ttentry(struct tt_entry *src, struct tt_entry *dest)
/* Initialize the kgdb_savettable so that debugging can commence */
static
void
eh_init
(
void
)
{
int
i
,
flags
;
int
i
;
save_and_cli
(
flags
);
for
(
i
=
0
;
i
<
256
;
i
++
)
copy_ttentry
(
&
sparc_ttable
[
i
],
&
kgdb_savettable
[
i
]);
restore_flags
(
flags
);
}
/* Install an exception handler for kgdb */
static
void
exceptionHandler
(
int
tnum
,
trapfunc_t
trap_entry
)
{
unsigned
long
te_addr
=
(
unsigned
long
)
trap_entry
;
int
flags
;
/* We are dorking with a live trap table, all irqs off */
save_and_cli
(
flags
);
/* Make new vector */
sparc_ttable
[
tnum
].
inst_one
=
...
...
@@ -212,8 +206,6 @@ static void exceptionHandler(int tnum, trapfunc_t trap_entry)
sparc_ttable
[
tnum
].
inst_two
=
SPARC_RD_PSR_L0
;
sparc_ttable
[
tnum
].
inst_three
=
SPARC_NOP
;
sparc_ttable
[
tnum
].
inst_four
=
SPARC_NOP
;
restore_flags
(
flags
);
}
/* Convert ch from a hex digit to an int */
...
...
@@ -406,7 +398,7 @@ set_debug_traps(void)
struct
hard_trap_info
*
ht
;
unsigned
long
flags
;
save_and_cli
(
flags
);
local_irq_save
(
flags
);
#if 0
/* Have to sort this out. This cannot be done after initialization. */
BTFIXUPSET_CALL(flush_cache_all, flush_cache_all_nop, BTFIXUPCALL_NOP);
...
...
@@ -438,7 +430,7 @@ set_debug_traps(void)
#endif
initialized
=
1
;
/* connect! */
restore_flags
(
flags
);
local_irq_restore
(
flags
);
}
/* Convert the SPARC hardware trap type code to a unix signal number. */
...
...
arch/sparc/kernel/tadpole.c
View file @
225b563b
...
...
@@ -56,6 +56,9 @@ static void clk_slow(void)
"g2"
,
"g3"
,
"g4"
,
"g5"
);
}
/*
* Tadpole is guaranteed to be UP, using local_irq_save.
*/
static
void
tsu_clockstop
(
void
)
{
unsigned
int
mcsr
;
...
...
@@ -64,28 +67,28 @@ static void tsu_clockstop(void)
if
(
!
clk_ctrl
)
return
;
if
(
!
(
clk_state
&
CLOCK_INIT_DONE
))
{
save_and_cli
(
flags
);
local_irq_save
(
flags
);
clk_init
();
clk_state
|=
CLOCK_INIT_DONE
;
/* all done */
restore_flags
(
flags
);
local_irq_restore
(
flags
);
return
;
}
if
(
!
(
clk_ctrl
[
2
]
&
1
))
return
;
/* no speed up yet */
save_and_cli
(
flags
);
local_irq_save
(
flags
);
/* if SCSI DMA in progress, don't slow clock */
mcsr
=
ldphys
(
MACIO_SCSI_CSR_ADDR
);
if
((
mcsr
&
MACIO_EN_DMA
)
!=
0
)
{
restore_flags
(
flags
);
local_irq_restore
(
flags
);
return
;
}
/* TODO... the minimum clock setting ought to increase the
* memory refresh interval..
*/
clk_slow
();
restore_flags
(
flags
);
local_irq_restore
(
flags
);
}
static
void
swift_clockstop
(
void
)
...
...
arch/sparc/kernel/tick14.c
View file @
225b563b
...
...
@@ -29,32 +29,30 @@ extern unsigned long lvl14_save[5];
static
unsigned
long
*
linux_lvl14
=
NULL
;
static
unsigned
long
obp_lvl14
[
4
];
/*
* Call with timer IRQ closed.
* First time we do it with disable_irq, later prom code uses spin_lock_irq().
*/
void
install_linux_ticker
(
void
)
{
unsigned
long
flags
;
if
(
!
linux_lvl14
)
return
;
save_and_cli
(
flags
);
linux_lvl14
[
0
]
=
lvl14_save
[
0
];
linux_lvl14
[
1
]
=
lvl14_save
[
1
];
linux_lvl14
[
2
]
=
lvl14_save
[
2
];
linux_lvl14
[
3
]
=
lvl14_save
[
3
];
restore_flags
(
flags
);
}
void
install_obp_ticker
(
void
)
{
unsigned
long
flags
;
if
(
!
linux_lvl14
)
return
;
save_and_cli
(
flags
);
linux_lvl14
[
0
]
=
obp_lvl14
[
0
];
linux_lvl14
[
1
]
=
obp_lvl14
[
1
];
linux_lvl14
[
2
]
=
obp_lvl14
[
2
];
linux_lvl14
[
3
]
=
obp_lvl14
[
3
];
restore_flags
(
flags
);
}
void
claim_ticker14
(
void
(
*
handler
)(
int
,
void
*
,
struct
pt_regs
*
),
...
...
arch/sparc/kernel/unaligned.c
View file @
225b563b
...
...
@@ -506,9 +506,18 @@ asmlinkage void user_unaligned_trap(struct pt_regs *regs, unsigned int insn)
break
;
case
both
:
#if 0 /* unsupported */
do_atomic(fetch_reg_addr(((insn>>25)&0x1f), regs),
(unsigned long *) addr,
user_unaligned_trap_fault);
#else
/*
* This was supported in 2.4. However, we question
* the value of SWAP instruction across word boundaries.
*/
printk
(
"Unaligned SWAP unsupported.
\n
"
);
goto
kill_user
;
#endif
break
;
default:
...
...
arch/sparc/mm/srmmu.c
View file @
225b563b
...
...
@@ -1212,7 +1212,6 @@ extern int linux_num_cpus;
void
(
*
poke_srmmu
)(
void
)
__initdata
=
NULL
;
extern
unsigned
long
bootmem_init
(
unsigned
long
*
pages_avail
);
extern
void
sun_serial_setup
(
void
);
void
__init
srmmu_paging_init
(
void
)
{
...
...
@@ -1281,13 +1280,6 @@ void __init srmmu_paging_init(void)
flush_cache_all
();
flush_tlb_all
();
/*
* This does not logically belong here, but we need to
* call it at the moment we are able to use the bootmem
* allocator.
*/
sun_serial_setup
();
sparc_context_init
(
num_contexts
);
kmap_init
();
...
...
arch/sparc/mm/sun4c.c
View file @
225b563b
...
...
@@ -2001,7 +2001,6 @@ extern void sparc_context_init(int);
extern
unsigned
long
end
;
extern
unsigned
long
bootmem_init
(
unsigned
long
*
pages_avail
);
extern
unsigned
long
last_valid_pfn
;
extern
void
sun_serial_setup
(
void
);
void
__init
sun4c_paging_init
(
void
)
{
...
...
@@ -2018,12 +2017,6 @@ void __init sun4c_paging_init(void)
last_valid_pfn
=
bootmem_init
(
&
pages_avail
);
end_pfn
=
last_valid_pfn
;
/* This does not logically belong here, but we need to
* call it at the moment we are able to use the bootmem
* allocator.
*/
sun_serial_setup
();
sun4c_probe_mmu
();
invalid_segment
=
(
num_segmaps
-
1
);
sun4c_init_mmu_entry_pool
();
...
...
arch/sparc/prom/misc.c
View file @
225b563b
...
...
@@ -12,6 +12,7 @@
#include <asm/openprom.h>
#include <asm/oplib.h>
#include <asm/auxio.h>
#include <asm/system.h>
extern
void
restore_current
(
void
);
...
...
@@ -47,7 +48,6 @@ prom_feval(char *fstring)
/* We want to do this more nicely some day. */
extern
void
(
*
prom_palette
)(
int
);
extern
int
serial_console
;
/* Drop into the prom, with the chance to continue with the 'go'
* prom command.
...
...
@@ -55,20 +55,18 @@ extern int serial_console;
void
prom_cmdline
(
void
)
{
extern
void
kernel_enter_debugger
(
void
);
extern
void
install_obp_ticker
(
void
);
extern
void
install_linux_ticker
(
void
);
unsigned
long
flags
;
kernel_enter_debugger
();
if
(
!
serial_console
&&
prom_palette
)
prom_palette
(
1
);
install_obp_ticker
();
spin_lock_irqsave
(
&
prom_lock
,
flags
);
install_obp_ticker
();
(
*
(
romvec
->
pv_abort
))();
restore_current
();
spin_unlock_irqrestore
(
&
prom_lock
,
flags
);
install_linux_ticker
();
spin_unlock_irqrestore
(
&
prom_lock
,
flags
);
#ifdef CONFIG_SUN_AUXIO
TURN_ON_LED
;
#endif
...
...
arch/sparc64/kernel/power.c
View file @
225b563b
...
...
@@ -11,6 +11,7 @@
#include <linux/signal.h>
#include <linux/delay.h>
#include <asm/system.h>
#include <asm/ebus.h>
#define __KERNEL_SYSCALLS__
...
...
@@ -37,8 +38,6 @@ extern void machine_halt(void);
extern
void
machine_alt_power_off
(
void
);
static
void
(
*
poweroff_method
)(
void
)
=
machine_alt_power_off
;
extern
int
serial_console
;
void
machine_power_off
(
void
)
{
if
(
!
serial_console
)
{
...
...
arch/sparc64/kernel/process.c
View file @
225b563b
...
...
@@ -110,7 +110,6 @@ int cpu_idle(void)
extern
char
reboot_command
[];
extern
void
(
*
prom_palette
)(
int
);
extern
int
serial_console
;
extern
void
(
*
prom_keyboard
)(
void
);
void
machine_halt
(
void
)
...
...
arch/sparc64/kernel/setup.c
View file @
225b563b
...
...
@@ -314,12 +314,9 @@ int prom_callback(long *args)
return
0
;
}
extern
void
rs_kgdb_hook
(
int
tty_num
);
/* sparc/serial.c */
unsigned
int
boot_flags
=
0
;
#define BOOTME_DEBUG 0x1
#define BOOTME_SINGLE 0x2
#define BOOTME_KGDB 0x4
static
int
console_fb
__initdata
=
0
;
...
...
@@ -389,26 +386,6 @@ static void __init boot_flags_init(char *commands)
commands
++
;
while
(
*
commands
&&
*
commands
!=
' '
)
process_switch
(
*
commands
++
);
}
else
if
(
strlen
(
commands
)
>=
9
&&
!
strncmp
(
commands
,
"kgdb=tty"
,
8
))
{
boot_flags
|=
BOOTME_KGDB
;
switch
(
commands
[
8
])
{
#ifdef CONFIG_SUN_SERIAL
case
'a'
:
rs_kgdb_hook
(
0
);
prom_printf
(
"KGDB: Using serial line /dev/ttya.
\n
"
);
break
;
case
'b'
:
rs_kgdb_hook
(
1
);
prom_printf
(
"KGDB: Using serial line /dev/ttyb.
\n
"
);
break
;
#endif
default:
printk
(
"KGDB: Unknown tty line.
\n
"
);
boot_flags
&=
~
BOOTME_KGDB
;
break
;
}
commands
+=
9
;
}
else
{
if
(
!
strncmp
(
commands
,
"console="
,
8
))
{
commands
+=
8
;
...
...
@@ -484,7 +461,6 @@ extern void paging_init(void);
void
__init
setup_arch
(
char
**
cmdline_p
)
{
extern
int
serial_console
;
/* in console.c, of course */
unsigned
long
highest_paddr
;
int
i
;
...
...
@@ -568,7 +544,6 @@ void __init setup_arch(char **cmdline_p)
}
#endif
#ifdef CONFIG_SUN_SERIAL
switch
(
console_fb
)
{
case
0
:
/* Let's get our io devices from prom */
{
...
...
@@ -597,10 +572,7 @@ void __init setup_arch(char **cmdline_p)
case
3
:
/* Force ttyb as console */
serial_console
=
2
;
break
;
}
#else
serial_console
=
0
;
#endif
};
if
(
serial_console
)
conswitchp
=
NULL
;
...
...
arch/sparc64/mm/init.c
View file @
225b563b
...
...
@@ -1515,14 +1515,6 @@ void __init paging_init(void)
pages_avail
=
0
;
last_valid_pfn
=
end_pfn
=
bootmem_init
(
&
pages_avail
);
#ifdef CONFIG_SUN_SERIAL
/* This does not logically belong here, but we need to
* call it at the moment we are able to use the bootmem
* allocator.
*/
sun_serial_setup
();
#endif
/* Inherit non-locked OBP mappings. */
inherit_prom_mappings
();
...
...
arch/sparc64/prom/misc.c
View file @
225b563b
...
...
@@ -14,6 +14,7 @@
#include <linux/delay.h>
#include <asm/openprom.h>
#include <asm/oplib.h>
#include <asm/system.h>
/* Reset and reboot the machine with the command 'bcommand'. */
void
prom_reboot
(
char
*
bcommand
)
...
...
@@ -33,7 +34,6 @@ void prom_feval(char *fstring)
/* We want to do this more nicely some day. */
extern
void
(
*
prom_palette
)(
int
);
extern
int
serial_console
;
#ifdef CONFIG_SMP
extern
void
smp_capture
(
void
);
...
...
drivers/serial/sunsu.c
View file @
225b563b
...
...
@@ -34,6 +34,7 @@
#include <linux/serio.h>
#endif
#include <linux/init.h>
#include <linux/delay.h>
#include <asm/io.h>
#include <asm/irq.h>
...
...
@@ -1019,6 +1020,8 @@ static void sunsu_autoconfig(struct uart_sunsu_port *up)
if
(
!
up
->
port_node
||
!
up
->
su_type
)
return
;
up
->
port
.
iotype
=
SERIAL_IO_MEM
;
/*
* First we look for Ebus-bases su's
*/
...
...
drivers/serial/sunzilog.c
View file @
225b563b
...
...
@@ -382,13 +382,6 @@ static void sunzilog_receive_chars(struct uart_sunzilog_port *up,
sun_do_break
();
return
;
}
#ifndef CONFIG_SPARC64
/* Look for kgdb 'stop' character. */
if
(
ZS_IS_KGDB
(
up
)
&&
(
ch
==
'\003'
))
{
breakpoint
();
return
;
}
#endif
/* A real serial line, record the character and status. */
*
tty
->
flip
.
char_buf_ptr
=
ch
;
...
...
@@ -1152,11 +1145,11 @@ static struct zilog_layout * __init get_zs_sun4u(int chip)
static
struct
zilog_layout
*
__init
get_zs_sun4cmd
(
int
chip
)
{
struct
linux_prom_irqs
irq_info
[
2
];
unsigned
long
mapped_addr
;
int
zsnode
,
chipid
,
cpunode
;
unsigned
long
mapped_addr
=
0
;
int
zsnode
,
chipid
,
cpunode
,
bbnode
;
if
(
sparc_cpu_model
==
sun4d
)
{
int
bbnode
,
walk
,
no
;
int
walk
,
no
;
zsnode
=
0
;
bbnode
=
0
;
...
...
@@ -1249,7 +1242,7 @@ static struct zilog_layout * __init get_zs_sun4cmd(int chip)
}
else
if
(
zilog_irq
!=
irq_info
[
0
].
pri
)
{
prom_printf
(
"SunZilog: Inconsistent IRQ layout for Zilog %d.
\n
"
,
chip
);
prom
t
_halt
();
prom_halt
();
}
break
;
}
...
...
@@ -1290,7 +1283,7 @@ static struct zilog_layout * __init get_zs(int chip)
zilog_irq
=
12
;
res
.
end
=
(
res
.
start
+
(
8
-
1
));
res
.
flags
=
IORESOURCE_IO
;
return
sbus_ioremap
(
&
res
,
0
,
8
,
"SunZilog"
);
return
(
struct
zilog_layout
*
)
sbus_ioremap
(
&
res
,
0
,
8
,
"SunZilog"
);
}
return
get_zs_sun4cmd
(
chip
);
...
...
@@ -1649,13 +1642,10 @@ static int __init sunzilog_init(void)
/* Sun4 Zilog setup is hard coded, no probing to do. */
if
(
sparc_cpu_model
==
sun4
)
{
NUM_SUNZILOG
=
2
;
goto
no_probe
;
}
node
=
prom_getchild
(
prom_root_node
);
if
(
sparc_cpu_model
==
sun4d
)
{
}
else
if
(
sparc_cpu_model
==
sun4d
)
{
int
bbnode
;
node
=
prom_getchild
(
prom_root_node
);
NUM_SUNZILOG
=
0
;
while
(
node
&&
(
node
=
prom_searchsiblings
(
node
,
"cpu-unit"
)))
{
...
...
@@ -1664,7 +1654,6 @@ static int __init sunzilog_init(void)
NUM_SUNZILOG
+=
2
;
node
=
prom_getsibling
(
node
);
}
goto
no_probe
;
}
else
if
(
sparc_cpu_model
==
sun4u
)
{
int
central_node
;
...
...
@@ -1675,27 +1664,28 @@ static int __init sunzilog_init(void)
if
(
central_node
!=
0
&&
central_node
!=
-
1
)
node
=
prom_searchsiblings
(
prom_getchild
(
central_node
),
"fhc"
);
else
node
=
prom_searchsiblings
(
node
,
"sbus"
);
node
=
prom_searchsiblings
(
prom_getchild
(
prom_root_node
)
,
"sbus"
);
if
(
node
!=
0
&&
node
!=
-
1
)
node
=
prom_getchild
(
node
);
if
(
node
==
0
||
node
==
-
1
)
return
-
ENODEV
;
node
=
prom_searchsiblings
(
node
,
"zs"
);
if
(
!
node
)
return
-
ENODEV
;
NUM_SUNZILOG
=
2
;
}
else
{
node
=
prom_getchild
(
prom_root_node
);
node
=
prom_searchsiblings
(
node
,
"obio"
);
if
(
node
)
node
=
prom_getchild
(
node
);
if
(
!
node
)
return
-
ENODEV
;
NUM_SUNZILOG
=
2
;
goto
no_probe
;
}
node
=
prom_searchsiblings
(
node
,
"zs"
);
if
(
!
node
)
return
-
ENODEV
;
NUM_SUNZILOG
=
2
;
no_probe:
sunzilog_alloc_tables
();
sunzilog_ports_init
();
...
...
include/asm-sparc/hardirq.h
View file @
225b563b
...
...
@@ -121,7 +121,7 @@ do { \
#ifndef CONFIG_SMP
#define synchronize_irq() barrier()
#define synchronize_irq(
irq
) barrier()
#else
/* (CONFIG_SMP) */
...
...
include/asm-sparc/irq.h
View file @
225b563b
...
...
@@ -21,6 +21,8 @@ BTFIXUPDEF_CALL(char *, __irq_itoa, unsigned int)
#define NR_IRQS 15
#define irq_cannonicalize(irq) (irq)
/* Dave Redman (djhr@tadpole.co.uk)
* changed these to function pointers.. it saves cycles and will allow
* the irq dependencies to be split into different files at a later date
...
...
include/asm-sparc/kmap_types.h
View file @
225b563b
...
...
@@ -11,6 +11,8 @@ enum km_type {
KM_BIO_DST_IRQ
,
KM_PTE0
,
KM_PTE1
,
KM_IRQ0
,
KM_IRQ1
,
KM_TYPE_NR
};
...
...
include/asm-sparc/system.h
View file @
225b563b
...
...
@@ -56,6 +56,17 @@ extern unsigned long empty_zero_page;
extern
struct
linux_romvec
*
romvec
;
#define halt() romvec->pv_halt()
extern
void
sun_do_break
(
void
);
extern
int
serial_console
;
extern
int
stop_a_enabled
;
static
__inline__
int
con_is_present
(
void
)
{
return
serial_console
?
0
:
1
;
}
extern
struct
pt_regs
*
kbd_pt_regs
;
/* When a context switch happens we must flush all user windows so that
* the windows of the current process are flushed onto its stack. This
* way the windows are all clean for the next process and the stack
...
...
@@ -113,6 +124,7 @@ extern void fpsave(unsigned long *fpregs, unsigned long *fsr,
"restore; restore; restore; restore; restore; restore; restore"); \
} while(0)
#define finish_arch_switch(rq, next) do{ }while(0)
#define task_running(rq, p) ((rq)->curr == (p))
/* Much care has gone into this code, do not touch it.
*
...
...
@@ -282,9 +294,6 @@ extern void __global_restore_flags(unsigned long flags);
#define cli() local_irq_disable()
#define sti() local_irq_enable()
#define save_flags(x) local_save_flags(x)
#define restore_flags(x) local_irq_restore(x)
#define save_and_cli(x) local_irq_save(x)
#endif
...
...
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