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
4fc60fac
Commit
4fc60fac
authored
Oct 08, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://bk.arm.linux.org.uk/linux-2.6-rmk
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
9c733a5a
03631415
Changes
37
Show whitespace changes
Inline
Side-by-side
Showing
37 changed files
with
327 additions
and
417 deletions
+327
-417
arch/i386/kernel/traps.c
arch/i386/kernel/traps.c
+3
-3
arch/ppc/boot/common/util.S
arch/ppc/boot/common/util.S
+8
-8
arch/ppc/boot/openfirmware/misc.S
arch/ppc/boot/openfirmware/misc.S
+1
-1
arch/ppc/boot/simple/misc.c
arch/ppc/boot/simple/misc.c
+1
-1
arch/ppc/boot/simple/relocate.S
arch/ppc/boot/simple/relocate.S
+3
-3
arch/ppc/kernel/cpu_setup_6xx.S
arch/ppc/kernel/cpu_setup_6xx.S
+18
-18
arch/ppc/kernel/entry.S
arch/ppc/kernel/entry.S
+2
-2
arch/ppc/kernel/head.S
arch/ppc/kernel/head.S
+8
-8
arch/ppc/kernel/idle_6xx.S
arch/ppc/kernel/idle_6xx.S
+3
-3
arch/ppc/kernel/idle_power4.S
arch/ppc/kernel/idle_power4.S
+1
-1
arch/ppc/kernel/misc.S
arch/ppc/kernel/misc.S
+6
-6
arch/ppc/lib/checksum.S
arch/ppc/lib/checksum.S
+6
-6
arch/ppc/platforms/4xx/ebony.c
arch/ppc/platforms/4xx/ebony.c
+8
-156
arch/ppc/platforms/4xx/ocotea.c
arch/ppc/platforms/4xx/ocotea.c
+9
-163
arch/ppc/syslib/ibm44x_common.c
arch/ppc/syslib/ibm44x_common.c
+165
-0
arch/ppc/syslib/ibm44x_common.h
arch/ppc/syslib/ibm44x_common.h
+7
-1
arch/ppc64/Kconfig
arch/ppc64/Kconfig
+3
-2
arch/ppc64/kernel/ItLpQueue.c
arch/ppc64/kernel/ItLpQueue.c
+1
-1
arch/ppc64/kernel/entry.S
arch/ppc64/kernel/entry.S
+2
-2
arch/ppc64/kernel/idle_power4.S
arch/ppc64/kernel/idle_power4.S
+1
-1
arch/ppc64/kernel/misc.S
arch/ppc64/kernel/misc.S
+1
-1
arch/ppc64/kernel/ppc_ksyms.c
arch/ppc64/kernel/ppc_ksyms.c
+1
-1
arch/ppc64/kernel/rtas-proc.c
arch/ppc64/kernel/rtas-proc.c
+1
-1
arch/ppc64/lib/checksum.S
arch/ppc64/lib/checksum.S
+7
-7
arch/ppc64/mm/hash_low.S
arch/ppc64/mm/hash_low.S
+4
-4
arch/um/kernel/ptrace.c
arch/um/kernel/ptrace.c
+1
-1
arch/um/kernel/sys_call_table.c
arch/um/kernel/sys_call_table.c
+0
-1
arch/x86_64/ia32/syscall32.c
arch/x86_64/ia32/syscall32.c
+2
-1
arch/x86_64/kernel/setup64.c
arch/x86_64/kernel/setup64.c
+2
-1
drivers/cdrom/cdrom.c
drivers/cdrom/cdrom.c
+16
-0
drivers/macintosh/ans-lcd.c
drivers/macintosh/ans-lcd.c
+4
-2
fs/hostfs/hostfs.h
fs/hostfs/hostfs.h
+1
-1
fs/hostfs/hostfs_kern.c
fs/hostfs/hostfs_kern.c
+11
-5
fs/hostfs/hostfs_user.c
fs/hostfs/hostfs_user.c
+7
-3
include/asm-um/uaccess.h
include/asm-um/uaccess.h
+1
-1
kernel/sched.c
kernel/sched.c
+1
-1
mm/vmscan.c
mm/vmscan.c
+11
-0
No files found.
arch/i386/kernel/traps.c
View file @
4fc60fac
...
...
@@ -422,7 +422,7 @@ static inline void do_trap(int trapnr, int signr, char *str, int vm86,
asmlinkage void do_##name(struct pt_regs * regs, long error_code) \
{ \
if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) \
== NOTIFY_
OK
) \
== NOTIFY_
STOP
) \
return; \
do_trap(trapnr, signr, str, 0, regs, error_code, NULL); \
}
...
...
@@ -436,7 +436,7 @@ asmlinkage void do_##name(struct pt_regs * regs, long error_code) \
info.si_code = sicode; \
info.si_addr = (void __user *)siaddr; \
if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) \
== NOTIFY_
BAD
) \
== NOTIFY_
STOP
) \
return; \
do_trap(trapnr, signr, str, 0, regs, error_code, &info); \
}
...
...
@@ -445,7 +445,7 @@ asmlinkage void do_##name(struct pt_regs * regs, long error_code) \
asmlinkage void do_##name(struct pt_regs * regs, long error_code) \
{ \
if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) \
== NOTIFY_
OK
) \
== NOTIFY_
STOP
) \
return; \
do_trap(trapnr, signr, str, 1, regs, error_code, NULL); \
}
...
...
arch/ppc/boot/common/util.S
View file @
4fc60fac
...
...
@@ -41,7 +41,7 @@ disable_6xx_mmu:
/
*
Test
for
a
601
*/
mfpvr
r10
srwi
r10
,
r10
,
16
cmpi
0
,
r10
,
1
/*
601
?
*/
cmp
w
i
0
,
r10
,
1
/*
601
?
*/
beq
.
clearbats_601
/
*
Clear
BATs
*/
...
...
@@ -117,9 +117,9 @@ _setup_L2CR:
/
*
Wait
for
the
invalidation
to
complete
*/
mfspr
r8
,
PVR
srwi
r8
,
r8
,
16
cmpli
cr0
,
r8
,
0x8000
/*
7450
*/
cmpli
cr1
,
r8
,
0x8001
/*
7455
*/
cmpli
cr2
,
r8
,
0x8002
/*
7457
*/
cmpl
w
i
cr0
,
r8
,
0x8000
/*
7450
*/
cmpl
w
i
cr1
,
r8
,
0x8001
/*
7455
*/
cmpl
w
i
cr2
,
r8
,
0x8002
/*
7457
*/
cror
4
*
cr0
+
eq
,
4
*
cr0
+
eq
,
4
*
cr1
+
eq
/*
Now
test
if
any
are
true
.
*/
cror
4
*
cr0
+
eq
,
4
*
cr0
+
eq
,
4
*
cr2
+
eq
bne
2
f
...
...
@@ -190,7 +190,7 @@ timebase_period_ns:
udelay
:
mfspr
r4
,
PVR
srwi
r4
,
r4
,
16
cmpi
0
,
r4
,
1
/*
601
?
*/
cmp
w
i
0
,
r4
,
1
/*
601
?
*/
bne
.
udelay_not_601
00
:
li
r0
,
86
/*
Instructions
/
microsecond
?
*/
mtctr
r0
...
...
@@ -213,16 +213,16 @@ udelay:
1
:
mftbu
r5
mftb
r6
mftbu
r7
cmp
0
,
r5
,
r7
cmp
w
0
,
r5
,
r7
bne
1
b
/*
Get
[
synced
]
base
time
*/
addc
r9
,
r6
,
r4
/*
Compute
end
time
*/
addze
r8
,
r5
2
:
mftbu
r5
cmp
0
,
r5
,
r8
cmp
w
0
,
r5
,
r8
blt
2
b
bgt
3
f
mftb
r6
cmp
0
,
r6
,
r9
cmp
w
0
,
r6
,
r9
blt
2
b
3
:
blr
...
...
arch/ppc/boot/openfirmware/misc.S
View file @
4fc60fac
...
...
@@ -16,7 +16,7 @@
setup_bats
:
mfpvr
5
rlwinm
5
,
5
,
16
,
16
,
31
/*
r3
=
1
for
601
,
4
for
604
*/
cmpi
0
,
5
,
1
cmp
w
i
0
,
5
,
1
li
0
,
0
bne
4
f
mtibatl
3
,
0
/*
invalidate
BAT
first
*/
...
...
arch/ppc/boot/simple/misc.c
View file @
4fc60fac
...
...
@@ -96,7 +96,7 @@ decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum)
#endif
char
*
cp
;
struct
bi_record
*
rec
;
unsigned
long
initrd_loc
,
TotalMemory
=
0
;
unsigned
long
initrd_loc
=
0
,
TotalMemory
=
0
;
#ifdef CONFIG_SERIAL_8250_CONSOLE
com_port
=
serial_init
(
0
,
NULL
);
...
...
arch/ppc/boot/simple/relocate.S
View file @
4fc60fac
...
...
@@ -50,7 +50,7 @@ relocate:
*
Check
if
we
need
to
relocate
ourselves
to
the
link
addr
or
were
*
we
loaded
there
to
begin
with
.
*/
cmp
cr0
,
r3
,
r4
cmp
w
cr0
,
r3
,
r4
beq
start_ldr
/*
If
0
,
we
don
't need to relocate */
/
*
Move
this
code
somewhere
safe
.
This
is
max
(
load
+
size
,
end
)
...
...
@@ -122,7 +122,7 @@ do_relocate:
GETSYM
(
r4
,
start
)
mr
r3
,
r8
/*
Get
the
load
addr
*/
cmp
cr0
,
r4
,
r3
/*
If
we
need
to
copy
from
the
end
,
do
so
*/
cmp
w
cr0
,
r4
,
r3
/*
If
we
need
to
copy
from
the
end
,
do
so
*/
bgt
do_relocate_from_end
do_relocate_from_start
:
...
...
@@ -165,7 +165,7 @@ start_ldr:
subi
r4
,
r4
,
4
li
r0
,
0
50
:
stwu
r0
,
4
(
r3
)
cmp
cr0
,
r3
,
r4
cmp
w
cr0
,
r3
,
r4
bne
50
b
90
:
mr
r9
,
r1
/*
Save
old
stack
pointer
(
in
case
it
matters
)
*/
lis
r1
,
.
stack
@
h
...
...
arch/ppc/kernel/cpu_setup_6xx.S
View file @
4fc60fac
...
...
@@ -172,9 +172,9 @@ END_FTR_SECTION_IFCLR(CPU_FTR_NO_DPM)
setup_750cx
:
mfspr
r10
,
SPRN_HID1
rlwinm
r10
,
r10
,
4
,
28
,
31
cmpi
cr0
,
r10
,
7
cmpi
cr1
,
r10
,
9
cmpi
cr2
,
r10
,
11
cmp
w
i
cr0
,
r10
,
7
cmp
w
i
cr1
,
r10
,
9
cmp
w
i
cr2
,
r10
,
11
cror
4
*
cr0
+
eq
,
4
*
cr0
+
eq
,
4
*
cr1
+
eq
cror
4
*
cr0
+
eq
,
4
*
cr0
+
eq
,
4
*
cr2
+
eq
bnelr
...
...
@@ -287,12 +287,12 @@ _GLOBAL(__save_cpu_setup)
/
*
Now
deal
with
CPU
type
dependent
registers
*/
mfspr
r3
,
PVR
srwi
r3
,
r3
,
16
cmpli
cr0
,
r3
,
0x8000
/*
7450
*/
cmpli
cr1
,
r3
,
0x000c
/*
7400
*/
cmpli
cr2
,
r3
,
0x800c
/*
7410
*/
cmpli
cr3
,
r3
,
0x8001
/*
7455
*/
cmpli
cr4
,
r3
,
0x8002
/*
7457
*/
cmpli
cr5
,
r3
,
0x7000
/*
750
FX
*/
cmpl
w
i
cr0
,
r3
,
0x8000
/*
7450
*/
cmpl
w
i
cr1
,
r3
,
0x000c
/*
7400
*/
cmpl
w
i
cr2
,
r3
,
0x800c
/*
7410
*/
cmpl
w
i
cr3
,
r3
,
0x8001
/*
7455
*/
cmpl
w
i
cr4
,
r3
,
0x8002
/*
7457
*/
cmpl
w
i
cr5
,
r3
,
0x7000
/*
750
FX
*/
/
*
cr1
is
7400
||
7410
*/
cror
4
*
cr1
+
eq
,
4
*
cr1
+
eq
,
4
*
cr2
+
eq
/
*
cr0
is
74
xx
*/
...
...
@@ -323,7 +323,7 @@ _GLOBAL(__save_cpu_setup)
/
*
If
rev
2
.
x
,
backup
HID2
*/
mfspr
r3
,
PVR
andi
.
r3
,
r3
,
0xff00
cmpi
cr0
,
r3
,
0x0200
cmp
w
i
cr0
,
r3
,
0x0200
bne
1
f
mfspr
r4
,
SPRN_HID2
stw
r4
,
CS_HID2
(
r5
)
...
...
@@ -354,12 +354,12 @@ _GLOBAL(__restore_cpu_setup)
/
*
Now
deal
with
CPU
type
dependent
registers
*/
mfspr
r3
,
PVR
srwi
r3
,
r3
,
16
cmpli
cr0
,
r3
,
0x8000
/*
7450
*/
cmpli
cr1
,
r3
,
0x000c
/*
7400
*/
cmpli
cr2
,
r3
,
0x800c
/*
7410
*/
cmpli
cr3
,
r3
,
0x8001
/*
7455
*/
cmpli
cr4
,
r3
,
0x8002
/*
7457
*/
cmpli
cr5
,
r3
,
0x7000
/*
750
FX
*/
cmpl
w
i
cr0
,
r3
,
0x8000
/*
7450
*/
cmpl
w
i
cr1
,
r3
,
0x000c
/*
7400
*/
cmpl
w
i
cr2
,
r3
,
0x800c
/*
7410
*/
cmpl
w
i
cr3
,
r3
,
0x8001
/*
7455
*/
cmpl
w
i
cr4
,
r3
,
0x8002
/*
7457
*/
cmpl
w
i
cr5
,
r3
,
0x7000
/*
750
FX
*/
/
*
cr1
is
7400
||
7410
*/
cror
4
*
cr1
+
eq
,
4
*
cr1
+
eq
,
4
*
cr2
+
eq
/
*
cr0
is
74
xx
*/
...
...
@@ -412,7 +412,7 @@ _GLOBAL(__restore_cpu_setup)
/
*
If
rev
2
.
x
,
restore
HID2
with
low
voltage
bit
cleared
*/
mfspr
r3
,
PVR
andi
.
r3
,
r3
,
0xff00
cmpi
cr0
,
r3
,
0x0200
cmp
w
i
cr0
,
r3
,
0x0200
bne
4
f
lwz
r4
,
CS_HID2
(
r5
)
rlwinm
r4
,
r4
,
0
,
19
,
17
...
...
@@ -426,7 +426,7 @@ _GLOBAL(__restore_cpu_setup)
mftbl
r5
3
:
mftbl
r6
sub
r6
,
r6
,
r5
cmpli
cr0
,
r6
,
10000
cmpl
w
i
cr0
,
r6
,
10000
ble
3
b
/
*
Setup
final
PLL
*/
mtspr
SPRN_HID1
,
r4
...
...
arch/ppc/kernel/entry.S
View file @
4fc60fac
...
...
@@ -206,7 +206,7 @@ _GLOBAL(DoSyscall)
andi
.
r11
,
r11
,
_TIF_SYSCALL_TRACE
bne
-
syscall_dotrace
syscall_dotrace_cont
:
cmpli
0
,
r0
,
NR_syscalls
cmpl
w
i
0
,
r0
,
NR_syscalls
lis
r10
,
sys_call_table
@
h
ori
r10
,
r10
,
sys_call_table
@
l
slwi
r0
,
r0
,
2
...
...
@@ -222,7 +222,7 @@ ret_from_syscall:
#endif
mr
r6
,
r3
li
r11
,-
_LAST_ERRNO
cmpl
0
,
r3
,
r11
cmpl
w
0
,
r3
,
r11
rlwinm
r12
,
r1
,
0
,
0
,
18
/*
current_thread_info
()
*/
blt
+
30
f
lwz
r11
,
TI_LOCAL_FLAGS
(
r12
)
...
...
arch/ppc/kernel/head.S
View file @
4fc60fac
...
...
@@ -800,7 +800,7 @@ load_up_fpu:
tophys
(
r6
,0)
/*
get
__pa
constant
*/
addis
r3
,
r6
,
last_task_used_math
@
ha
lwz
r4
,
last_task_used_math
@
l
(
r3
)
cmpi
0
,
r4
,
0
cmp
w
i
0
,
r4
,
0
beq
1
f
add
r4
,
r4
,
r6
addi
r4
,
r4
,
THREAD
/*
want
last_task_used_math
->
thread
*/
...
...
@@ -927,7 +927,7 @@ load_up_altivec:
tophys
(
r6
,0)
addis
r3
,
r6
,
last_task_used_altivec
@
ha
lwz
r4
,
last_task_used_altivec
@
l
(
r3
)
cmpi
0
,
r4
,
0
cmp
w
i
0
,
r4
,
0
beq
1
f
add
r4
,
r4
,
r6
addi
r4
,
r4
,
THREAD
/*
want
THREAD
of
last_task_used_altivec
*/
...
...
@@ -992,11 +992,11 @@ giveup_altivec:
SYNC
MTMSRD
(
r5
)
/*
enable
use
of
AltiVec
now
*/
isync
cmpi
0
,
r3
,
0
cmp
w
i
0
,
r3
,
0
beqlr
-
/*
if
no
previous
owner
,
done
*/
addi
r3
,
r3
,
THREAD
/*
want
THREAD
of
task
*/
lwz
r5
,
PT_REGS
(
r3
)
cmpi
0
,
r5
,
0
cmp
w
i
0
,
r5
,
0
SAVE_32VR
(0,
r4
,
r3
)
mfvscr
vr0
li
r4
,
THREAD_VSCR
...
...
@@ -1030,11 +1030,11 @@ giveup_fpu:
MTMSRD
(
r5
)
/*
enable
use
of
fpu
now
*/
SYNC_601
isync
cmpi
0
,
r3
,
0
cmp
w
i
0
,
r3
,
0
beqlr
-
/*
if
no
previous
owner
,
done
*/
addi
r3
,
r3
,
THREAD
/*
want
THREAD
of
task
*/
lwz
r5
,
PT_REGS
(
r3
)
cmpi
0
,
r5
,
0
cmp
w
i
0
,
r5
,
0
SAVE_32FPRS
(0,
r3
)
mffs
fr0
stfd
fr0
,
THREAD_FPSCR
-
4
(
r3
)
...
...
@@ -1539,7 +1539,7 @@ initial_bats:
#ifndef CONFIG_PPC64BRIDGE
mfspr
r9
,
PVR
rlwinm
r9
,
r9
,
16
,
16
,
31
/*
r9
=
1
for
601
,
4
for
604
*/
cmpi
0
,
r9
,
1
cmp
w
i
0
,
r9
,
1
bne
4
f
ori
r11
,
r11
,
4
/*
set
up
BAT
registers
for
601
*/
li
r8
,
0x7f
/*
valid
,
block
length
=
8
MB
*/
...
...
@@ -1591,7 +1591,7 @@ setup_disp_bat:
lwz
r8
,
4
(
r8
)
mfspr
r9
,
PVR
rlwinm
r9
,
r9
,
16
,
16
,
31
/*
r9
=
1
for
601
,
4
for
604
*/
cmpi
0
,
r9
,
1
cmp
w
i
0
,
r9
,
1
beq
1
f
mtspr
DBAT3L
,
r8
mtspr
DBAT3U
,
r11
...
...
arch/ppc/kernel/idle_6xx.S
View file @
4fc60fac
...
...
@@ -79,12 +79,12 @@ BEGIN_FTR_SECTION
/
*
Now
check
if
user
or
arch
enabled
NAP
mode
*/
lis
r4
,
powersave_nap
@
ha
lwz
r4
,
powersave_nap
@
l
(
r4
)
cmpi
0
,
r4
,
0
cmp
w
i
0
,
r4
,
0
beq
1
f
lis
r3
,
HID0_NAP
@
h
1
:
END_FTR_SECTION_IFSET
(
CPU_FTR_CAN_NAP
)
cmpi
0
,
r3
,
0
cmp
w
i
0
,
r3
,
0
beqlr
/
*
Clear
MSR
:
EE
*/
...
...
@@ -133,7 +133,7 @@ BEGIN_FTR_SECTION
/
*
Go
to
low
speed
mode
on
some
750
FX
*/
lis
r4
,
powersave_lowspeed
@
ha
lwz
r4
,
powersave_lowspeed
@
l
(
r4
)
cmpi
0
,
r4
,
0
cmp
w
i
0
,
r4
,
0
beq
1
f
mfspr
r4
,
SPRN_HID1
oris
r4
,
r4
,
0x0001
...
...
arch/ppc/kernel/idle_power4.S
View file @
4fc60fac
...
...
@@ -56,7 +56,7 @@ END_FTR_SECTION_IFCLR(CPU_FTR_CAN_NAP)
/
*
Now
check
if
user
or
arch
enabled
NAP
mode
*/
lis
r4
,
powersave_nap
@
ha
lwz
r4
,
powersave_nap
@
l
(
r4
)
cmpi
0
,
r4
,
0
cmp
w
i
0
,
r4
,
0
beqlr
/
*
Clear
MSR
:
EE
*/
...
...
arch/ppc/kernel/misc.S
View file @
4fc60fac
...
...
@@ -214,7 +214,7 @@ _GLOBAL(low_choose_750fx_pll)
mtmsr
r0
/
*
If
switching
to
PLL1
,
disable
HID0
:
BTIC
*/
cmpli
cr0
,
r3
,
0
cmpl
w
i
cr0
,
r3
,
0
beq
1
f
mfspr
r5
,
HID0
rlwinm
r5
,
r5
,
0
,
27
,
25
...
...
@@ -239,7 +239,7 @@ _GLOBAL(low_choose_750fx_pll)
stw
r4
,
nap_save_hid1
@
l
(
r6
)
/
*
If
switching
to
PLL0
,
enable
HID0
:
BTIC
*/
cmpli
cr0
,
r3
,
0
cmpl
w
i
cr0
,
r3
,
0
bne
1
f
mfspr
r5
,
HID0
ori
r5
,
r5
,
HID0_BTIC
...
...
@@ -470,7 +470,7 @@ _GLOBAL(_tlbia)
ori
r9
,
r9
,
mmu_hash_lock
@
l
tophys
(
r9
,
r9
)
10
:
lwarx
r7
,
0
,
r9
cmpi
0
,
r7
,
0
cmp
w
i
0
,
r7
,
0
bne
-
10
b
stwcx
.
r8
,
0
,
r9
bne
-
10
b
...
...
@@ -551,7 +551,7 @@ _GLOBAL(_tlbie)
ori
r9
,
r9
,
mmu_hash_lock
@
l
tophys
(
r9
,
r9
)
10
:
lwarx
r7
,
0
,
r9
cmpi
0
,
r7
,
0
cmp
w
i
0
,
r7
,
0
bne
-
10
b
stwcx
.
r8
,
0
,
r9
bne
-
10
b
...
...
@@ -599,7 +599,7 @@ _GLOBAL(flush_instruction_cache)
#else
mfspr
r3
,
PVR
rlwinm
r3
,
r3
,
16
,
16
,
31
cmpi
0
,
r3
,
1
cmp
w
i
0
,
r3
,
1
beqlr
/*
for
601
,
do
nothing
*/
/
*
603
/
604
processor
-
use
invalidate
-
all
bit
in
HID0
*/
mfspr
r3
,
HID0
...
...
@@ -1141,7 +1141,7 @@ _GLOBAL(kernel_thread)
li
r4
,
0
/*
new
sp
(
unused
)
*/
li
r0
,
__NR_clone
sc
cmpi
0
,
r3
,
0
/*
parent
or
child
?
*/
cmp
w
i
0
,
r3
,
0
/*
parent
or
child
?
*/
bne
1
f
/*
return
if
parent
*/
li
r0
,
0
/*
make
top
-
level
stack
frame
*/
stwu
r0
,-
16
(
r1
)
...
...
arch/ppc/lib/checksum.S
View file @
4fc60fac
...
...
@@ -80,13 +80,13 @@ _GLOBAL(csum_partial)
adde
r0
,
r0
,
r5
/*
be
unnecessary
to
unroll
this
loop
*/
bdnz
2
b
andi
.
r4
,
r4
,
3
3
:
cmpi
0
,
r4
,
2
3
:
cmp
w
i
0
,
r4
,
2
blt
+
4
f
lhz
r5
,
4
(
r3
)
addi
r3
,
r3
,
2
subi
r4
,
r4
,
2
adde
r0
,
r0
,
r5
4
:
cmpi
0
,
r4
,
1
4
:
cmp
w
i
0
,
r4
,
1
bne
+
5
f
lbz
r5
,
4
(
r3
)
slwi
r5
,
r5
,
8
/*
Upper
byte
of
word
*/
...
...
@@ -143,7 +143,7 @@ _GLOBAL(csum_partial_copy_generic)
adde
r0
,
r0
,
r9
bdnz
82
b
13
:
andi
.
r5
,
r5
,
3
3
:
cmpi
0
,
r5
,
2
3
:
cmp
w
i
0
,
r5
,
2
blt
+
4
f
83
:
lhz
r6
,
4
(
r3
)
addi
r3
,
r3
,
2
...
...
@@ -151,7 +151,7 @@ _GLOBAL(csum_partial_copy_generic)
93
:
sth
r6
,
4
(
r4
)
addi
r4
,
r4
,
2
adde
r0
,
r0
,
r6
4
:
cmpi
0
,
r5
,
1
4
:
cmp
w
i
0
,
r5
,
1
bne
+
5
f
84
:
lbz
r6
,
4
(
r3
)
94
:
stb
r6
,
4
(
r4
)
...
...
@@ -188,7 +188,7 @@ src_error_3:
97
:
stbu
r6
,
1
(
r4
)
bdnz
97
b
src_error
:
cmpi
0
,
r7
,
0
cmp
w
i
0
,
r7
,
0
beq
1
f
li
r6
,-
EFAULT
stw
r6
,
0
(
r7
)
...
...
@@ -196,7 +196,7 @@ src_error:
blr
dst_error
:
cmpi
0
,
r8
,
0
cmp
w
i
0
,
r8
,
0
beq
1
f
li
r6
,-
EFAULT
stw
r6
,
0
(
r8
)
...
...
arch/ppc/platforms/4xx/ebony.c
View file @
4fc60fac
...
...
@@ -4,9 +4,11 @@
* Ebony board specific routines
*
* Matt Porter <mporter@mvista.com>
*
* Copyright 2002 MontaVista Software Inc.
*
* Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net>
* Copyright (c) 2003, 2004 Zultys Technologies
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
...
...
@@ -118,7 +120,7 @@ static u_char ebony_IRQ_initsenses[] __initdata = {
(
IRQ_SENSE_LEVEL
|
IRQ_POLARITY_POSITIVE
),
/* 63: EMAC 1 WOL */
};
extern
void
abort
(
void
)
;
static
struct
ibm44x_clocks
clocks
__initdata
;
static
void
__init
ebony_calibrate_decr
(
void
)
...
...
@@ -143,18 +145,7 @@ ebony_calibrate_decr(void)
break
;
}
tb_ticks_per_jiffy
=
freq
/
HZ
;
tb_to_us
=
mulhwu_scale_factor
(
freq
,
1000000
);
/* Set the time base to zero */
mtspr
(
SPRN_TBWL
,
0
);
mtspr
(
SPRN_TBWU
,
0
);
/* Clear any pending timer interrupts */
mtspr
(
SPRN_TSR
,
TSR_ENW
|
TSR_WIS
|
TSR_DIS
|
TSR_FIS
);
/* Enable decrementer interrupt */
mtspr
(
SPRN_TCR
,
TCR_DIE
);
ibm44x_calibrate_decr
(
freq
);
}
static
int
...
...
@@ -283,7 +274,7 @@ ebony_early_serial_map(void)
memset
(
&
port
,
0
,
sizeof
(
port
));
port
.
membase
=
ioremap64
(
PPC440GP_UART0_ADDR
,
8
);
port
.
irq
=
0
;
port
.
uartclk
=
BASE_BAUD
*
16
;
port
.
uartclk
=
clocks
.
uart0
;
port
.
regshift
=
0
;
port
.
iotype
=
SERIAL_IO_MEM
;
port
.
flags
=
ASYNC_BOOT_AUTOCONF
|
ASYNC_SKIP_TEST
;
...
...
@@ -306,7 +297,6 @@ static void __init
ebony_setup_arch
(
void
)
{
unsigned
char
*
vpd_base
;
struct
ibm44x_clocks
clocks
;
struct
ocp_def
*
def
;
struct
ocp_func_emac_data
*
emacdata
;
...
...
@@ -370,152 +360,17 @@ ebony_setup_arch(void)
printk
(
"IBM Ebony port (MontaVista Software, Inc. (source@mvista.com))
\n
"
);
}
static
void
ebony_restart
(
char
*
cmd
)
{
local_irq_disable
();
abort
();
}
static
void
ebony_power_off
(
void
)
{
local_irq_disable
();
for
(;;);
}
static
void
ebony_halt
(
void
)
{
local_irq_disable
();
for
(;;);
}
/*
* Read the 440GP memory controller to get size of system memory.
*/
static
unsigned
long
__init
ebony_find_end_of_memory
(
void
)
{
u32
i
,
bank_config
;
u32
mem_size
=
0
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
switch
(
i
)
{
case
0
:
mtdcr
(
DCRN_SDRAM0_CFGADDR
,
SDRAM0_B0CR
);
break
;
case
1
:
mtdcr
(
DCRN_SDRAM0_CFGADDR
,
SDRAM0_B1CR
);
break
;
case
2
:
mtdcr
(
DCRN_SDRAM0_CFGADDR
,
SDRAM0_B2CR
);
break
;
case
3
:
mtdcr
(
DCRN_SDRAM0_CFGADDR
,
SDRAM0_B3CR
);
break
;
}
bank_config
=
mfdcr
(
DCRN_SDRAM0_CFGDATA
);
if
(
!
(
bank_config
&
SDRAM_CONFIG_BANK_ENABLE
))
continue
;
switch
(
SDRAM_CONFIG_BANK_SIZE
(
bank_config
))
{
case
SDRAM_CONFIG_SIZE_8M
:
mem_size
+=
PPC44x_MEM_SIZE_8M
;
break
;
case
SDRAM_CONFIG_SIZE_16M
:
mem_size
+=
PPC44x_MEM_SIZE_16M
;
break
;
case
SDRAM_CONFIG_SIZE_32M
:
mem_size
+=
PPC44x_MEM_SIZE_32M
;
break
;
case
SDRAM_CONFIG_SIZE_64M
:
mem_size
+=
PPC44x_MEM_SIZE_64M
;
break
;
case
SDRAM_CONFIG_SIZE_128M
:
mem_size
+=
PPC44x_MEM_SIZE_128M
;
break
;
case
SDRAM_CONFIG_SIZE_256M
:
mem_size
+=
PPC44x_MEM_SIZE_256M
;
break
;
case
SDRAM_CONFIG_SIZE_512M
:
mem_size
+=
PPC44x_MEM_SIZE_512M
;
break
;
}
}
return
mem_size
;
}
static
void
__init
ebony_init_irq
(
void
)
{
int
i
;
ppc4xx_pic_init
();
for
(
i
=
0
;
i
<
NR_IRQS
;
i
++
)
irq_desc
[
i
].
handler
=
ppc4xx_pic
;
}
#ifdef CONFIG_SERIAL_TEXT_DEBUG
#include <linux/serialP.h>
#include <linux/serial_reg.h>
#include <asm/serial.h>
static
struct
serial_state
rs_table
[
RS_TABLE_SIZE
]
=
{
SERIAL_PORT_DFNS
/* Defined in <asm/serial.h> */
};
static
void
ebony_progress
(
char
*
s
,
unsigned
short
hex
)
{
volatile
char
c
;
volatile
unsigned
long
com_port
;
u16
shift
;
com_port
=
(
unsigned
long
)
rs_table
[
0
].
iomem_base
;
shift
=
rs_table
[
0
].
iomem_reg_shift
;
while
((
c
=
*
s
++
)
!=
0
)
{
while
((
*
((
volatile
unsigned
char
*
)
com_port
+
(
UART_LSR
<<
shift
))
&
UART_LSR_THRE
)
==
0
)
;
*
(
volatile
unsigned
char
*
)
com_port
=
c
;
}
/* Send LF/CR to pretty up output */
while
((
*
((
volatile
unsigned
char
*
)
com_port
+
(
UART_LSR
<<
shift
))
&
UART_LSR_THRE
)
==
0
)
;
*
(
volatile
unsigned
char
*
)
com_port
=
'\r'
;
while
((
*
((
volatile
unsigned
char
*
)
com_port
+
(
UART_LSR
<<
shift
))
&
UART_LSR_THRE
)
==
0
)
;
*
(
volatile
unsigned
char
*
)
com_port
=
'\n'
;
}
#endif
/* CONFIG_SERIAL_TEXT_DEBUG */
void
__init
platform_init
(
unsigned
long
r3
,
unsigned
long
r4
,
unsigned
long
r5
,
unsigned
long
r6
,
unsigned
long
r7
)
{
parse_bootinfo
((
struct
bi_record
*
)
(
r3
+
KERNELBASE
));
ibm44x_platform_init
();
ppc_md
.
setup_arch
=
ebony_setup_arch
;
ppc_md
.
show_cpuinfo
=
ebony_show_cpuinfo
;
ppc_md
.
init_IRQ
=
ebony_init_irq
;
ppc_md
.
get_irq
=
NULL
;
/* Set in ppc4xx_pic_init() */
ppc_md
.
find_end_of_memory
=
ebony_find_end_of_memory
;
ppc_md
.
restart
=
ebony_restart
;
ppc_md
.
power_off
=
ebony_power_off
;
ppc_md
.
halt
=
ebony_halt
;
ppc_md
.
calibrate_decr
=
ebony_calibrate_decr
;
ppc_md
.
time_init
=
todc_time_init
;
ppc_md
.
set_rtc_time
=
todc_set_rtc_time
;
...
...
@@ -524,9 +379,6 @@ void __init platform_init(unsigned long r3, unsigned long r4,
ppc_md
.
nvram_read_val
=
todc_direct_read_val
;
ppc_md
.
nvram_write_val
=
todc_direct_write_val
;
#ifdef CONFIG_SERIAL_TEXT_DEBUG
ppc_md
.
progress
=
ebony_progress
;
#endif
/* CONFIG_SERIAL_TEXT_DEBUG */
#ifdef CONFIG_KGDB
ppc_md
.
early_serial_map
=
ebony_early_serial_map
;
#endif
...
...
arch/ppc/platforms/4xx/ocotea.c
View file @
4fc60fac
...
...
@@ -58,39 +58,21 @@
*/
#include "../../../../drivers/net/ibm_emac/ibm_emac_phy.h"
extern
void
abort
(
void
);
bd_t
__res
;
static
struct
ibm44x_clocks
clocks
;
static
int
__init
ocotea_get_dec_freq
(
void
)
{
if
(
mfspr
(
SPRN_CCR1
)
&
CCR1_TCS
)
return
OCOTEA_TMR_CLK
;
else
return
clocks
.
cpu
;
}
static
struct
ibm44x_clocks
clocks
__initdata
;
static
void
__init
ocotea_calibrate_decr
(
void
)
{
unsigned
int
freq
;
freq
=
ocotea_get_dec_freq
();
tb_ticks_per_jiffy
=
freq
/
HZ
;
tb_to_us
=
mulhwu_scale_factor
(
freq
,
1000000
);
/* Set the time base to zero */
mtspr
(
SPRN_TBWL
,
0
);
mtspr
(
SPRN_TBWU
,
0
);
/* Clear any pending timer interrupts */
mtspr
(
SPRN_TSR
,
TSR_ENW
|
TSR_WIS
|
TSR_DIS
|
TSR_FIS
);
if
(
mfspr
(
SPRN_CCR1
)
&
CCR1_TCS
)
freq
=
OCOTEA_TMR_CLK
;
else
freq
=
clocks
.
cpu
;
/* Enable decrementer interrupt */
mtspr
(
SPRN_TCR
,
TCR_DIE
);
ibm44x_calibrate_decr
(
freq
);
}
static
int
...
...
@@ -101,6 +83,7 @@ ocotea_show_cpuinfo(struct seq_file *m)
return
0
;
}
static
inline
int
ocotea_map_irq
(
struct
pci_dev
*
dev
,
unsigned
char
idsel
,
unsigned
char
pin
)
{
...
...
@@ -344,135 +327,6 @@ ocotea_setup_arch(void)
printk
(
"IBM Ocotea port (MontaVista Software, Inc. <source@mvista.com>)
\n
"
);
}
static
void
ocotea_restart
(
char
*
cmd
)
{
local_irq_disable
();
abort
();
}
static
void
ocotea_power_off
(
void
)
{
local_irq_disable
();
for
(;;);
}
static
void
ocotea_halt
(
void
)
{
local_irq_disable
();
for
(;;);
}
/*
* Read the 440GX memory controller to get size of system memory.
*/
static
unsigned
long
__init
ocotea_find_end_of_memory
(
void
)
{
u32
i
,
bank_config
;
u32
mem_size
=
0
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
switch
(
i
)
{
case
0
:
mtdcr
(
DCRN_SDRAM0_CFGADDR
,
SDRAM0_B0CR
);
break
;
case
1
:
mtdcr
(
DCRN_SDRAM0_CFGADDR
,
SDRAM0_B1CR
);
break
;
case
2
:
mtdcr
(
DCRN_SDRAM0_CFGADDR
,
SDRAM0_B2CR
);
break
;
case
3
:
mtdcr
(
DCRN_SDRAM0_CFGADDR
,
SDRAM0_B3CR
);
break
;
}
bank_config
=
mfdcr
(
DCRN_SDRAM0_CFGDATA
);
if
(
!
(
bank_config
&
SDRAM_CONFIG_BANK_ENABLE
))
continue
;
switch
(
SDRAM_CONFIG_BANK_SIZE
(
bank_config
))
{
case
SDRAM_CONFIG_SIZE_8M
:
mem_size
+=
PPC44x_MEM_SIZE_8M
;
break
;
case
SDRAM_CONFIG_SIZE_16M
:
mem_size
+=
PPC44x_MEM_SIZE_16M
;
break
;
case
SDRAM_CONFIG_SIZE_32M
:
mem_size
+=
PPC44x_MEM_SIZE_32M
;
break
;
case
SDRAM_CONFIG_SIZE_64M
:
mem_size
+=
PPC44x_MEM_SIZE_64M
;
break
;
case
SDRAM_CONFIG_SIZE_128M
:
mem_size
+=
PPC44x_MEM_SIZE_128M
;
break
;
case
SDRAM_CONFIG_SIZE_256M
:
mem_size
+=
PPC44x_MEM_SIZE_256M
;
break
;
case
SDRAM_CONFIG_SIZE_512M
:
mem_size
+=
PPC44x_MEM_SIZE_512M
;
break
;
}
}
return
mem_size
;
}
static
void
__init
ocotea_init_irq
(
void
)
{
int
i
;
ppc4xx_pic_init
();
for
(
i
=
0
;
i
<
NR_IRQS
;
i
++
)
irq_desc
[
i
].
handler
=
ppc4xx_pic
;
}
#ifdef CONFIG_SERIAL_TEXT_DEBUG
#include <linux/serialP.h>
#include <linux/serial_reg.h>
#include <asm/serial.h>
struct
serial_state
rs_table
[
RS_TABLE_SIZE
]
=
{
SERIAL_PORT_DFNS
/* Defined in <asm/serial.h> */
};
static
void
ocotea_progress
(
char
*
s
,
unsigned
short
hex
)
{
volatile
char
c
;
volatile
unsigned
long
com_port
;
u16
shift
;
com_port
=
(
unsigned
long
)
rs_table
[
0
].
iomem_base
;
shift
=
rs_table
[
0
].
iomem_reg_shift
;
while
((
c
=
*
s
++
)
!=
0
)
{
while
((
*
((
volatile
unsigned
char
*
)
com_port
+
(
UART_LSR
<<
shift
))
&
UART_LSR_THRE
)
==
0
)
;
*
(
volatile
unsigned
char
*
)
com_port
=
c
;
}
/* Send LF/CR to pretty up output */
while
((
*
((
volatile
unsigned
char
*
)
com_port
+
(
UART_LSR
<<
shift
))
&
UART_LSR_THRE
)
==
0
)
;
*
(
volatile
unsigned
char
*
)
com_port
=
'\r'
;
while
((
*
((
volatile
unsigned
char
*
)
com_port
+
(
UART_LSR
<<
shift
))
&
UART_LSR_THRE
)
==
0
)
;
*
(
volatile
unsigned
char
*
)
com_port
=
'\n'
;
}
#endif
/* CONFIG_SERIAL_TEXT_DEBUG */
void
__init
platform_init
(
unsigned
long
r3
,
unsigned
long
r4
,
unsigned
long
r5
,
unsigned
long
r6
,
unsigned
long
r7
)
{
...
...
@@ -488,17 +342,12 @@ void __init platform_init(unsigned long r3, unsigned long r4,
/* Disable L2-Cache due to hardware issues */
ibm440gx_l2c_disable
();
ibm44x_platform_init
();
ppc_md
.
setup_arch
=
ocotea_setup_arch
;
ppc_md
.
show_cpuinfo
=
ocotea_show_cpuinfo
;
ppc_md
.
init_IRQ
=
ocotea_init_irq
;
ppc_md
.
get_irq
=
NULL
;
/* Set in ppc4xx_pic_init() */
ppc_md
.
find_end_of_memory
=
ocotea_find_end_of_memory
;
ppc_md
.
restart
=
ocotea_restart
;
ppc_md
.
power_off
=
ocotea_power_off
;
ppc_md
.
halt
=
ocotea_halt
;
ppc_md
.
calibrate_decr
=
ocotea_calibrate_decr
;
ppc_md
.
time_init
=
todc_time_init
;
ppc_md
.
set_rtc_time
=
todc_set_rtc_time
;
...
...
@@ -507,9 +356,6 @@ void __init platform_init(unsigned long r3, unsigned long r4,
ppc_md
.
nvram_read_val
=
todc_direct_read_val
;
ppc_md
.
nvram_write_val
=
todc_direct_write_val
;
#ifdef CONFIG_SERIAL_TEXT_DEBUG
ppc_md
.
progress
=
ocotea_progress
;
#endif
/* CONFIG_SERIAL_TEXT_DEBUG */
#ifdef CONFIG_KGDB
ppc_md
.
early_serial_map
=
ocotea_early_serial_map
;
#endif
...
...
arch/ppc/syslib/ibm44x_common.c
View file @
4fc60fac
...
...
@@ -6,6 +6,9 @@
* Matt Porter <mporter@mvista.com>
* Copyright 2002-2003 MontaVista Software Inc.
*
* Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net>
* Copyright (c) 2003, 2004 Zultys Technologies
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
...
...
@@ -14,8 +17,14 @@
*/
#include <linux/config.h>
#include <linux/types.h>
#include <linux/serial.h>
#include <asm/param.h>
#include <asm/ibm44x.h>
#include <asm/mmu.h>
#include <asm/machdep.h>
#include <asm/time.h>
#include <asm/ppc4xx_pic.h>
phys_addr_t
fixup_bigphys_addr
(
phys_addr_t
addr
,
phys_addr_t
size
)
{
...
...
@@ -35,3 +44,159 @@ phys_addr_t fixup_bigphys_addr(phys_addr_t addr, phys_addr_t size)
return
(
page_4gb
|
addr
);
};
void
__init
ibm44x_calibrate_decr
(
unsigned
int
freq
)
{
tb_ticks_per_jiffy
=
freq
/
HZ
;
tb_to_us
=
mulhwu_scale_factor
(
freq
,
1000000
);
/* Set the time base to zero */
mtspr
(
SPRN_TBWL
,
0
);
mtspr
(
SPRN_TBWU
,
0
);
/* Clear any pending timer interrupts */
mtspr
(
SPRN_TSR
,
TSR_ENW
|
TSR_WIS
|
TSR_DIS
|
TSR_FIS
);
/* Enable decrementer interrupt */
mtspr
(
SPRN_TCR
,
TCR_DIE
);
}
extern
void
abort
(
void
);
static
void
ibm44x_restart
(
char
*
cmd
)
{
local_irq_disable
();
abort
();
}
static
void
ibm44x_power_off
(
void
)
{
local_irq_disable
();
for
(;;);
}
static
void
ibm44x_halt
(
void
)
{
local_irq_disable
();
for
(;;);
}
/*
* Read the 44x memory controller to get size of system memory.
*/
static
unsigned
long
__init
ibm44x_find_end_of_memory
(
void
)
{
u32
i
,
bank_config
;
u32
mem_size
=
0
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
switch
(
i
)
{
case
0
:
mtdcr
(
DCRN_SDRAM0_CFGADDR
,
SDRAM0_B0CR
);
break
;
case
1
:
mtdcr
(
DCRN_SDRAM0_CFGADDR
,
SDRAM0_B1CR
);
break
;
case
2
:
mtdcr
(
DCRN_SDRAM0_CFGADDR
,
SDRAM0_B2CR
);
break
;
case
3
:
mtdcr
(
DCRN_SDRAM0_CFGADDR
,
SDRAM0_B3CR
);
break
;
}
bank_config
=
mfdcr
(
DCRN_SDRAM0_CFGDATA
);
if
(
!
(
bank_config
&
SDRAM_CONFIG_BANK_ENABLE
))
continue
;
switch
(
SDRAM_CONFIG_BANK_SIZE
(
bank_config
))
{
case
SDRAM_CONFIG_SIZE_8M
:
mem_size
+=
PPC44x_MEM_SIZE_8M
;
break
;
case
SDRAM_CONFIG_SIZE_16M
:
mem_size
+=
PPC44x_MEM_SIZE_16M
;
break
;
case
SDRAM_CONFIG_SIZE_32M
:
mem_size
+=
PPC44x_MEM_SIZE_32M
;
break
;
case
SDRAM_CONFIG_SIZE_64M
:
mem_size
+=
PPC44x_MEM_SIZE_64M
;
break
;
case
SDRAM_CONFIG_SIZE_128M
:
mem_size
+=
PPC44x_MEM_SIZE_128M
;
break
;
case
SDRAM_CONFIG_SIZE_256M
:
mem_size
+=
PPC44x_MEM_SIZE_256M
;
break
;
case
SDRAM_CONFIG_SIZE_512M
:
mem_size
+=
PPC44x_MEM_SIZE_512M
;
break
;
}
}
return
mem_size
;
}
static
void
__init
ibm44x_init_irq
(
void
)
{
int
i
;
ppc4xx_pic_init
();
for
(
i
=
0
;
i
<
NR_IRQS
;
i
++
)
irq_desc
[
i
].
handler
=
ppc4xx_pic
;
}
#ifdef CONFIG_SERIAL_TEXT_DEBUG
#include <linux/serialP.h>
#include <linux/serial_reg.h>
#include <asm/serial.h>
static
struct
serial_state
rs_table
[
RS_TABLE_SIZE
]
=
{
SERIAL_PORT_DFNS
/* Defined in <asm/serial.h> */
};
static
void
ibm44x_progress
(
char
*
s
,
unsigned
short
hex
)
{
volatile
char
c
;
volatile
unsigned
long
com_port
;
u16
shift
;
com_port
=
(
unsigned
long
)
rs_table
[
0
].
iomem_base
;
shift
=
rs_table
[
0
].
iomem_reg_shift
;
while
((
c
=
*
s
++
)
!=
0
)
{
while
((
*
((
volatile
unsigned
char
*
)
com_port
+
(
UART_LSR
<<
shift
))
&
UART_LSR_THRE
)
==
0
)
;
*
(
volatile
unsigned
char
*
)
com_port
=
c
;
}
/* Send LF/CR to pretty up output */
while
((
*
((
volatile
unsigned
char
*
)
com_port
+
(
UART_LSR
<<
shift
))
&
UART_LSR_THRE
)
==
0
)
;
*
(
volatile
unsigned
char
*
)
com_port
=
'\r'
;
while
((
*
((
volatile
unsigned
char
*
)
com_port
+
(
UART_LSR
<<
shift
))
&
UART_LSR_THRE
)
==
0
)
;
*
(
volatile
unsigned
char
*
)
com_port
=
'\n'
;
}
#endif
/* CONFIG_SERIAL_TEXT_DEBUG */
void
__init
ibm44x_platform_init
(
void
)
{
ppc_md
.
init_IRQ
=
ibm44x_init_irq
;
ppc_md
.
find_end_of_memory
=
ibm44x_find_end_of_memory
;
ppc_md
.
restart
=
ibm44x_restart
;
ppc_md
.
power_off
=
ibm44x_power_off
;
ppc_md
.
halt
=
ibm44x_halt
;
#ifdef CONFIG_SERIAL_TEXT_DEBUG
ppc_md
.
progress
=
ibm44x_progress
;
#endif
/* CONFIG_SERIAL_TEXT_DEBUG */
}
arch/ppc/syslib/ibm44x_common.h
View file @
4fc60fac
...
...
@@ -4,7 +4,7 @@
* PPC44x system library
*
* Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net>
* Copyright (c) 2003 Zultys Technologies
* Copyright (c) 2003
, 2004
Zultys Technologies
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
...
...
@@ -31,6 +31,12 @@ struct ibm44x_clocks {
unsigned
int
uart1
;
};
/* common 44x platform init */
void
ibm44x_platform_init
(
void
)
__init
;
/* initialize decrementer and tick-related variables */
void
ibm44x_calibrate_decr
(
unsigned
int
freq
)
__init
;
#endif
/* __ASSEMBLY__ */
#endif
/* __PPC_SYSLIB_IBM44x_COMMON_H */
#endif
/* __KERNEL__ */
arch/ppc64/Kconfig
View file @
4fc60fac
...
...
@@ -215,7 +215,7 @@ config MSCHUNKS
config PPC_RTAS
bool "Proc interface to RTAS"
depends on
!PPC_I
SERIES
depends on
PPC_P
SERIES
config RTAS_FLASH
tristate "Firmware flash interface"
...
...
@@ -227,6 +227,7 @@ config SCANLOG
config LPARCFG
tristate "LPAR Configuration Data"
depends on PPC_PSERIES || PPC_ISERIES
help
Provide system capacity information via human readable
<key word>=<value> pairs through a /proc/ppc64/lparcfg interface.
...
...
@@ -273,7 +274,7 @@ source "drivers/pci/Kconfig"
config HOTPLUG_CPU
bool "Support for hot-pluggable CPUs"
depends on SMP && HOTPLUG && EXPERIMENTAL
depends on SMP && HOTPLUG && EXPERIMENTAL
&& PPC_PSERIES
---help---
Say Y here to be able to turn CPUs off and on.
...
...
arch/ppc64/kernel/ItLpQueue.c
View file @
4fc60fac
...
...
@@ -25,7 +25,7 @@ static __inline__ int set_inUse( struct ItLpQueue * lpQueue )
__asm__
__volatile__
(
"
\n
\
1: lwarx %0,0,%2
\n
\
cmpi 0,%0,0
\n
\
cmp
w
i 0,%0,0
\n
\
li %0,0
\n
\
bne- 2f
\n
\
addi %0,%0,1
\n
\
...
...
arch/ppc64/kernel/entry.S
View file @
4fc60fac
...
...
@@ -122,7 +122,7 @@ SystemCall_common:
andi
.
r11
,
r10
,
_TIF_SYSCALL_T_OR_A
bne
-
syscall_dotrace
syscall_dotrace_cont
:
cmpli
0
,
r0
,
NR_syscalls
cmpl
d
i
0
,
r0
,
NR_syscalls
bge
-
syscall_enosys
system_call
:
/
*
label
this
so
stack
traces
look
sane
*/
...
...
@@ -204,7 +204,7 @@ syscall_enosys:
syscall_error
:
lbz
r11
,
TI_SC_NOERR
(
r12
)
cmpi
0
,
r11
,
0
cmp
w
i
0
,
r11
,
0
bne
-
syscall_error_cont
neg
r3
,
r3
oris
r5
,
r5
,
0x1000
/*
Set
SO
bit
in
CR
*/
...
...
arch/ppc64/kernel/idle_power4.S
View file @
4fc60fac
...
...
@@ -46,7 +46,7 @@ END_FTR_SECTION_IFCLR(CPU_FTR_CAN_NAP)
/
*
Now
check
if
user
or
arch
enabled
NAP
mode
*/
LOADBASE
(
r3
,
powersave_nap
)
lwz
r4
,
powersave_nap
@
l
(
r3
)
cmpi
0
,
r4
,
0
cmp
w
i
0
,
r4
,
0
beqlr
/
*
Clear
MSR
:
EE
*/
...
...
arch/ppc64/kernel/misc.S
View file @
4fc60fac
...
...
@@ -670,7 +670,7 @@ _GLOBAL(kernel_thread)
li
r4
,
0
/*
new
sp
(
unused
)
*/
li
r0
,
__NR_clone
sc
cmpi
0
,
r3
,
0
/*
parent
or
child
?
*/
cmp
d
i
0
,
r3
,
0
/*
parent
or
child
?
*/
bne
1
f
/*
return
if
parent
*/
li
r0
,
0
stdu
r0
,-
STACK_FRAME_OVERHEAD
(
r1
)
...
...
arch/ppc64/kernel/ppc_ksyms.c
View file @
4fc60fac
...
...
@@ -136,7 +136,7 @@ EXPORT_SYMBOL(local_irq_restore);
EXPORT_SYMBOL
(
ppc_md
);
#ifdef CONFIG_PPC_
PSERIES
#ifdef CONFIG_PPC_
MULTIPLATFORM
EXPORT_SYMBOL
(
find_devices
);
EXPORT_SYMBOL
(
find_type_devices
);
EXPORT_SYMBOL
(
find_compatible_devices
);
...
...
arch/ppc64/kernel/rtas-proc.c
View file @
4fc60fac
...
...
@@ -580,7 +580,7 @@ static void ppc_rtas_process_sensor(struct seq_file *m,
}
break
;
case
THERMAL_SENSOR
:
seq_printf
(
m
,
"Temp. (C/F):
\t
"
);
seq_printf
(
m
,
"Temp. (C/F):
\t
"
);
temperature
=
1
;
break
;
case
LID_STATUS
:
...
...
arch/ppc64/lib/checksum.S
View file @
4fc60fac
...
...
@@ -92,19 +92,19 @@ _GLOBAL(csum_partial)
adde
r5
,
r5
,
r6
bdnz
2
b
andi
.
r4
,
r4
,
7
/*
compute
bytes
left
to
sum
after
doublewords
*/
3
:
cmpi
0
,
r4
,
4
/*
is
at
least
a
full
word
left
?
*/
3
:
cmp
w
i
0
,
r4
,
4
/*
is
at
least
a
full
word
left
?
*/
blt
4
f
lwz
r6
,
8
(
r3
)
/*
sum
this
word
*/
addi
r3
,
r3
,
4
subi
r4
,
r4
,
4
adde
r5
,
r5
,
r6
4
:
cmpi
0
,
r4
,
2
/*
is
at
least
a
halfword
left
?
*/
4
:
cmpwi
0
,
r4
,
2
/*
is
at
least
a
halfword
left
?
*/
blt
+
5
f
lhz
r6
,
8
(
r3
)
/*
sum
this
halfword
*/
addi
r3
,
r3
,
2
subi
r4
,
r4
,
2
adde
r5
,
r5
,
r6
5
:
cmpi
0
,
r4
,
1
/*
is
at
least
a
byte
left
?
*/
5
:
cmpwi
0
,
r4
,
1
/*
is
at
least
a
byte
left
?
*/
bne
+
6
f
lbz
r6
,
8
(
r3
)
/*
sum
this
byte
*/
slwi
r6
,
r6
,
8
/*
this
byte
is
assumed
to
be
the
upper
byte
of
a
halfword
*/
...
...
@@ -150,7 +150,7 @@ _GLOBAL(csum_partial_copy_generic)
adde
r0
,
r0
,
r6
bdnz
82
b
andi
.
r5
,
r5
,
3
3
:
cmpi
0
,
r5
,
2
3
:
cmp
w
i
0
,
r5
,
2
blt
+
4
f
83
:
lhz
r6
,
4
(
r3
)
addi
r3
,
r3
,
2
...
...
@@ -158,7 +158,7 @@ _GLOBAL(csum_partial_copy_generic)
93
:
sth
r6
,
4
(
r4
)
addi
r4
,
r4
,
2
adde
r0
,
r0
,
r6
4
:
cmpi
0
,
r5
,
1
4
:
cmp
w
i
0
,
r5
,
1
bne
+
5
f
84
:
lbz
r6
,
4
(
r3
)
94
:
stb
r6
,
4
(
r4
)
...
...
@@ -198,7 +198,7 @@ src_error_3:
bdnz
97
b
.
globl
src_error
src_error
:
cmpi
0
,
r7
,
0
cmp
d
i
0
,
r7
,
0
beq
1
f
li
r6
,-
EFAULT
stw
r6
,
0
(
r7
)
...
...
@@ -207,7 +207,7 @@ src_error:
.
globl
dst_error
dst_error
:
cmpi
0
,
r8
,
0
cmp
d
i
0
,
r8
,
0
beq
1
f
li
r6
,-
EFAULT
stw
r6
,
0
(
r8
)
...
...
arch/ppc64/mm/hash_low.S
View file @
4fc60fac
...
...
@@ -172,9 +172,9 @@ htab_insert_pte:
li
r9
,
0
_GLOBAL
(
htab_call_hpte_insert1
)
bl
.
/*
Will
be
patched
by
htab_finish_init
()
*/
cmpi
0
,
r3
,
0
cmp
d
i
0
,
r3
,
0
bge
htab_pte_insert_ok
/*
Insertion
successful
*/
cmpi
0
,
r3
,-
2
/*
Critical
failure
*/
cmp
d
i
0
,
r3
,-
2
/*
Critical
failure
*/
beq
-
htab_pte_insert_failure
/
*
Now
try
secondary
slot
*/
...
...
@@ -194,9 +194,9 @@ _GLOBAL(htab_call_hpte_insert1)
li
r9
,
0
_GLOBAL
(
htab_call_hpte_insert2
)
bl
.
/*
Will
be
patched
by
htab_finish_init
()
*/
cmpi
0
,
r3
,
0
cmp
d
i
0
,
r3
,
0
bge
+
htab_pte_insert_ok
/*
Insertion
successful
*/
cmpi
0
,
r3
,-
2
/*
Critical
failure
*/
cmp
d
i
0
,
r3
,-
2
/*
Critical
failure
*/
beq
-
htab_pte_insert_failure
/
*
Both
are
full
,
we
need
to
evict
something
*/
...
...
arch/um/kernel/ptrace.c
View file @
4fc60fac
...
...
@@ -287,7 +287,7 @@ int sys_ptrace(long request, long pid, long addr, long data)
}
#endif
default:
ret
=
-
EIO
;
ret
=
ptrace_request
(
child
,
request
,
addr
,
data
)
;
break
;
}
out_tsk:
...
...
arch/um/kernel/sys_call_table.c
View file @
4fc60fac
...
...
@@ -47,7 +47,6 @@ extern syscall_handler_t sys_rt_sigaction;
extern
syscall_handler_t
sys_sigaltstack
;
extern
syscall_handler_t
sys_vfork
;
extern
syscall_handler_t
sys_mmap2
;
extern
syscall_handler_t
sys_timer_create
;
extern
syscall_handler_t
old_mmap_i386
;
extern
syscall_handler_t
old_select
;
extern
syscall_handler_t
sys_modify_ldt
;
...
...
arch/x86_64/ia32/syscall32.c
View file @
4fc60fac
...
...
@@ -88,7 +88,8 @@ static int __init init_syscall32(void)
__initcall
(
init_syscall32
);
void
__init
syscall32_cpu_init
(
void
)
/* May not be __init: called during resume */
void
syscall32_cpu_init
(
void
)
{
if
(
use_sysenter
<
0
)
use_sysenter
=
(
boot_cpu_data
.
x86_vendor
==
X86_VENDOR_INTEL
);
...
...
arch/x86_64/kernel/setup64.c
View file @
4fc60fac
...
...
@@ -195,7 +195,8 @@ void pda_init(int cpu)
char
boot_exception_stacks
[
N_EXCEPTION_STACKS
*
EXCEPTION_STKSZ
]
__attribute__
((
section
(
".bss.page_aligned"
)));
void
__init
syscall_init
(
void
)
/* May not be marked __init: used by software suspend */
void
syscall_init
(
void
)
{
/*
* LSTAR and STAR live in a bit strange symbiosis.
...
...
drivers/cdrom/cdrom.c
View file @
4fc60fac
...
...
@@ -354,6 +354,19 @@ static void cdrom_sysctl_register(void);
#endif
/* CONFIG_SYSCTL */
static
struct
cdrom_device_info
*
topCdromPtr
;
static
int
cdrom_dummy_generic_packet
(
struct
cdrom_device_info
*
cdi
,
struct
packet_command
*
cgc
)
{
if
(
cgc
->
sense
)
{
cgc
->
sense
->
sense_key
=
0x05
;
cgc
->
sense
->
asc
=
0x20
;
cgc
->
sense
->
ascq
=
0x00
;
}
cgc
->
stat
=
-
EIO
;
return
-
EIO
;
}
/* This macro makes sure we don't have to check on cdrom_device_ops
* existence in the run-time routines below. Change_capability is a
* hack to have the capability flags defined const, while we can still
...
...
@@ -411,6 +424,9 @@ int register_cdrom(struct cdrom_device_info *cdi)
else
cdi
->
cdda_method
=
CDDA_OLD
;
if
(
!
cdo
->
generic_packet
)
cdo
->
generic_packet
=
cdrom_dummy_generic_packet
;
cdinfo
(
CD_REG_UNREG
,
"drive
\"
/dev/%s
\"
registered
\n
"
,
cdi
->
name
);
spin_lock
(
&
cdrom_lock
);
cdi
->
next
=
topCdromPtr
;
...
...
drivers/macintosh/ans-lcd.c
View file @
4fc60fac
...
...
@@ -9,6 +9,8 @@
#include <linux/fcntl.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/fs.h>
#include <asm/uaccess.h>
#include <asm/sections.h>
#include <asm/prom.h>
...
...
@@ -154,7 +156,7 @@ anslcd_init(void)
retval
=
misc_register
(
&
anslcd_dev
);
if
(
retval
<
0
){
printk
(
KERN_INFO
"LCD: misc_register failed
\n
"
);
iounmap
(
anslcd_ptr
);
iounmap
(
(
void
*
)
anslcd_ptr
);
return
retval
;
}
...
...
@@ -177,7 +179,7 @@ static void __exit
anslcd_exit
(
void
)
{
misc_deregister
(
&
anslcd_dev
);
iounmap
(
anslcd_ptr
);
iounmap
(
(
void
*
)
anslcd_ptr
);
}
module_init
(
anslcd_init
);
...
...
fs/hostfs/hostfs.h
View file @
4fc60fac
...
...
@@ -38,7 +38,7 @@ extern int stat_file(const char *path, unsigned long long *inode_out,
int
*
blksize_out
,
unsigned
long
long
*
blocks_out
);
extern
int
access_file
(
char
*
path
,
int
r
,
int
w
,
int
x
);
extern
int
open_file
(
char
*
path
,
int
r
,
int
w
,
int
append
);
extern
int
file_type
(
const
char
*
path
,
int
*
rdev
);
extern
int
file_type
(
const
char
*
path
,
int
*
maj
,
int
*
min
);
extern
void
*
open_dir
(
char
*
path
,
int
*
err_out
);
extern
char
*
read_dir
(
void
*
stream
,
unsigned
long
long
*
pos
,
unsigned
long
long
*
ino_out
,
int
*
len_out
);
...
...
fs/hostfs/hostfs_kern.c
View file @
4fc60fac
...
...
@@ -18,6 +18,7 @@
#include <linux/buffer_head.h>
#include <linux/root_dev.h>
#include <linux/statfs.h>
#include <linux/kdev_t.h>
#include <asm/uaccess.h>
#include "hostfs.h"
#include "kern_util.h"
...
...
@@ -230,7 +231,7 @@ static int read_inode(struct inode *ino)
if
(
name
==
NULL
)
goto
out
;
if
(
file_type
(
name
,
NULL
)
==
OS_TYPE_SYMLINK
){
if
(
file_type
(
name
,
NULL
,
NULL
)
==
OS_TYPE_SYMLINK
){
name
=
follow_link
(
name
);
if
(
IS_ERR
(
name
)){
err
=
PTR_ERR
(
name
);
...
...
@@ -290,7 +291,6 @@ static void hostfs_delete_inode(struct inode *inode)
{
if
(
HOSTFS_I
(
inode
)
->
fd
!=
-
1
)
{
close_file
(
&
HOSTFS_I
(
inode
)
->
fd
);
printk
(
"Closing host fd in .delete_inode
\n
"
);
HOSTFS_I
(
inode
)
->
fd
=
-
1
;
}
clear_inode
(
inode
);
...
...
@@ -301,9 +301,11 @@ static void hostfs_destroy_inode(struct inode *inode)
if
(
HOSTFS_I
(
inode
)
->
host_filename
)
kfree
(
HOSTFS_I
(
inode
)
->
host_filename
);
/*XXX: This should not happen, probably. The check is here for
* additional safety.*/
if
(
HOSTFS_I
(
inode
)
->
fd
!=
-
1
)
{
close_file
(
&
HOSTFS_I
(
inode
)
->
fd
);
printk
(
"Closing host fd in .destroy_inode
\n
"
);
printk
(
KERN_DEBUG
"Closing host fd in .destroy_inode
\n
"
);
}
kfree
(
HOSTFS_I
(
inode
));
...
...
@@ -522,13 +524,17 @@ static struct address_space_operations hostfs_aops = {
static
int
init_inode
(
struct
inode
*
inode
,
struct
dentry
*
dentry
)
{
char
*
name
;
int
type
,
err
=
-
ENOMEM
,
rdev
;
int
type
,
err
=
-
ENOMEM
;
int
maj
,
min
;
dev_t
rdev
=
0
;
if
(
dentry
){
name
=
dentry_name
(
dentry
,
0
);
if
(
name
==
NULL
)
goto
out
;
type
=
file_type
(
name
,
&
rdev
);
type
=
file_type
(
name
,
&
maj
,
&
min
);
/*Reencode maj and min with the kernel encoding.*/
rdev
=
MKDEV
(
maj
,
min
);
kfree
(
name
);
}
else
type
=
OS_TYPE_DIR
;
...
...
fs/hostfs/hostfs_user.c
View file @
4fc60fac
...
...
@@ -54,14 +54,18 @@ int stat_file(const char *path, unsigned long long *inode_out, int *mode_out,
return
(
0
);
}
int
file_type
(
const
char
*
path
,
int
*
rdev
)
int
file_type
(
const
char
*
path
,
int
*
maj
,
int
*
min
)
{
struct
stat64
buf
;
if
(
lstat64
(
path
,
&
buf
)
<
0
)
return
(
-
errno
);
if
(
rdev
!=
NULL
)
*
rdev
=
buf
.
st_rdev
;
/*We cannot pass rdev as is because glibc and the kernel disagree
*about its definition.*/
if
(
maj
!=
NULL
)
*
maj
=
major
(
buf
.
st_rdev
);
if
(
min
!=
NULL
)
*
min
=
minor
(
buf
.
st_rdev
);
if
(
S_ISDIR
(
buf
.
st_mode
))
return
(
OS_TYPE_DIR
);
else
if
(
S_ISLNK
(
buf
.
st_mode
))
return
(
OS_TYPE_SYMLINK
);
...
...
include/asm-um/uaccess.h
View file @
4fc60fac
...
...
@@ -55,7 +55,7 @@
#define get_user(x, ptr) \
({ \
const __typeof__((*
ptr
)) *private_ptr = (ptr); \
const __typeof__((*
(ptr)
)) *private_ptr = (ptr); \
(access_ok(VERIFY_READ, private_ptr, sizeof(*private_ptr)) ? \
__get_user(x, private_ptr) : ((x) = 0, -EFAULT)); \
})
...
...
kernel/sched.c
View file @
4fc60fac
...
...
@@ -388,7 +388,7 @@ struct sched_domain {
.max_interval = 4, \
.busy_factor = 64, \
.imbalance_pct = 125, \
.cache_hot_time =
(5*1000000/2),
\
.cache_hot_time =
cache_decay_ticks*1000000 ? : (5*1000000/2),
\
.cache_nice_tries = 1, \
.per_cpu_gain = 100, \
.flags = SD_BALANCE_NEWIDLE \
...
...
mm/vmscan.c
View file @
4fc60fac
...
...
@@ -851,6 +851,9 @@ shrink_caches(struct zone **zones, struct scan_control *sc)
for
(
i
=
0
;
zones
[
i
]
!=
NULL
;
i
++
)
{
struct
zone
*
zone
=
zones
[
i
];
if
(
zone
->
present_pages
==
0
)
continue
;
zone
->
temp_priority
=
sc
->
priority
;
if
(
zone
->
prev_priority
>
sc
->
priority
)
zone
->
prev_priority
=
sc
->
priority
;
...
...
@@ -1004,6 +1007,9 @@ static int balance_pgdat(pg_data_t *pgdat, int nr_pages)
for
(
i
=
pgdat
->
nr_zones
-
1
;
i
>=
0
;
i
--
)
{
struct
zone
*
zone
=
pgdat
->
node_zones
+
i
;
if
(
zone
->
present_pages
==
0
)
continue
;
if
(
zone
->
all_unreclaimable
&&
priority
!=
DEF_PRIORITY
)
continue
;
...
...
@@ -1036,6 +1042,9 @@ static int balance_pgdat(pg_data_t *pgdat, int nr_pages)
for
(
i
=
0
;
i
<=
end_zone
;
i
++
)
{
struct
zone
*
zone
=
pgdat
->
node_zones
+
i
;
if
(
zone
->
present_pages
==
0
)
continue
;
if
(
zone
->
all_unreclaimable
&&
priority
!=
DEF_PRIORITY
)
continue
;
...
...
@@ -1159,6 +1168,8 @@ static int kswapd(void *p)
*/
void
wakeup_kswapd
(
struct
zone
*
zone
)
{
if
(
zone
->
present_pages
==
0
)
return
;
if
(
zone
->
free_pages
>
zone
->
pages_low
)
return
;
if
(
!
waitqueue_active
(
&
zone
->
zone_pgdat
->
kswapd_wait
))
...
...
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