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
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
Hide 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