Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
adb9c9ac
Commit
adb9c9ac
authored
Feb 23, 2006
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc-merge
parents
a80614d1
fb5c594c
Changes
26
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
274 additions
and
973 deletions
+274
-973
arch/powerpc/configs/g5_defconfig
arch/powerpc/configs/g5_defconfig
+71
-103
arch/powerpc/configs/ppc64_defconfig
arch/powerpc/configs/ppc64_defconfig
+71
-102
arch/powerpc/configs/pseries_defconfig
arch/powerpc/configs/pseries_defconfig
+47
-80
arch/powerpc/kernel/crash.c
arch/powerpc/kernel/crash.c
+3
-1
arch/powerpc/kernel/head_32.S
arch/powerpc/kernel/head_32.S
+1
-0
arch/powerpc/kernel/head_64.S
arch/powerpc/kernel/head_64.S
+6
-103
arch/powerpc/kernel/machine_kexec_64.c
arch/powerpc/kernel/machine_kexec_64.c
+3
-7
arch/powerpc/kernel/process.c
arch/powerpc/kernel/process.c
+32
-0
arch/powerpc/kernel/prom_init.c
arch/powerpc/kernel/prom_init.c
+0
-38
arch/powerpc/mm/hash_native_64.c
arch/powerpc/mm/hash_native_64.c
+6
-1
arch/powerpc/mm/hash_utils_64.c
arch/powerpc/mm/hash_utils_64.c
+2
-1
arch/powerpc/oprofile/Kconfig
arch/powerpc/oprofile/Kconfig
+1
-0
arch/powerpc/platforms/iseries/lpevents.c
arch/powerpc/platforms/iseries/lpevents.c
+2
-0
arch/powerpc/platforms/iseries/setup.c
arch/powerpc/platforms/iseries/setup.c
+1
-0
arch/powerpc/platforms/maple/pci.c
arch/powerpc/platforms/maple/pci.c
+2
-2
arch/powerpc/platforms/pseries/Kconfig
arch/powerpc/platforms/pseries/Kconfig
+0
-7
arch/powerpc/sysdev/mpic.c
arch/powerpc/sysdev/mpic.c
+5
-4
arch/ppc/kernel/head.S
arch/ppc/kernel/head.S
+1
-0
arch/ppc/xmon/adb.c
arch/ppc/xmon/adb.c
+0
-212
arch/ppc/xmon/start.c
arch/ppc/xmon/start.c
+3
-166
arch/ppc/xmon/xmon.c
arch/ppc/xmon/xmon.c
+0
-108
drivers/char/hvc_console.c
drivers/char/hvc_console.c
+5
-3
include/asm-powerpc/cputable.h
include/asm-powerpc/cputable.h
+6
-3
include/asm-powerpc/mmu.h
include/asm-powerpc/mmu.h
+1
-0
include/asm-powerpc/reg.h
include/asm-powerpc/reg.h
+3
-30
include/asm-powerpc/thread_info.h
include/asm-powerpc/thread_info.h
+2
-2
No files found.
arch/powerpc/configs/g5_defconfig
View file @
adb9c9ac
This diff is collapsed.
Click to expand it.
arch/powerpc/configs/ppc64_defconfig
View file @
adb9c9ac
This diff is collapsed.
Click to expand it.
arch/powerpc/configs/pseries_defconfig
View file @
adb9c9ac
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.1
5-rc5
#
Tue Dec 20 15:59:40 2005
# Linux kernel version: 2.6.1
6-rc2
#
Fri Feb 10 17:33:32 2006
#
CONFIG_PPC64=y
CONFIG_64BIT=y
...
...
@@ -16,6 +16,10 @@ CONFIG_COMPAT=y
CONFIG_SYSVIPC_COMPAT=y
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_PPC_OF=y
CONFIG_PPC_UDBG_16550=y
# CONFIG_GENERIC_TBSYNC is not set
# CONFIG_DEFAULT_UIMAGE is not set
#
# Processor support
...
...
@@ -33,7 +37,6 @@ CONFIG_NR_CPUS=128
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
CONFIG_CLEAN_COMPILE=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
...
...
@@ -49,8 +52,6 @@ CONFIG_POSIX_MQUEUE=y
CONFIG_SYSCTL=y
CONFIG_AUDIT=y
CONFIG_AUDITSYSCALL=y
CONFIG_HOTPLUG=y
CONFIG_KOBJECT_UEVENT=y
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_CPUSETS=y
...
...
@@ -60,8 +61,10 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
...
...
@@ -70,8 +73,10 @@ CONFIG_CC_ALIGN_FUNCTIONS=0
CONFIG_CC_ALIGN_LABELS=0
CONFIG_CC_ALIGN_LOOPS=0
CONFIG_CC_ALIGN_JUMPS=0
CONFIG_SLAB=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
# CONFIG_SLOB is not set
#
# Loadable module support
...
...
@@ -113,7 +118,6 @@ CONFIG_PPC_PSERIES=y
# CONFIG_PPC_PMAC is not set
# CONFIG_PPC_MAPLE is not set
# CONFIG_PPC_CELL is not set
CONFIG_PPC_OF=y
CONFIG_XICS=y
# CONFIG_U3_DART is not set
CONFIG_MPIC=y
...
...
@@ -123,8 +127,8 @@ CONFIG_RTAS_PROC=y
CONFIG_RTAS_FLASH=m
# CONFIG_MMIO_NVRAM is not set
CONFIG_IBMVIO=y
# CONFIG_IBMEBUS is not set
# CONFIG_PPC_MPC106 is not set
# CONFIG_GENERIC_TBSYNC is not set
# CONFIG_CPU_FREQ is not set
# CONFIG_WANT_EARLY_SERIAL is not set
...
...
@@ -145,6 +149,7 @@ CONFIG_FORCE_MAX_ZONEORDER=13
CONFIG_IOMMU_VMERGE=y
CONFIG_HOTPLUG_CPU=y
CONFIG_KEXEC=y
# CONFIG_CRASH_DUMP is not set
CONFIG_IRQ_ALL_CPUS=y
CONFIG_PPC_SPLPAR=y
CONFIG_EEH=y
...
...
@@ -165,6 +170,7 @@ CONFIG_HAVE_MEMORY_PRESENT=y
CONFIG_SPARSEMEM_EXTREME=y
# CONFIG_MEMORY_HOTPLUG is not set
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_MIGRATION=y
CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
# CONFIG_PPC_64K_PAGES is not set
CONFIG_SCHED_SMT=y
...
...
@@ -209,6 +215,7 @@ CONFIG_NET=y
#
# Networking options
#
# CONFIG_NETDEBUG is not set
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
CONFIG_UNIX=y
...
...
@@ -248,6 +255,7 @@ CONFIG_NETFILTER=y
CONFIG_NETFILTER_NETLINK=y
CONFIG_NETFILTER_NETLINK_QUEUE=m
CONFIG_NETFILTER_NETLINK_LOG=m
# CONFIG_NETFILTER_XTABLES is not set
#
# IP: Netfilter Configuration
...
...
@@ -265,65 +273,6 @@ CONFIG_IP_NF_TFTP=m
CONFIG_IP_NF_AMANDA=m
# CONFIG_IP_NF_PPTP is not set
CONFIG_IP_NF_QUEUE=m
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_LIMIT=m
CONFIG_IP_NF_MATCH_IPRANGE=m
CONFIG_IP_NF_MATCH_MAC=m
CONFIG_IP_NF_MATCH_PKTTYPE=m
CONFIG_IP_NF_MATCH_MARK=m
CONFIG_IP_NF_MATCH_MULTIPORT=m
CONFIG_IP_NF_MATCH_TOS=m
CONFIG_IP_NF_MATCH_RECENT=m
CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_MATCH_DSCP=m
CONFIG_IP_NF_MATCH_AH_ESP=m
CONFIG_IP_NF_MATCH_LENGTH=m
CONFIG_IP_NF_MATCH_TTL=m
CONFIG_IP_NF_MATCH_TCPMSS=m
CONFIG_IP_NF_MATCH_HELPER=m
CONFIG_IP_NF_MATCH_STATE=m
CONFIG_IP_NF_MATCH_CONNTRACK=m
CONFIG_IP_NF_MATCH_OWNER=m
CONFIG_IP_NF_MATCH_ADDRTYPE=m
CONFIG_IP_NF_MATCH_REALM=m
CONFIG_IP_NF_MATCH_SCTP=m
# CONFIG_IP_NF_MATCH_DCCP is not set
CONFIG_IP_NF_MATCH_COMMENT=m
CONFIG_IP_NF_MATCH_CONNMARK=m
CONFIG_IP_NF_MATCH_CONNBYTES=m
CONFIG_IP_NF_MATCH_HASHLIMIT=m
CONFIG_IP_NF_MATCH_STRING=m
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_TARGET_LOG=m
CONFIG_IP_NF_TARGET_ULOG=m
CONFIG_IP_NF_TARGET_TCPMSS=m
CONFIG_IP_NF_TARGET_NFQUEUE=m
CONFIG_IP_NF_NAT=m
CONFIG_IP_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_REDIRECT=m
CONFIG_IP_NF_TARGET_NETMAP=m
CONFIG_IP_NF_TARGET_SAME=m
CONFIG_IP_NF_NAT_SNMP_BASIC=m
CONFIG_IP_NF_NAT_IRC=m
CONFIG_IP_NF_NAT_FTP=m
CONFIG_IP_NF_NAT_TFTP=m
CONFIG_IP_NF_NAT_AMANDA=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_TOS=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_IP_NF_TARGET_DSCP=m
CONFIG_IP_NF_TARGET_MARK=m
CONFIG_IP_NF_TARGET_CLASSIFY=m
CONFIG_IP_NF_TARGET_TTL=m
CONFIG_IP_NF_TARGET_CONNMARK=m
CONFIG_IP_NF_TARGET_CLUSTERIP=m
CONFIG_IP_NF_RAW=m
CONFIG_IP_NF_TARGET_NOTRACK=m
CONFIG_IP_NF_ARPTABLES=m
CONFIG_IP_NF_ARPFILTER=m
CONFIG_IP_NF_ARP_MANGLE=m
#
# DCCP Configuration (EXPERIMENTAL)
...
...
@@ -334,6 +283,11 @@ CONFIG_IP_NF_ARP_MANGLE=m
# SCTP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_SCTP is not set
#
# TIPC Configuration (EXPERIMENTAL)
#
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
...
...
@@ -352,7 +306,6 @@ CONFIG_LLC=y
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
CONFIG_NET_CLS_ROUTE=y
#
# Network testing
...
...
@@ -550,13 +503,7 @@ CONFIG_SCSI_IPR_TRACE=y
CONFIG_SCSI_IPR_DUMP=y
# CONFIG_SCSI_QLOGIC_FC is not set
# CONFIG_SCSI_QLOGIC_1280 is not set
CONFIG_SCSI_QLA2XXX=y
CONFIG_SCSI_QLA21XX=m
CONFIG_SCSI_QLA22XX=m
CONFIG_SCSI_QLA2300=m
CONFIG_SCSI_QLA2322=m
CONFIG_SCSI_QLA6312=m
CONFIG_SCSI_QLA24XX=m
# CONFIG_SCSI_QLA_FC is not set
CONFIG_SCSI_LPFC=m
# CONFIG_SCSI_DC395x is not set
# CONFIG_SCSI_DC390T is not set
...
...
@@ -678,6 +625,7 @@ CONFIG_E1000=y
# CONFIG_R8169 is not set
# CONFIG_SIS190 is not set
# CONFIG_SKGE is not set
# CONFIG_SKY2 is not set
# CONFIG_SK98LIN is not set
# CONFIG_VIA_VELOCITY is not set
CONFIG_TIGON3=y
...
...
@@ -803,6 +751,7 @@ CONFIG_HW_CONSOLE=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
# CONFIG_SERIAL_8250_EXTENDED is not set
#
...
...
@@ -908,6 +857,12 @@ CONFIG_I2C_ALGOBIT=y
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
#
# SPI support
#
# CONFIG_SPI is not set
# CONFIG_SPI_MASTER is not set
#
# Dallas's 1-wire bus
#
...
...
@@ -976,7 +931,6 @@ CONFIG_FB_RADEON_I2C=y
# CONFIG_FB_KYRO is not set
# CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_CYBLA is not set
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_VIRTUAL is not set
...
...
@@ -1061,12 +1015,15 @@ CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_SDDR09 is not set
# CONFIG_USB_STORAGE_SDDR55 is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_STORAGE_ALAUDA is not set
# CONFIG_USB_LIBUSUAL is not set
#
# USB Input Devices
#
CONFIG_USB_HID=y
CONFIG_USB_HIDINPUT=y
# CONFIG_USB_HIDINPUT_POWERBOOK is not set
# CONFIG_HID_FF is not set
CONFIG_USB_HIDDEV=y
# CONFIG_USB_AIPTEK is not set
...
...
@@ -1080,6 +1037,7 @@ CONFIG_USB_HIDDEV=y
# CONFIG_USB_YEALINK is not set
# CONFIG_USB_XPAD is not set
# CONFIG_USB_ATI_REMOTE is not set
# CONFIG_USB_ATI_REMOTE2 is not set
# CONFIG_USB_KEYSPAN_REMOTE is not set
# CONFIG_USB_APPLETOUCH is not set
...
...
@@ -1166,6 +1124,10 @@ CONFIG_INFINIBAND_IPOIB=m
# SN Devices
#
#
# EDAC - error detection and reporting (RAS)
#
#
# File systems
#
...
...
@@ -1200,6 +1162,7 @@ CONFIG_XFS_EXPORT=y
CONFIG_XFS_SECURITY=y
CONFIG_XFS_POSIX_ACL=y
# CONFIG_XFS_RT is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_INOTIFY=y
...
...
@@ -1240,6 +1203,7 @@ CONFIG_HUGETLBFS=y
CONFIG_HUGETLB_PAGE=y
CONFIG_RAMFS=y
# CONFIG_RELAYFS_FS is not set
# CONFIG_CONFIGFS_FS is not set
#
# Miscellaneous filesystems
...
...
@@ -1351,10 +1315,6 @@ CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=m
CONFIG_TEXTSEARCH=y
CONFIG_TEXTSEARCH_KMP=m
CONFIG_TEXTSEARCH_BM=m
CONFIG_TEXTSEARCH_FSM=m
#
# Instrumentation Support
...
...
@@ -1367,18 +1327,20 @@ CONFIG_OPROFILE=y
# Kernel hacking
#
# CONFIG_PRINTK_TIME is not set
CONFIG_DEBUG_KERNEL=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_KERNEL=y
CONFIG_LOG_BUF_SHIFT=17
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_MUTEXES=y
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_INFO is not set
CONFIG_DEBUG_FS=y
# CONFIG_DEBUG_VM is not set
CONFIG_FORCED_INLINING=y
# CONFIG_RCU_TORTURE_TEST is not set
CONFIG_DEBUG_STACKOVERFLOW=y
CONFIG_DEBUG_STACK_USAGE=y
...
...
@@ -1387,6 +1349,11 @@ CONFIG_XMON=y
CONFIG_XMON_DEFAULT=y
CONFIG_IRQSTACKS=y
# CONFIG_BOOTX_TEXT is not set
# CONFIG_PPC_EARLY_DEBUG_LPAR is not set
# CONFIG_PPC_EARLY_DEBUG_G5 is not set
# CONFIG_PPC_EARLY_DEBUG_RTAS is not set
# CONFIG_PPC_EARLY_DEBUG_MAPLE is not set
# CONFIG_PPC_EARLY_DEBUG_ISERIES is not set
#
# Security options
...
...
arch/powerpc/kernel/crash.c
View file @
adb9c9ac
...
...
@@ -134,8 +134,10 @@ static void crash_kexec_prepare_cpus(void)
* the crash CPU will send an IPI and wait for other CPUs to
* respond. If not, proceed the kexec boot even though we failed to
* capture other CPU states.
* Delay of at least 10 seconds.
*/
msecs
=
1000000
;
printk
(
KERN_ALERT
"Sending IPI to other cpus...
\n
"
);
msecs
=
10000
;
while
((
atomic_read
(
&
waiting_for_crash_ipi
)
>
0
)
&&
(
--
msecs
>
0
))
{
barrier
();
mdelay
(
1
);
...
...
arch/powerpc/kernel/head_32.S
View file @
adb9c9ac
...
...
@@ -714,6 +714,7 @@ AltiVecUnavailable:
#ifdef CONFIG_ALTIVEC
bne
load_up_altivec
/*
if
from
user
,
just
load
it
up
*/
#endif /* CONFIG_ALTIVEC */
addi
r3
,
r1
,
STACK_FRAME_OVERHEAD
EXC_XFER_EE_LITE
(0
xf20
,
altivec_unavailable_exception
)
PerformanceMonitor
:
...
...
arch/powerpc/kernel/head_64.S
View file @
adb9c9ac
...
...
@@ -139,7 +139,7 @@ _GLOBAL(__secondary_hold)
ori
r24
,
r24
,
MSR_RI
mtmsrd
r24
/*
RI
on
*/
/
*
Grab
our
linux
cpu
number
*/
/
*
Grab
our
physical
cpu
number
*/
mr
r24
,
r3
/
*
Tell
the
master
cpu
we
're here */
...
...
@@ -153,11 +153,7 @@ _GLOBAL(__secondary_hold)
cmpdi
0
,
r4
,
1
bne
100
b
#ifdef CONFIG_HMT
SET_REG_IMMEDIATE
(
r4
,
.
hmt_init
)
mtctr
r4
bctr
#elif defined(CONFIG_SMP) || defined(CONFIG_KEXEC)
#if defined(CONFIG_SMP) || defined(CONFIG_KEXEC)
LOAD_REG_IMMEDIATE
(
r4
,
.
pSeries_secondary_smp_init
)
mtctr
r4
mr
r3
,
r24
...
...
@@ -319,7 +315,6 @@ exception_marker:
label
##
_pSeries
:
\
HMT_MEDIUM
; \
mtspr
SPRN_SPRG1
,
r13
; /* save r13 */ \
RUNLATCH_ON
(
r13
)
; \
EXCEPTION_PROLOG_PSERIES
(
PACA_EXGEN
,
label
##
_common
)
#define STD_EXCEPTION_ISERIES(n, label, area) \
...
...
@@ -327,7 +322,6 @@ label##_pSeries: \
label
##
_iSeries
:
\
HMT_MEDIUM
; \
mtspr
SPRN_SPRG1
,
r13
; /* save r13 */ \
RUNLATCH_ON
(
r13
)
; \
EXCEPTION_PROLOG_ISERIES_1
(
area
)
; \
EXCEPTION_PROLOG_ISERIES_2
; \
b
label
##
_common
...
...
@@ -337,7 +331,6 @@ label##_iSeries: \
label
##
_iSeries
:
\
HMT_MEDIUM
; \
mtspr
SPRN_SPRG1
,
r13
; /* save r13 */ \
RUNLATCH_ON
(
r13
)
; \
EXCEPTION_PROLOG_ISERIES_1
(
PACA_EXGEN
)
; \
lbz
r10
,
PACAPROCENABLED
(
r13
)
; \
cmpwi
0
,
r10
,
0
; \
...
...
@@ -390,6 +383,7 @@ label##_common: \
label
##
_common
:
\
EXCEPTION_PROLOG_COMMON
(
trap
,
PACA_EXGEN
)
; \
DISABLE_INTS
; \
bl
.
ppc64_runlatch_on
; \
addi
r3
,
r1
,
STACK_FRAME_OVERHEAD
; \
bl
hdlr
; \
b
.
ret_from_except_lite
...
...
@@ -407,7 +401,6 @@ __start_interrupts:
_machine_check_pSeries
:
HMT_MEDIUM
mtspr
SPRN_SPRG1
,
r13
/*
save
r13
*/
RUNLATCH_ON
(
r13
)
EXCEPTION_PROLOG_PSERIES
(
PACA_EXMC
,
machine_check_common
)
.
=
0x300
...
...
@@ -434,7 +427,6 @@ END_FTR_SECTION_IFCLR(CPU_FTR_SLB)
data_access_slb_pSeries
:
HMT_MEDIUM
mtspr
SPRN_SPRG1
,
r13
RUNLATCH_ON
(
r13
)
mfspr
r13
,
SPRN_SPRG3
/*
get
paca
address
into
r13
*/
std
r3
,
PACA_EXSLB
+
EX_R3
(
r13
)
mfspr
r3
,
SPRN_DAR
...
...
@@ -460,7 +452,6 @@ data_access_slb_pSeries:
instruction_access_slb_pSeries
:
HMT_MEDIUM
mtspr
SPRN_SPRG1
,
r13
RUNLATCH_ON
(
r13
)
mfspr
r13
,
SPRN_SPRG3
/*
get
paca
address
into
r13
*/
std
r3
,
PACA_EXSLB
+
EX_R3
(
r13
)
mfspr
r3
,
SPRN_SRR0
/*
SRR0
is
faulting
address
*/
...
...
@@ -491,7 +482,6 @@ instruction_access_slb_pSeries:
.
globl
system_call_pSeries
system_call_pSeries
:
HMT_MEDIUM
RUNLATCH_ON
(
r9
)
mr
r9
,
r13
mfmsr
r10
mfspr
r13
,
SPRN_SPRG3
...
...
@@ -575,7 +565,6 @@ slb_miss_user_pseries:
system_reset_fwnmi
:
HMT_MEDIUM
mtspr
SPRN_SPRG1
,
r13
/*
save
r13
*/
RUNLATCH_ON
(
r13
)
EXCEPTION_PROLOG_PSERIES
(
PACA_EXGEN
,
system_reset_common
)
.
globl
machine_check_fwnmi
...
...
@@ -583,7 +572,6 @@ system_reset_fwnmi:
machine_check_fwnmi
:
HMT_MEDIUM
mtspr
SPRN_SPRG1
,
r13
/*
save
r13
*/
RUNLATCH_ON
(
r13
)
EXCEPTION_PROLOG_PSERIES
(
PACA_EXMC
,
machine_check_common
)
#ifdef CONFIG_PPC_ISERIES
...
...
@@ -894,7 +882,6 @@ unrecov_fer:
.
align
7
.
globl
data_access_common
data_access_common
:
RUNLATCH_ON
(
r10
)
/*
It
wont
fit
in
the
0x300
handler
*/
mfspr
r10
,
SPRN_DAR
std
r10
,
PACA_EXGEN
+
EX_DAR
(
r13
)
mfspr
r10
,
SPRN_DSISR
...
...
@@ -1042,6 +1029,7 @@ hardware_interrupt_common:
EXCEPTION_PROLOG_COMMON
(0
x500
,
PACA_EXGEN
)
hardware_interrupt_entry
:
DISABLE_INTS
bl
.
ppc64_runlatch_on
addi
r3
,
r1
,
STACK_FRAME_OVERHEAD
bl
.
do_IRQ
b
.
ret_from_except_lite
...
...
@@ -1816,22 +1804,6 @@ _STATIC(start_here_multiplatform)
ori
r6
,
r6
,
MSR_RI
mtmsrd
r6
/*
RI
on
*/
#ifdef CONFIG_HMT
/
*
Start
up
the
second
thread
on
cpu
0
*/
mfspr
r3
,
SPRN_PVR
srwi
r3
,
r3
,
16
cmpwi
r3
,
0x34
/*
Pulsar
*/
beq
90
f
cmpwi
r3
,
0x36
/*
Icestar
*/
beq
90
f
cmpwi
r3
,
0x37
/*
SStar
*/
beq
90
f
b
91
f
/*
HMT
not
supported
*/
90
:
li
r3
,
0
bl
.
hmt_start_secondary
91
:
#endif
/
*
The
following
gets
the
stack
and
TOC
set
up
with
the
regs
*/
/
*
pointing
to
the
real
addr
of
the
kernel
stack
.
This
is
*/
/
*
all
done
to
support
the
C
function
call
below
which
sets
*/
...
...
@@ -1945,77 +1917,8 @@ _STATIC(start_here_common)
bl
.
start_kernel
_GLOBAL
(
hmt_init
)
#ifdef CONFIG_HMT
LOAD_REG_IMMEDIATE
(
r5
,
hmt_thread_data
)
mfspr
r7
,
SPRN_PVR
srwi
r7
,
r7
,
16
cmpwi
r7
,
0x34
/*
Pulsar
*/
beq
90
f
cmpwi
r7
,
0x36
/*
Icestar
*/
beq
91
f
cmpwi
r7
,
0x37
/*
SStar
*/
beq
91
f
b
101
f
90
:
mfspr
r6
,
SPRN_PIR
andi
.
r6
,
r6
,
0x1f
b
92
f
91
:
mfspr
r6
,
SPRN_PIR
andi
.
r6
,
r6
,
0x3ff
92
:
sldi
r4
,
r24
,
3
stwx
r6
,
r5
,
r4
bl
.
hmt_start_secondary
b
101
f
__hmt_secondary_hold
:
LOAD_REG_IMMEDIATE
(
r5
,
hmt_thread_data
)
clrldi
r5
,
r5
,
4
li
r7
,
0
mfspr
r6
,
SPRN_PIR
mfspr
r8
,
SPRN_PVR
srwi
r8
,
r8
,
16
cmpwi
r8
,
0x34
bne
93
f
andi
.
r6
,
r6
,
0x1f
b
103
f
93
:
andi
.
r6
,
r6
,
0x3f
103
:
lwzx
r8
,
r5
,
r7
cmpw
r8
,
r6
beq
104
f
addi
r7
,
r7
,
8
b
103
b
104
:
addi
r7
,
r7
,
4
lwzx
r9
,
r5
,
r7
mr
r24
,
r9
101
:
#endif
mr
r3
,
r24
b
.
pSeries_secondary_smp_init
#ifdef CONFIG_HMT
_GLOBAL
(
hmt_start_secondary
)
LOAD_REG_IMMEDIATE
(
r4
,
__hmt_secondary_hold
)
clrldi
r4
,
r4
,
4
mtspr
SPRN_NIADORM
,
r4
mfspr
r4
,
SPRN_MSRDORM
li
r5
,
-
65
and
r4
,
r4
,
r5
mtspr
SPRN_MSRDORM
,
r4
lis
r4
,
0xffef
ori
r4
,
r4
,
0x7403
mtspr
SPRN_TSC
,
r4
li
r4
,
0x1f4
mtspr
SPRN_TST
,
r4
mfspr
r4
,
SPRN_HID0
ori
r4
,
r4
,
0x1
mtspr
SPRN_HID0
,
r4
mfspr
r4
,
SPRN_CTRLF
oris
r4
,
r4
,
0x40
mtspr
SPRN_CTRLT
,
r4
blr
#endif
/
*
Not
reached
*/
BUG_OPCODE
/*
*
We
put
a
few
things
here
that
have
to
be
page
-
aligned
.
...
...
arch/powerpc/kernel/machine_kexec_64.c
View file @
adb9c9ac
...
...
@@ -26,8 +26,6 @@
#include <asm/prom.h>
#include <asm/smp.h>
#define HASH_GROUP_SIZE 0x80
/* size of each hash group, asm/mmu.h */
int
default_machine_kexec_prepare
(
struct
kimage
*
image
)
{
int
i
;
...
...
@@ -61,7 +59,7 @@ int default_machine_kexec_prepare(struct kimage *image)
*/
if
(
htab_address
)
{
low
=
__pa
(
htab_address
);
high
=
low
+
(
htab_hash_mask
+
1
)
*
HASH_GROUP_SIZE
;
high
=
low
+
htab_size_bytes
;
for
(
i
=
0
;
i
<
image
->
nr_segments
;
i
++
)
{
begin
=
image
->
segment
[
i
].
mem
;
...
...
@@ -294,7 +292,7 @@ void default_machine_kexec(struct kimage *image)
}
/* Values we need to export to the second kernel via the device tree. */
static
unsigned
long
htab_base
,
htab_size
,
kernel_end
;
static
unsigned
long
htab_base
,
kernel_end
;
static
struct
property
htab_base_prop
=
{
.
name
=
"linux,htab-base"
,
...
...
@@ -305,7 +303,7 @@ static struct property htab_base_prop = {
static
struct
property
htab_size_prop
=
{
.
name
=
"linux,htab-size"
,
.
length
=
sizeof
(
unsigned
long
),
.
value
=
(
unsigned
char
*
)
&
htab_size
,
.
value
=
(
unsigned
char
*
)
&
htab_size
_bytes
,
};
static
struct
property
kernel_end_prop
=
{
...
...
@@ -331,8 +329,6 @@ static void __init export_htab_values(void)
htab_base
=
__pa
(
htab_address
);
prom_add_property
(
node
,
&
htab_base_prop
);
htab_size
=
1UL
<<
ppc64_pft_size
;
prom_add_property
(
node
,
&
htab_size_prop
);
out:
...
...
arch/powerpc/kernel/process.c
View file @
adb9c9ac
...
...
@@ -888,3 +888,35 @@ void dump_stack(void)
show_stack
(
current
,
NULL
);
}
EXPORT_SYMBOL
(
dump_stack
);
#ifdef CONFIG_PPC64
void
ppc64_runlatch_on
(
void
)
{
unsigned
long
ctrl
;
if
(
cpu_has_feature
(
CPU_FTR_CTRL
)
&&
!
test_thread_flag
(
TIF_RUNLATCH
))
{
HMT_medium
();
ctrl
=
mfspr
(
SPRN_CTRLF
);
ctrl
|=
CTRL_RUNLATCH
;
mtspr
(
SPRN_CTRLT
,
ctrl
);
set_thread_flag
(
TIF_RUNLATCH
);
}
}
void
ppc64_runlatch_off
(
void
)
{
unsigned
long
ctrl
;
if
(
cpu_has_feature
(
CPU_FTR_CTRL
)
&&
test_thread_flag
(
TIF_RUNLATCH
))
{
HMT_medium
();
clear_thread_flag
(
TIF_RUNLATCH
);
ctrl
=
mfspr
(
SPRN_CTRLF
);
ctrl
&=
~
CTRL_RUNLATCH
;
mtspr
(
SPRN_CTRLT
,
ctrl
);
}
}
#endif
arch/powerpc/kernel/prom_init.c
View file @
adb9c9ac
...
...
@@ -205,14 +205,6 @@ static cell_t __initdata regbuf[1024];
#define MAX_CPU_THREADS 2
/* TO GO */
#ifdef CONFIG_HMT
struct
{
unsigned
int
pir
;
unsigned
int
threadid
;
}
hmt_thread_data
[
NR_CPUS
];
#endif
/* CONFIG_HMT */
/*
* Error results ... some OF calls will return "-1" on error, some
* will return 0, some will return either. To simplify, here are
...
...
@@ -1319,10 +1311,6 @@ static void __init prom_hold_cpus(void)
*/
*
spinloop
=
0
;
#ifdef CONFIG_HMT
for
(
i
=
0
;
i
<
NR_CPUS
;
i
++
)
RELOC
(
hmt_thread_data
)[
i
].
pir
=
0xdeadbeef
;
#endif
/* look for cpus */
for
(
node
=
0
;
prom_next_node
(
&
node
);
)
{
type
[
0
]
=
0
;
...
...
@@ -1389,32 +1377,6 @@ static void __init prom_hold_cpus(void)
/* Reserve cpu #s for secondary threads. They start later. */
cpuid
+=
cpu_threads
;
}
#ifdef CONFIG_HMT
/* Only enable HMT on processors that provide support. */
if
(
__is_processor
(
PV_PULSAR
)
||
__is_processor
(
PV_ICESTAR
)
||
__is_processor
(
PV_SSTAR
))
{
prom_printf
(
" starting secondary threads
\n
"
);
for
(
i
=
0
;
i
<
NR_CPUS
;
i
+=
2
)
{
if
(
!
cpu_online
(
i
))
continue
;
if
(
i
==
0
)
{
unsigned
long
pir
=
mfspr
(
SPRN_PIR
);
if
(
__is_processor
(
PV_PULSAR
))
{
RELOC
(
hmt_thread_data
)[
i
].
pir
=
pir
&
0x1f
;
}
else
{
RELOC
(
hmt_thread_data
)[
i
].
pir
=
pir
&
0x3ff
;
}
}
}
}
else
{
prom_printf
(
"Processor is not HMT capable
\n
"
);
}
#endif
if
(
cpuid
>
NR_CPUS
)
prom_printf
(
"WARNING: maximum CPUs ("
__stringify
(
NR_CPUS
)
...
...
arch/powerpc/mm/hash_native_64.c
View file @
adb9c9ac
...
...
@@ -403,12 +403,17 @@ static void native_hpte_clear(void)
*/
hpte_v
=
hptep
->
v
;
/*
* Call __tlbie() here rather than tlbie() since we
* already hold the native_tlbie_lock.
*/
if
(
hpte_v
&
HPTE_V_VALID
)
{
hptep
->
v
=
0
;
tlbie
(
slot2va
(
hpte_v
,
slot
),
MMU_PAGE_4K
,
0
);
__tlbie
(
slot2va
(
hpte_v
,
slot
),
MMU_PAGE_4K
);
}
}
asm
volatile
(
"eieio; tlbsync; ptesync"
:::
"memory"
);
spin_unlock
(
&
native_tlbie_lock
);
local_irq_restore
(
flags
);
}
...
...
arch/powerpc/mm/hash_utils_64.c
View file @
adb9c9ac
...
...
@@ -88,6 +88,7 @@ static unsigned long _SDR1;
struct
mmu_psize_def
mmu_psize_defs
[
MMU_PAGE_COUNT
];
hpte_t
*
htab_address
;
unsigned
long
htab_size_bytes
;
unsigned
long
htab_hash_mask
;
int
mmu_linear_psize
=
MMU_PAGE_4K
;
int
mmu_virtual_psize
=
MMU_PAGE_4K
;
...
...
@@ -399,7 +400,7 @@ void create_section_mapping(unsigned long start, unsigned long end)
void
__init
htab_initialize
(
void
)
{
unsigned
long
table
,
htab_size_bytes
;
unsigned
long
table
;
unsigned
long
pteg_count
;
unsigned
long
mode_rw
;
unsigned
long
base
=
0
,
size
=
0
;
...
...
arch/powerpc/oprofile/Kconfig
View file @
adb9c9ac
config PROFILING
depends on !PPC_ISERIES
bool "Profiling support (EXPERIMENTAL)"
help
Say Y here to enable the extended profiling support mechanisms used
...
...
arch/powerpc/platforms/iseries/lpevents.c
View file @
adb9c9ac
...
...
@@ -184,6 +184,8 @@ void setup_hvlpevent_queue(void)
{
void
*
eventStack
;
spin_lock_init
(
&
hvlpevent_queue
.
lock
);
/* Allocate a page for the Event Stack. */
eventStack
=
alloc_bootmem_pages
(
LpEventStackSize
);
memset
(
eventStack
,
0
,
LpEventStackSize
);
...
...
arch/powerpc/platforms/iseries/setup.c
View file @
adb9c9ac
...
...
@@ -648,6 +648,7 @@ static void yield_shared_processor(void)
* here and let the timer_interrupt code sort out the actual time.
*/
get_lppaca
()
->
int_dword
.
fields
.
decr_int
=
1
;
ppc64_runlatch_on
();
process_iSeries_events
();
}
...
...
arch/powerpc/platforms/maple/pci.c
View file @
adb9c9ac
...
...
@@ -435,8 +435,8 @@ void __init maple_pci_init(void)
PCI_DN
(
np
)
->
busno
=
0xf0
;
}
/* Tell pci.c to
use the common resource allocation mecanism
*/
pci_probe_only
=
0
;
/* Tell pci.c to
not change any resource allocations.
*/
pci_probe_only
=
1
;
/* Allow all IO */
io_page_mask
=
-
1
;
...
...
arch/powerpc/platforms/pseries/Kconfig
View file @
adb9c9ac
...
...
@@ -9,13 +9,6 @@ config PPC_SPLPAR
processors, that is, which share physical processors between
two or more partitions.
config HMT
bool "Hardware multithreading"
depends on SMP && PPC_PSERIES && BROKEN
help
This option enables hardware multithreading on RS64 cpus.
pSeries systems p620 and p660 have such a cpu type.
config EEH
bool "PCI Extended Error Handling (EEH)" if EMBEDDED
depends on PPC_PSERIES
...
...
arch/powerpc/sysdev/mpic.c
View file @
adb9c9ac
...
...
@@ -234,7 +234,7 @@ static void mpic_shutdown_ht_interrupt(struct mpic *mpic, unsigned int source,
spin_lock_irqsave
(
&
mpic
->
fixup_lock
,
flags
);
writeb
(
0x10
+
2
*
fixup
->
index
,
fixup
->
base
+
2
);
tmp
=
readl
(
fixup
->
base
+
4
);
tmp
&=
~
1U
;
tmp
|=
1
;
writel
(
tmp
,
fixup
->
base
+
4
);
spin_unlock_irqrestore
(
&
mpic
->
fixup_lock
,
flags
);
}
...
...
@@ -446,14 +446,15 @@ static unsigned int mpic_startup_irq(unsigned int irq)
#ifdef CONFIG_MPIC_BROKEN_U3
struct
mpic
*
mpic
=
mpic_from_irq
(
irq
);
unsigned
int
src
=
irq
-
mpic
->
irq_offset
;
#endif
/* CONFIG_MPIC_BROKEN_U3 */
mpic_enable_irq
(
irq
);
#ifdef CONFIG_MPIC_BROKEN_U3
if
(
mpic_is_ht_interrupt
(
mpic
,
src
))
mpic_startup_ht_interrupt
(
mpic
,
src
,
irq_desc
[
irq
].
status
);
#endif
/* CONFIG_MPIC_BROKEN_U3 */
mpic_enable_irq
(
irq
);
return
0
;
}
...
...
arch/ppc/kernel/head.S
View file @
adb9c9ac
...
...
@@ -751,6 +751,7 @@ AltiVecUnavailable:
#ifdef CONFIG_ALTIVEC
bne
load_up_altivec
/*
if
from
user
,
just
load
it
up
*/
#endif /* CONFIG_ALTIVEC */
addi
r3
,
r1
,
STACK_FRAME_OVERHEAD
EXC_XFER_EE_LITE
(0
xf20
,
altivec_unavailable_exception
)
#ifdef CONFIG_PPC64BRIDGE
...
...
arch/ppc/xmon/adb.c
deleted
100644 → 0
View file @
a80614d1
/*
* Copyright (C) 1996 Paul Mackerras.
*/
#include "nonstdio.h"
#include "privinst.h"
#define scanhex xmon_scanhex
#define skipbl xmon_skipbl
#define ADB_B (*(volatile unsigned char *)0xf3016000)
#define ADB_SR (*(volatile unsigned char *)0xf3017400)
#define ADB_ACR (*(volatile unsigned char *)0xf3017600)
#define ADB_IFR (*(volatile unsigned char *)0xf3017a00)
static
inline
void
eieio
(
void
)
{
asm
volatile
(
"eieio"
:
:
);
}
#define N_ADB_LOG 1000
struct
adb_log
{
unsigned
char
b
;
unsigned
char
ifr
;
unsigned
char
acr
;
unsigned
int
time
;
}
adb_log
[
N_ADB_LOG
];
int
n_adb_log
;
void
init_adb_log
(
void
)
{
adb_log
[
0
].
b
=
ADB_B
;
adb_log
[
0
].
ifr
=
ADB_IFR
;
adb_log
[
0
].
acr
=
ADB_ACR
;
adb_log
[
0
].
time
=
get_dec
();
n_adb_log
=
0
;
}
void
dump_adb_log
(
void
)
{
unsigned
t
,
t0
;
struct
adb_log
*
ap
;
int
i
;
ap
=
adb_log
;
t0
=
ap
->
time
;
for
(
i
=
0
;
i
<=
n_adb_log
;
++
i
,
++
ap
)
{
t
=
t0
-
ap
->
time
;
printf
(
"b=%x ifr=%x acr=%x at %d.%.7d
\n
"
,
ap
->
b
,
ap
->
ifr
,
ap
->
acr
,
t
/
1000000000
,
(
t
%
1000000000
)
/
100
);
}
}
void
adb_chklog
(
void
)
{
struct
adb_log
*
ap
=
&
adb_log
[
n_adb_log
+
1
];
ap
->
b
=
ADB_B
;
ap
->
ifr
=
ADB_IFR
;
ap
->
acr
=
ADB_ACR
;
if
(
ap
->
b
!=
ap
[
-
1
].
b
||
(
ap
->
ifr
&
4
)
!=
(
ap
[
-
1
].
ifr
&
4
)
||
ap
->
acr
!=
ap
[
-
1
].
acr
)
{
ap
->
time
=
get_dec
();
++
n_adb_log
;
}
}
int
adb_bitwait
(
int
bmask
,
int
bval
,
int
fmask
,
int
fval
)
{
int
i
;
struct
adb_log
*
ap
;
for
(
i
=
10000
;
i
>
0
;
--
i
)
{
adb_chklog
();
ap
=
&
adb_log
[
n_adb_log
];
if
((
ap
->
b
&
bmask
)
==
bval
&&
(
ap
->
ifr
&
fmask
)
==
fval
)
return
0
;
}
return
-
1
;
}
int
adb_wait
(
void
)
{
if
(
adb_bitwait
(
0
,
0
,
4
,
4
)
<
0
)
{
printf
(
"adb: ready wait timeout
\n
"
);
return
-
1
;
}
return
0
;
}
void
adb_readin
(
void
)
{
int
i
,
j
;
unsigned
char
d
[
64
];
if
(
ADB_B
&
8
)
{
printf
(
"ADB_B: %x
\n
"
,
ADB_B
);
return
;
}
i
=
0
;
adb_wait
();
j
=
ADB_SR
;
eieio
();
ADB_B
&=
~
0x20
;
eieio
();
for
(;;)
{
if
(
adb_wait
()
<
0
)
break
;
d
[
i
++
]
=
ADB_SR
;
eieio
();
if
(
ADB_B
&
8
)
break
;
ADB_B
^=
0x10
;
eieio
();
}
ADB_B
|=
0x30
;
if
(
adb_wait
()
==
0
)
j
=
ADB_SR
;
for
(
j
=
0
;
j
<
i
;
++
j
)
printf
(
"%.2x "
,
d
[
j
]);
printf
(
"
\n
"
);
}
int
adb_write
(
unsigned
char
*
d
,
int
i
)
{
int
j
;
unsigned
x
;
if
((
ADB_B
&
8
)
==
0
)
{
printf
(
"r: "
);
adb_readin
();
}
for
(;;)
{
ADB_ACR
=
0x1c
;
eieio
();
ADB_SR
=
d
[
0
];
eieio
();
ADB_B
&=
~
0x20
;
eieio
();
if
(
ADB_B
&
8
)
break
;
ADB_ACR
=
0xc
;
eieio
();
ADB_B
|=
0x20
;
eieio
();
adb_readin
();
}
adb_wait
();
for
(
j
=
1
;
j
<
i
;
++
j
)
{
ADB_SR
=
d
[
j
];
eieio
();
ADB_B
^=
0x10
;
eieio
();
if
(
adb_wait
()
<
0
)
break
;
}
ADB_ACR
=
0xc
;
eieio
();
x
=
ADB_SR
;
eieio
();
ADB_B
|=
0x30
;
return
j
;
}
void
adbcmds
(
void
)
{
char
cmd
;
unsigned
rtcu
,
rtcl
,
dec
,
pdec
,
x
;
int
i
,
j
;
unsigned
char
d
[
64
];
cmd
=
skipbl
();
switch
(
cmd
)
{
case
't'
:
for
(;;)
{
rtcl
=
get_rtcl
();
rtcu
=
get_rtcu
();
dec
=
get_dec
();
printf
(
"rtc u=%u l=%u dec=%x (%d = %d.%.7d)
\n
"
,
rtcu
,
rtcl
,
dec
,
pdec
-
dec
,
(
pdec
-
dec
)
/
1000000000
,
((
pdec
-
dec
)
%
1000000000
)
/
100
);
pdec
=
dec
;
if
(
cmd
==
'x'
)
break
;
while
(
xmon_read
(
stdin
,
&
cmd
,
1
)
!=
1
)
;
}
break
;
case
'r'
:
init_adb_log
();
while
(
adb_bitwait
(
8
,
0
,
0
,
0
)
==
0
)
adb_readin
();
break
;
case
'w'
:
i
=
0
;
while
(
scanhex
(
&
x
))
d
[
i
++
]
=
x
;
init_adb_log
();
j
=
adb_write
(
d
,
i
);
printf
(
"sent %d bytes
\n
"
,
j
);
while
(
adb_bitwait
(
8
,
0
,
0
,
0
)
==
0
)
adb_readin
();
break
;
case
'l'
:
dump_adb_log
();
break
;
}
}
arch/ppc/xmon/start.c
View file @
adb9c9ac
...
...
@@ -6,16 +6,11 @@
#include <asm/machdep.h>
#include <asm/io.h>
#include <asm/page.h>
#include <linux/adb.h>
#include <linux/pmu.h>
#include <linux/cuda.h>
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/sysrq.h>
#include <linux/bitops.h>
#include <asm/xmon.h>
#include <asm/prom.h>
#include <asm/bootx.h>
#include <asm/machdep.h>
#include <asm/errno.h>
#include <asm/processor.h>
...
...
@@ -26,9 +21,7 @@ static volatile unsigned char *sccc, *sccd;
unsigned
int
TXRDY
,
RXRDY
,
DLAB
;
static
int
xmon_expect
(
const
char
*
str
,
unsigned
int
timeout
);
static
int
use_screen
;
static
int
via_modem
;
static
int
xmon_use_sccb
;
#define TB_SPEED 25000000
...
...
@@ -46,47 +39,6 @@ void buf_access(void)
sccd
[
3
]
&=
~
DLAB
;
/* reset DLAB */
}
extern
int
adb_init
(
void
);
#ifdef CONFIG_PPC_CHRP
/*
* This looks in the "ranges" property for the primary PCI host bridge
* to find the physical address of the start of PCI/ISA I/O space.
* It is basically a cut-down version of pci_process_bridge_OF_ranges.
*/
static
unsigned
long
chrp_find_phys_io_base
(
void
)
{
struct
device_node
*
node
;
unsigned
int
*
ranges
;
unsigned
long
base
=
CHRP_ISA_IO_BASE
;
int
rlen
=
0
;
int
np
;
node
=
find_devices
(
"isa"
);
if
(
node
!=
NULL
)
{
node
=
node
->
parent
;
if
(
node
==
NULL
||
node
->
type
==
NULL
||
strcmp
(
node
->
type
,
"pci"
)
!=
0
)
node
=
NULL
;
}
if
(
node
==
NULL
)
node
=
find_devices
(
"pci"
);
if
(
node
==
NULL
)
return
base
;
ranges
=
(
unsigned
int
*
)
get_property
(
node
,
"ranges"
,
&
rlen
);
np
=
prom_n_addr_cells
(
node
)
+
5
;
while
((
rlen
-=
np
*
sizeof
(
unsigned
int
))
>=
0
)
{
if
((
ranges
[
0
]
>>
24
)
==
1
&&
ranges
[
2
]
==
0
)
{
/* I/O space starting at 0, grab the phys base */
base
=
ranges
[
np
-
3
];
break
;
}
ranges
+=
np
;
}
return
base
;
}
#endif
/* CONFIG_PPC_CHRP */
#ifdef CONFIG_MAGIC_SYSRQ
static
void
sysrq_handle_xmon
(
int
key
,
struct
pt_regs
*
regs
,
...
...
@@ -109,22 +61,6 @@ xmon_map_scc(void)
#ifdef CONFIG_PPC_MULTIPLATFORM
volatile
unsigned
char
*
base
;
#ifdef CONFIG_PPC_CHRP
base
=
(
volatile
unsigned
char
*
)
isa_io_base
;
if
(
_machine
==
_MACH_chrp
)
base
=
(
volatile
unsigned
char
*
)
ioremap
(
chrp_find_phys_io_base
(),
0x1000
);
sccc
=
base
+
0x3fd
;
sccd
=
base
+
0x3f8
;
if
(
xmon_use_sccb
)
{
sccc
-=
0x100
;
sccd
-=
0x100
;
}
TXRDY
=
0x20
;
RXRDY
=
1
;
DLAB
=
0x80
;
#endif
/* CONFIG_PPC_CHRP */
#elif defined(CONFIG_GEMINI)
/* should already be mapped by the kernel boot */
sccc
=
(
volatile
unsigned
char
*
)
0xffeffb0d
;
...
...
@@ -143,7 +79,7 @@ xmon_map_scc(void)
register_sysrq_key
(
'x'
,
&
sysrq_xmon_op
);
}
static
int
scc_initialized
=
0
;
static
int
scc_initialized
;
void
xmon_init_scc
(
void
);
...
...
@@ -163,14 +99,6 @@ xmon_write(void *handle, void *ptr, int nb)
break
;
#endif
#ifdef CONFIG_BOOTX_TEXT
if
(
use_screen
)
{
/* write it on the screen */
for
(
i
=
0
;
i
<
nb
;
++
i
)
btext_drawchar
(
*
p
++
);
goto
out
;
}
#endif
if
(
!
scc_initialized
)
xmon_init_scc
();
ct
=
0
;
...
...
@@ -190,7 +118,6 @@ xmon_write(void *handle, void *ptr, int nb)
eieio
();
}
out:
#ifdef CONFIG_SMP
if
(
!
locked
)
clear_bit
(
0
,
&
xmon_write_lock
);
...
...
@@ -199,65 +126,7 @@ xmon_write(void *handle, void *ptr, int nb)
}
int
xmon_wants_key
;
int
xmon_adb_keycode
;
#ifdef CONFIG_BOOTX_TEXT
static
int
xmon_adb_shiftstate
;
static
unsigned
char
xmon_keytab
[
128
]
=
"asdfhgzxcv
\000
bqwer"
/* 0x00 - 0x0f */
"yt123465=97-80]o"
/* 0x10 - 0x1f */
"u[ip
\r
lj'k;
\\
,/nm."
/* 0x20 - 0x2f */
"
\t
`
\177\0\033\0\0\0\0\0\0\0\0\0\0
"
/* 0x30 - 0x3f */
"
\0
.
\0
*
\0
+
\0\0\0\0\0
/
\r\0
-
\0
"
/* 0x40 - 0x4f */
"
\0\000
0123456789
\0\0\0
"
;
/* 0x50 - 0x5f */
static
unsigned
char
xmon_shift_keytab
[
128
]
=
"ASDFHGZXCV
\000
BQWER"
/* 0x00 - 0x0f */
"YT!@#$^%+(&_*)}O"
/* 0x10 - 0x1f */
"U{IP
\r
LJ
\"
K:|<?NM>"
/* 0x20 - 0x2f */
"
\t
~
\177\0\033\0\0\0\0\0\0\0\0\0\0
"
/* 0x30 - 0x3f */
"
\0
.
\0
*
\0
+
\0\0\0\0\0
/
\r\0
-
\0
"
/* 0x40 - 0x4f */
"
\0\000
0123456789
\0\0\0
"
;
/* 0x50 - 0x5f */
static
int
xmon_get_adb_key
(
void
)
{
int
k
,
t
,
on
;
xmon_wants_key
=
1
;
for
(;;)
{
xmon_adb_keycode
=
-
1
;
t
=
0
;
on
=
0
;
do
{
if
(
--
t
<
0
)
{
on
=
1
-
on
;
btext_drawchar
(
on
?
0xdb
:
0x20
);
btext_drawchar
(
'\b'
);
t
=
200000
;
}
do_poll_adb
();
}
while
(
xmon_adb_keycode
==
-
1
);
k
=
xmon_adb_keycode
;
if
(
on
)
btext_drawstring
(
"
\b
"
);
/* test for shift keys */
if
((
k
&
0x7f
)
==
0x38
||
(
k
&
0x7f
)
==
0x7b
)
{
xmon_adb_shiftstate
=
(
k
&
0x80
)
==
0
;
continue
;
}
if
(
k
>=
0x80
)
continue
;
/* ignore up transitions */
k
=
(
xmon_adb_shiftstate
?
xmon_shift_keytab
:
xmon_keytab
)[
k
];
if
(
k
!=
0
)
break
;
}
xmon_wants_key
=
0
;
return
k
;
}
#endif
/* CONFIG_BOOTX_TEXT */
int
xmon_read
(
void
*
handle
,
void
*
ptr
,
int
nb
)
...
...
@@ -265,18 +134,11 @@ xmon_read(void *handle, void *ptr, int nb)
char
*
p
=
ptr
;
int
i
;
#ifdef CONFIG_BOOTX_TEXT
if
(
use_screen
)
{
for
(
i
=
0
;
i
<
nb
;
++
i
)
*
p
++
=
xmon_get_adb_key
();
return
i
;
}
#endif
if
(
!
scc_initialized
)
xmon_init_scc
();
for
(
i
=
0
;
i
<
nb
;
++
i
)
{
while
((
*
sccc
&
RXRDY
)
==
0
)
do_poll_adb
()
;
;
buf_access
();
*
p
++
=
*
sccd
;
}
...
...
@@ -287,7 +149,7 @@ int
xmon_read_poll
(
void
)
{
if
((
*
sccc
&
RXRDY
)
==
0
)
{
do_poll_adb
()
;
;
return
-
1
;
}
buf_access
();
...
...
@@ -297,15 +159,6 @@ xmon_read_poll(void)
void
xmon_init_scc
(
void
)
{
if
(
_machine
==
_MACH_chrp
)
{
sccd
[
3
]
=
0x83
;
eieio
();
/* LCR = 8N1 + DLAB */
sccd
[
0
]
=
12
;
eieio
();
/* DLL = 9600 baud */
sccd
[
1
]
=
0
;
eieio
();
sccd
[
2
]
=
0
;
eieio
();
/* FCR = 0 */
sccd
[
3
]
=
3
;
eieio
();
/* LCR = 8N1 */
sccd
[
1
]
=
0
;
eieio
();
/* IER = 0 */
}
scc_initialized
=
1
;
if
(
via_modem
)
{
for
(;;)
{
...
...
@@ -321,22 +174,6 @@ xmon_init_scc(void)
}
}
#if 0
extern int (*prom_entry)(void *);
int
xmon_exit(void)
{
struct prom_args {
char *service;
} args;
for (;;) {
args.service = "exit";
(*prom_entry)(&args);
}
}
#endif
void
*
xmon_stdin
;
void
*
xmon_stdout
;
...
...
arch/ppc/xmon/xmon.c
View file @
adb9c9ac
...
...
@@ -12,8 +12,6 @@
#include <linux/kallsyms.h>
#include <asm/ptrace.h>
#include <asm/string.h>
#include <asm/prom.h>
#include <asm/bootx.h>
#include <asm/machdep.h>
#include <asm/xmon.h>
#include "nonstdio.h"
...
...
@@ -101,9 +99,6 @@ void cacheflush(void);
static
void
cpu_cmd
(
void
);
#endif
/* CONFIG_SMP */
static
void
csum
(
void
);
#ifdef CONFIG_BOOTX_TEXT
static
void
vidcmds
(
void
);
#endif
static
void
bootcmds
(
void
);
static
void
proccall
(
void
);
static
void
printtime
(
void
);
...
...
@@ -522,11 +517,6 @@ cmds(struct pt_regs *excp)
cpu_cmd
();
break
;
#endif
/* CONFIG_SMP */
#ifdef CONFIG_BOOTX_TEXT
case
'v'
:
vidcmds
();
break
;
#endif
case
'z'
:
bootcmds
();
break
;
...
...
@@ -618,43 +608,6 @@ static void cpu_cmd(void)
}
#endif
/* CONFIG_SMP */
#ifdef CONFIG_BOOTX_TEXT
extern
boot_infos_t
disp_bi
;
static
void
vidcmds
(
void
)
{
int
c
=
inchar
();
unsigned
int
val
,
w
;
extern
int
boot_text_mapped
;
if
(
!
boot_text_mapped
)
return
;
if
(
c
!=
'\n'
&&
scanhex
(
&
val
))
{
switch
(
c
)
{
case
'd'
:
w
=
disp_bi
.
dispDeviceRowBytes
/
(
disp_bi
.
dispDeviceDepth
>>
3
);
disp_bi
.
dispDeviceDepth
=
val
;
disp_bi
.
dispDeviceRowBytes
=
w
*
(
val
>>
3
);
return
;
case
'p'
:
disp_bi
.
dispDeviceRowBytes
=
val
;
return
;
case
'w'
:
disp_bi
.
dispDeviceRect
[
2
]
=
val
;
return
;
case
'h'
:
disp_bi
.
dispDeviceRect
[
3
]
=
val
;
return
;
}
}
printf
(
"W = %d (0x%x) H = %d (0x%x) D = %d (0x%x) P = %d (0x%x)
\n
"
,
disp_bi
.
dispDeviceRect
[
2
],
disp_bi
.
dispDeviceRect
[
2
],
disp_bi
.
dispDeviceRect
[
3
],
disp_bi
.
dispDeviceRect
[
3
],
disp_bi
.
dispDeviceDepth
,
disp_bi
.
dispDeviceDepth
,
disp_bi
.
dispDeviceRowBytes
,
disp_bi
.
dispDeviceRowBytes
);
}
#endif
/* CONFIG_BOOTX_TEXT */
static
unsigned
short
fcstab
[
256
]
=
{
0x0000
,
0x1189
,
0x2312
,
0x329b
,
0x4624
,
0x57ad
,
0x6536
,
0x74bf
,
...
...
@@ -1020,7 +973,6 @@ dump_hash_table(void)
}
#else
#ifndef CONFIG_PPC64BRIDGE
static
void
dump_hash_table_seg
(
unsigned
seg
,
unsigned
start
,
unsigned
end
)
{
...
...
@@ -1079,66 +1031,6 @@ dump_hash_table_seg(unsigned seg, unsigned start, unsigned end)
printf
(
" ... %x
\n
"
,
last_va
);
}
#else
/* CONFIG_PPC64BRIDGE */
static
void
dump_hash_table_seg
(
unsigned
seg
,
unsigned
start
,
unsigned
end
)
{
extern
void
*
Hash
;
extern
unsigned
long
Hash_size
;
unsigned
*
htab
=
Hash
;
unsigned
hsize
=
Hash_size
;
unsigned
v
,
hmask
,
va
,
last_va
;
int
found
,
last_found
,
i
;
unsigned
*
hg
,
w1
,
last_w2
,
last_va0
;
last_found
=
0
;
hmask
=
hsize
/
128
-
1
;
va
=
start
;
start
=
(
start
>>
12
)
&
0xffff
;
end
=
(
end
>>
12
)
&
0xffff
;
for
(
v
=
start
;
v
<
end
;
++
v
)
{
found
=
0
;
hg
=
htab
+
(((
v
^
seg
)
&
hmask
)
*
32
);
w1
=
1
|
(
seg
<<
12
)
|
((
v
&
0xf800
)
>>
4
);
for
(
i
=
0
;
i
<
8
;
++
i
,
hg
+=
4
)
{
if
(
hg
[
1
]
==
w1
)
{
found
=
1
;
break
;
}
}
if
(
!
found
)
{
w1
^=
2
;
hg
=
htab
+
((
~
(
v
^
seg
)
&
hmask
)
*
32
);
for
(
i
=
0
;
i
<
8
;
++
i
,
hg
+=
4
)
{
if
(
hg
[
1
]
==
w1
)
{
found
=
1
;
break
;
}
}
}
if
(
!
(
last_found
&&
found
&&
(
hg
[
3
]
&
~
0x180
)
==
last_w2
+
4096
))
{
if
(
last_found
)
{
if
(
last_va
!=
last_va0
)
printf
(
" ... %x"
,
last_va
);
printf
(
"
\n
"
);
}
if
(
found
)
{
printf
(
"%x to %x"
,
va
,
hg
[
3
]);
last_va0
=
va
;
}
last_found
=
found
;
}
if
(
found
)
{
last_w2
=
hg
[
3
]
&
~
0x180
;
last_va
=
va
;
}
va
+=
4096
;
}
if
(
last_found
)
printf
(
" ... %x
\n
"
,
last_va
);
}
#endif
/* CONFIG_PPC64BRIDGE */
static
unsigned
hash_ctx
;
static
unsigned
hash_start
;
static
unsigned
hash_end
;
...
...
drivers/char/hvc_console.c
View file @
adb9c9ac
...
...
@@ -335,6 +335,8 @@ static int hvc_open(struct tty_struct *tty, struct file * filp)
}
/* else count == 0 */
tty
->
driver_data
=
hp
;
tty
->
low_latency
=
1
;
/* Makes flushes to ldisc synchronous. */
hp
->
tty
=
tty
;
/* Save for request_irq outside of spin_lock. */
irq
=
hp
->
irq
;
...
...
@@ -633,9 +635,6 @@ static int hvc_poll(struct hvc_struct *hp)
tty_insert_flip_char
(
tty
,
buf
[
i
],
0
);
}
if
(
count
)
tty_schedule_flip
(
tty
);
/*
* Account for the total amount read in one loop, and if above
* 64 bytes, we do a quick schedule loop to let the tty grok
...
...
@@ -656,6 +655,9 @@ static int hvc_poll(struct hvc_struct *hp)
bail:
spin_unlock_irqrestore
(
&
hp
->
lock
,
flags
);
if
(
read_total
)
tty_flip_buffer_push
(
tty
);
return
poll_mask
;
}
...
...
include/asm-powerpc/cputable.h
View file @
adb9c9ac
...
...
@@ -159,9 +159,11 @@ extern void do_cpu_ftr_fixups(unsigned long offset);
#endif
/* We need to mark all pages as being coherent if we're SMP or we
* have a 74[45]x and an MPC107 host bridge.
* have a 74[45]x and an MPC107 host bridge. Also 83xx requires
* it for PCI "streaming/prefetch" to work properly.
*/
#if defined(CONFIG_SMP) || defined(CONFIG_MPC10X_BRIDGE)
#if defined(CONFIG_SMP) || defined(CONFIG_MPC10X_BRIDGE) \
|| defined(CONFIG_PPC_83xx)
#define CPU_FTR_COMMON CPU_FTR_NEED_COHERENT
#else
#define CPU_FTR_COMMON 0
...
...
@@ -277,7 +279,8 @@ enum {
CPU_FTRS_G2_LE
=
CPU_FTR_SPLIT_ID_CACHE
|
CPU_FTR_MAYBE_CAN_DOZE
|
CPU_FTR_USE_TB
|
CPU_FTR_MAYBE_CAN_NAP
|
CPU_FTR_HAS_HIGH_BATS
,
CPU_FTRS_E300
=
CPU_FTR_SPLIT_ID_CACHE
|
CPU_FTR_MAYBE_CAN_DOZE
|
CPU_FTR_USE_TB
|
CPU_FTR_MAYBE_CAN_NAP
|
CPU_FTR_HAS_HIGH_BATS
,
CPU_FTR_USE_TB
|
CPU_FTR_MAYBE_CAN_NAP
|
CPU_FTR_HAS_HIGH_BATS
|
CPU_FTR_COMMON
,
CPU_FTRS_CLASSIC32
=
CPU_FTR_COMMON
|
CPU_FTR_SPLIT_ID_CACHE
|
CPU_FTR_USE_TB
|
CPU_FTR_HPTE_TABLE
,
CPU_FTRS_POWER3_32
=
CPU_FTR_COMMON
|
CPU_FTR_SPLIT_ID_CACHE
|
...
...
include/asm-powerpc/mmu.h
View file @
adb9c9ac
...
...
@@ -112,6 +112,7 @@ typedef struct {
}
hpte_t
;
extern
hpte_t
*
htab_address
;
extern
unsigned
long
htab_size_bytes
;
extern
unsigned
long
htab_hash_mask
;
/*
...
...
include/asm-powerpc/reg.h
View file @
adb9c9ac
...
...
@@ -615,27 +615,9 @@
#define proc_trap() asm volatile("trap")
#ifdef CONFIG_PPC64
static
inline
void
ppc64_runlatch_on
(
void
)
{
unsigned
long
ctrl
;
if
(
cpu_has_feature
(
CPU_FTR_CTRL
))
{
ctrl
=
mfspr
(
SPRN_CTRLF
);
ctrl
|=
CTRL_RUNLATCH
;
mtspr
(
SPRN_CTRLT
,
ctrl
);
}
}
static
inline
void
ppc64_runlatch_off
(
void
)
{
unsigned
long
ctrl
;
if
(
cpu_has_feature
(
CPU_FTR_CTRL
))
{
ctrl
=
mfspr
(
SPRN_CTRLF
);
ctrl
&=
~
CTRL_RUNLATCH
;
mtspr
(
SPRN_CTRLT
,
ctrl
);
}
}
extern
void
ppc64_runlatch_on
(
void
);
extern
void
ppc64_runlatch_off
(
void
);
extern
unsigned
long
scom970_read
(
unsigned
int
address
);
extern
void
scom970_write
(
unsigned
int
address
,
unsigned
long
value
);
...
...
@@ -645,15 +627,6 @@ extern void scom970_write(unsigned int address, unsigned long value);
#define __get_SP() ({unsigned long sp; \
asm volatile("mr %0,1": "=r" (sp)); sp;})
#else
/* __ASSEMBLY__ */
#define RUNLATCH_ON(REG) \
BEGIN_FTR_SECTION \
mfspr (REG),SPRN_CTRLF; \
ori (REG),(REG),CTRL_RUNLATCH; \
mtspr SPRN_CTRLT,(REG); \
END_FTR_SECTION_IFSET(CPU_FTR_CTRL)
#endif
/* __ASSEMBLY__ */
#endif
/* __KERNEL__ */
#endif
/* _ASM_POWERPC_REG_H */
include/asm-powerpc/thread_info.h
View file @
adb9c9ac
...
...
@@ -113,7 +113,7 @@ static inline struct thread_info *current_thread_info(void)
#define TIF_POLLING_NRFLAG 4
/* true if poll_idle() is polling
TIF_NEED_RESCHED */
#define TIF_32BIT 5
/* 32 bit binary */
/* #define SPARE 6
*/
#define TIF_RUNLATCH 6
/* Is the runlatch enabled?
*/
#define TIF_ABI_PENDING 7
/* 32/64 bit switch needed */
#define TIF_SYSCALL_AUDIT 8
/* syscall auditing active */
#define TIF_SINGLESTEP 9
/* singlestepping active */
...
...
@@ -131,7 +131,7 @@ static inline struct thread_info *current_thread_info(void)
#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
#define _TIF_32BIT (1<<TIF_32BIT)
/* #define _SPARE (1<<SPARE) */
#define _TIF_RUNLATCH (1<<TIF_RUNLATCH)
#define _TIF_ABI_PENDING (1<<TIF_ABI_PENDING)
#define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT)
#define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP)
...
...
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