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
0676fc12
Commit
0676fc12
authored
Nov 04, 2005
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge master.kernel.org:/home/rmk/linux-2.6-arm
parents
912cbe3c
d56c524a
Changes
30
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
466 additions
and
1043 deletions
+466
-1043
arch/arm/Kconfig
arch/arm/Kconfig
+1
-2
arch/arm/Makefile
arch/arm/Makefile
+2
-1
arch/arm/boot/compressed/head.S
arch/arm/boot/compressed/head.S
+1
-2
arch/arm/configs/ixdp2401_defconfig
arch/arm/configs/ixdp2401_defconfig
+2
-2
arch/arm/configs/ixdp2801_defconfig
arch/arm/configs/ixdp2801_defconfig
+1
-1
arch/arm/configs/realview_defconfig
arch/arm/configs/realview_defconfig
+161
-269
arch/arm/lib/bitops.h
arch/arm/lib/bitops.h
+1
-1
arch/arm/lib/uaccess.S
arch/arm/lib/uaccess.S
+16
-116
arch/arm/mach-clps711x/Kconfig
arch/arm/mach-clps711x/Kconfig
+0
-11
arch/arm/mach-clps711x/Makefile
arch/arm/mach-clps711x/Makefile
+0
-1
arch/arm/mach-clps711x/edb7211-mm.c
arch/arm/mach-clps711x/edb7211-mm.c
+4
-4
arch/arm/mach-clps711x/mp1000-mach.c
arch/arm/mach-clps711x/mp1000-mach.c
+0
-49
arch/arm/mach-clps711x/mp1000-mm.c
arch/arm/mach-clps711x/mp1000-mm.c
+0
-47
arch/arm/mach-clps711x/mp1000-seprom.c
arch/arm/mach-clps711x/mp1000-seprom.c
+0
-195
arch/arm/mach-ixp2000/core.c
arch/arm/mach-ixp2000/core.c
+46
-0
arch/arm/mach-ixp2000/enp2611.c
arch/arm/mach-ixp2000/enp2611.c
+6
-6
arch/arm/mach-pxa/lubbock.c
arch/arm/mach-pxa/lubbock.c
+80
-0
arch/arm/mach-pxa/mainstone.c
arch/arm/mach-pxa/mainstone.c
+88
-2
arch/arm/mm/Kconfig
arch/arm/mm/Kconfig
+12
-0
arch/arm/mm/mm-armv.c
arch/arm/mm/mm-armv.c
+4
-4
drivers/char/nvram.c
drivers/char/nvram.c
+1
-109
drivers/net/Kconfig
drivers/net/Kconfig
+1
-1
drivers/net/cs89x0.c
drivers/net/cs89x0.c
+1
-13
drivers/net/cs89x0.h
drivers/net/cs89x0.h
+1
-1
drivers/serial/clps711x.c
drivers/serial/clps711x.c
+0
-9
include/asm-arm/arch-clps711x/hardware.h
include/asm-arm/arch-clps711x/hardware.h
+0
-117
include/asm-arm/arch-clps711x/mp1000-seprom.h
include/asm-arm/arch-clps711x/mp1000-seprom.h
+0
-77
include/asm-arm/arch-iop3xx/iop321.h
include/asm-arm/arch-iop3xx/iop321.h
+1
-1
include/asm-arm/arch-ixp2000/irqs.h
include/asm-arm/arch-ixp2000/irqs.h
+34
-1
include/asm-arm/mmu_context.h
include/asm-arm/mmu_context.h
+2
-1
No files found.
arch/arm/Kconfig
View file @
0676fc12
...
@@ -704,8 +704,7 @@ source "drivers/acorn/block/Kconfig"
...
@@ -704,8 +704,7 @@ source "drivers/acorn/block/Kconfig"
if PCMCIA || ARCH_CLPS7500 || ARCH_IOP3XX || ARCH_IXP4XX \
if PCMCIA || ARCH_CLPS7500 || ARCH_IOP3XX || ARCH_IXP4XX \
|| ARCH_L7200 || ARCH_LH7A40X || ARCH_PXA || ARCH_RPC \
|| ARCH_L7200 || ARCH_LH7A40X || ARCH_PXA || ARCH_RPC \
|| ARCH_S3C2410 || ARCH_SA1100 || ARCH_SHARK || FOOTBRIDGE \
|| ARCH_S3C2410 || ARCH_SA1100 || ARCH_SHARK || FOOTBRIDGE
|| MACH_MP1000
source "drivers/ide/Kconfig"
source "drivers/ide/Kconfig"
endif
endif
...
...
arch/arm/Makefile
View file @
0676fc12
...
@@ -38,6 +38,7 @@ comma = ,
...
@@ -38,6 +38,7 @@ comma = ,
# macro, but instead defines a whole series of macros which makes
# macro, but instead defines a whole series of macros which makes
# testing for a specific architecture or later rather impossible.
# testing for a specific architecture or later rather impossible.
arch-$(CONFIG_CPU_32v6)
:=
-D__LINUX_ARM_ARCH__
=
6
$(
call
cc-option,-march
=
armv6,-march
=
armv5t
-Wa
$(comma)
-march
=
armv6
)
arch-$(CONFIG_CPU_32v6)
:=
-D__LINUX_ARM_ARCH__
=
6
$(
call
cc-option,-march
=
armv6,-march
=
armv5t
-Wa
$(comma)
-march
=
armv6
)
arch-$(CONFIG_CPU_32v6K)
:=
-D__LINUX_ARM_ARCH__
=
6
$(
call
cc-option,-march
=
armv6k,-march
=
armv5t
-Wa
$(comma)
-march
=
armv6k
)
arch-$(CONFIG_CPU_32v5)
:=
-D__LINUX_ARM_ARCH__
=
5
$(
call
cc-option,-march
=
armv5te,-march
=
armv4
)
arch-$(CONFIG_CPU_32v5)
:=
-D__LINUX_ARM_ARCH__
=
5
$(
call
cc-option,-march
=
armv5te,-march
=
armv4
)
arch-$(CONFIG_CPU_32v4)
:=
-D__LINUX_ARM_ARCH__
=
4
-march
=
armv4
arch-$(CONFIG_CPU_32v4)
:=
-D__LINUX_ARM_ARCH__
=
4
-march
=
armv4
arch-$(CONFIG_CPU_32v3)
:=
-D__LINUX_ARM_ARCH__
=
3
-march
=
armv3
arch-$(CONFIG_CPU_32v3)
:=
-D__LINUX_ARM_ARCH__
=
3
-march
=
armv3
...
@@ -143,7 +144,7 @@ drivers-$(CONFIG_OPROFILE) += arch/arm/oprofile/
...
@@ -143,7 +144,7 @@ drivers-$(CONFIG_OPROFILE) += arch/arm/oprofile/
drivers-$(CONFIG_ARCH_CLPS7500)
+=
drivers/acorn/char/
drivers-$(CONFIG_ARCH_CLPS7500)
+=
drivers/acorn/char/
drivers-$(CONFIG_ARCH_L7200)
+=
drivers/acorn/char/
drivers-$(CONFIG_ARCH_L7200)
+=
drivers/acorn/char/
libs-y
+=
arch
/arm/lib/
libs-y
:=
arch
/arm/lib/
$
(
libs-y
)
# Default target when executing plain make
# Default target when executing plain make
ifeq
($(CONFIG_XIP_KERNEL),y)
ifeq
($(CONFIG_XIP_KERNEL),y)
...
...
arch/arm/boot/compressed/head.S
View file @
0676fc12
...
@@ -39,8 +39,7 @@
...
@@ -39,8 +39,7 @@
defined
(
CONFIG_ARCH_IXP4XX
)
||
\
defined
(
CONFIG_ARCH_IXP4XX
)
||
\
defined
(
CONFIG_ARCH_IXP2000
)
||
\
defined
(
CONFIG_ARCH_IXP2000
)
||
\
defined
(
CONFIG_ARCH_LH7A40X
)
||
\
defined
(
CONFIG_ARCH_LH7A40X
)
||
\
defined
(
CONFIG_ARCH_OMAP
)
||
\
defined
(
CONFIG_ARCH_OMAP
)
defined
(
CONFIG_MACH_MP1000
)
.
macro
loadsp
,
rb
.
macro
loadsp
,
rb
addruart
\
rb
addruart
\
rb
.
endm
.
endm
...
...
arch/arm/configs/ixdp2401_defconfig
View file @
0676fc12
...
@@ -152,7 +152,7 @@ CONFIG_ALIGNMENT_TRAP=y
...
@@ -152,7 +152,7 @@ CONFIG_ALIGNMENT_TRAP=y
#
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="console=ttyS0,
576
00 root=/dev/nfs ip=bootp mem=64M@0x0 pci=firmware"
CONFIG_CMDLINE="console=ttyS0,
1152
00 root=/dev/nfs ip=bootp mem=64M@0x0 pci=firmware"
# CONFIG_XIP_KERNEL is not set
# CONFIG_XIP_KERNEL is not set
#
#
...
@@ -560,7 +560,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
...
@@ -560,7 +560,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
#
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=
2
CONFIG_SERIAL_8250_NR_UARTS=
3
# CONFIG_SERIAL_8250_EXTENDED is not set
# CONFIG_SERIAL_8250_EXTENDED is not set
#
#
...
...
arch/arm/configs/ixdp2801_defconfig
View file @
0676fc12
...
@@ -560,7 +560,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
...
@@ -560,7 +560,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
#
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=
2
CONFIG_SERIAL_8250_NR_UARTS=
3
# CONFIG_SERIAL_8250_EXTENDED is not set
# CONFIG_SERIAL_8250_EXTENDED is not set
#
#
...
...
arch/arm/configs/
mp1000
_defconfig
→
arch/arm/configs/
realview
_defconfig
View file @
0676fc12
This diff is collapsed.
Click to expand it.
arch/arm/lib/bitops.h
View file @
0676fc12
#include <linux/config.h>
#include <linux/config.h>
#if __LINUX_ARM_ARCH__ >= 6 && defined(CONFIG_CPU_
MPCORE
)
#if __LINUX_ARM_ARCH__ >= 6 && defined(CONFIG_CPU_
32v6K
)
.
macro
bitop
,
instr
.
macro
bitop
,
instr
mov
r2
,
#
1
mov
r2
,
#
1
and
r3
,
r0
,
#
7
@
Get
bit
offset
and
r3
,
r0
,
#
7
@
Get
bit
offset
...
...
arch/arm/lib/uaccess.S
View file @
0676fc12
...
@@ -43,8 +43,6 @@ ENTRY(__arch_copy_to_user)
...
@@ -43,8 +43,6 @@ ENTRY(__arch_copy_to_user)
stmfd
sp
!,
{
r2
,
r4
-
r7
,
lr
}
stmfd
sp
!,
{
r2
,
r4
-
r7
,
lr
}
cmp
r2
,
#
4
cmp
r2
,
#
4
blt
.
c2u_not_enough
blt
.
c2u_not_enough
PLD
(
pld
[
r1
,
#
0
]
)
PLD
(
pld
[
r0
,
#
0
]
)
ands
ip
,
r0
,
#
3
ands
ip
,
r0
,
#
3
bne
.
c2u_dest_not_aligned
bne
.
c2u_dest_not_aligned
.
c2u_dest_aligned
:
.
c2u_dest_aligned
:
...
@@ -73,25 +71,13 @@ USER( strt r3, [r0], #4) @ May fault
...
@@ -73,25 +71,13 @@ USER( strt r3, [r0], #4) @ May fault
sub
r2
,
r2
,
ip
sub
r2
,
r2
,
ip
subs
ip
,
ip
,
#
32
subs
ip
,
ip
,
#
32
blt
.
c2u_0rem8lp
blt
.
c2u_0rem8lp
PLD
(
pld
[
r1
,
#
28
]
)
PLD
(
pld
[
r0
,
#
28
]
)
.
c2u_0cpy8lp
:
ldmia
r1
!,
{
r3
-
r6
}
PLD
(
subs
ip
,
ip
,
#
64
)
PLD
(
blt
.
c2u_0cpynopld
)
PLD
(
pld
[
r1
,
#
60
]
)
PLD
(
pld
[
r0
,
#
60
]
)
.
c2u_0cpy8lp
:
PLD
(
pld
[
r1
,
#
92
]
)
PLD
(
pld
[
r0
,
#
92
]
)
.
c2u_0cpynopld
:
ldmia
r1
!,
{
r3
-
r6
}
stmia
r0
!,
{
r3
-
r6
}
@
Shouldnt
fault
stmia
r0
!,
{
r3
-
r6
}
@
Shouldnt
fault
ldmia
r1
!,
{
r3
-
r6
}
ldmia
r1
!,
{
r3
-
r6
}
subs
ip
,
ip
,
#
32
subs
ip
,
ip
,
#
32
stmia
r0
!,
{
r3
-
r6
}
@
Shouldnt
fault
stmia
r0
!,
{
r3
-
r6
}
@
Shouldnt
fault
bpl
.
c2u_0cpy8lp
bpl
.
c2u_0cpy8lp
PLD
(
cmn
ip
,
#
64
)
PLD
(
bge
.
c2u_0cpynopld
)
PLD
(
add
ip
,
ip
,
#
64
)
.
c2u_0rem8lp
:
cmn
ip
,
#
16
.
c2u_0rem8lp
:
cmn
ip
,
#
16
ldmgeia
r1
!,
{
r3
-
r6
}
ldmgeia
r1
!,
{
r3
-
r6
}
...
@@ -143,17 +129,8 @@ USER( strt r3, [r0], #4) @ May fault
...
@@ -143,17 +129,8 @@ USER( strt r3, [r0], #4) @ May fault
sub
r2
,
r2
,
ip
sub
r2
,
r2
,
ip
subs
ip
,
ip
,
#
16
subs
ip
,
ip
,
#
16
blt
.
c2u_1rem8lp
blt
.
c2u_1rem8lp
PLD
(
pld
[
r1
,
#
12
]
)
PLD
(
pld
[
r0
,
#
12
]
)
.
c2u_1cpy8lp
:
mov
r3
,
r7
,
pull
#
8
PLD
(
subs
ip
,
ip
,
#
32
)
PLD
(
blt
.
c2u_1cpynopld
)
PLD
(
pld
[
r1
,
#
28
]
)
PLD
(
pld
[
r0
,
#
28
]
)
.
c2u_1cpy8lp
:
PLD
(
pld
[
r1
,
#
44
]
)
PLD
(
pld
[
r0
,
#
44
]
)
.
c2u_1cpynopld
:
mov
r3
,
r7
,
pull
#
8
ldmia
r1
!,
{
r4
-
r7
}
ldmia
r1
!,
{
r4
-
r7
}
subs
ip
,
ip
,
#
16
subs
ip
,
ip
,
#
16
orr
r3
,
r3
,
r4
,
push
#
24
orr
r3
,
r3
,
r4
,
push
#
24
...
@@ -165,9 +142,6 @@ USER( strt r3, [r0], #4) @ May fault
...
@@ -165,9 +142,6 @@ USER( strt r3, [r0], #4) @ May fault
orr
r6
,
r6
,
r7
,
push
#
24
orr
r6
,
r6
,
r7
,
push
#
24
stmia
r0
!,
{
r3
-
r6
}
@
Shouldnt
fault
stmia
r0
!,
{
r3
-
r6
}
@
Shouldnt
fault
bpl
.
c2u_1cpy8lp
bpl
.
c2u_1cpy8lp
PLD
(
cmn
ip
,
#
32
)
PLD
(
bge
.
c2u_1cpynopld
)
PLD
(
add
ip
,
ip
,
#
32
)
.
c2u_1rem8lp
:
tst
ip
,
#
8
.
c2u_1rem8lp
:
tst
ip
,
#
8
movne
r3
,
r7
,
pull
#
8
movne
r3
,
r7
,
pull
#
8
...
@@ -210,17 +184,8 @@ USER( strt r3, [r0], #4) @ May fault
...
@@ -210,17 +184,8 @@ USER( strt r3, [r0], #4) @ May fault
sub
r2
,
r2
,
ip
sub
r2
,
r2
,
ip
subs
ip
,
ip
,
#
16
subs
ip
,
ip
,
#
16
blt
.
c2u_2rem8lp
blt
.
c2u_2rem8lp
PLD
(
pld
[
r1
,
#
12
]
)
PLD
(
pld
[
r0
,
#
12
]
)
.
c2u_2cpy8lp
:
mov
r3
,
r7
,
pull
#
16
PLD
(
subs
ip
,
ip
,
#
32
)
PLD
(
blt
.
c2u_2cpynopld
)
PLD
(
pld
[
r1
,
#
28
]
)
PLD
(
pld
[
r0
,
#
28
]
)
.
c2u_2cpy8lp
:
PLD
(
pld
[
r1
,
#
44
]
)
PLD
(
pld
[
r0
,
#
44
]
)
.
c2u_2cpynopld
:
mov
r3
,
r7
,
pull
#
16
ldmia
r1
!,
{
r4
-
r7
}
ldmia
r1
!,
{
r4
-
r7
}
subs
ip
,
ip
,
#
16
subs
ip
,
ip
,
#
16
orr
r3
,
r3
,
r4
,
push
#
16
orr
r3
,
r3
,
r4
,
push
#
16
...
@@ -232,9 +197,6 @@ USER( strt r3, [r0], #4) @ May fault
...
@@ -232,9 +197,6 @@ USER( strt r3, [r0], #4) @ May fault
orr
r6
,
r6
,
r7
,
push
#
16
orr
r6
,
r6
,
r7
,
push
#
16
stmia
r0
!,
{
r3
-
r6
}
@
Shouldnt
fault
stmia
r0
!,
{
r3
-
r6
}
@
Shouldnt
fault
bpl
.
c2u_2cpy8lp
bpl
.
c2u_2cpy8lp
PLD
(
cmn
ip
,
#
32
)
PLD
(
bge
.
c2u_2cpynopld
)
PLD
(
add
ip
,
ip
,
#
32
)
.
c2u_2rem8lp
:
tst
ip
,
#
8
.
c2u_2rem8lp
:
tst
ip
,
#
8
movne
r3
,
r7
,
pull
#
16
movne
r3
,
r7
,
pull
#
16
...
@@ -277,17 +239,8 @@ USER( strt r3, [r0], #4) @ May fault
...
@@ -277,17 +239,8 @@ USER( strt r3, [r0], #4) @ May fault
sub
r2
,
r2
,
ip
sub
r2
,
r2
,
ip
subs
ip
,
ip
,
#
16
subs
ip
,
ip
,
#
16
blt
.
c2u_3rem8lp
blt
.
c2u_3rem8lp
PLD
(
pld
[
r1
,
#
12
]
)
PLD
(
pld
[
r0
,
#
12
]
)
.
c2u_3cpy8lp
:
mov
r3
,
r7
,
pull
#
24
PLD
(
subs
ip
,
ip
,
#
32
)
PLD
(
blt
.
c2u_3cpynopld
)
PLD
(
pld
[
r1
,
#
28
]
)
PLD
(
pld
[
r0
,
#
28
]
)
.
c2u_3cpy8lp
:
PLD
(
pld
[
r1
,
#
44
]
)
PLD
(
pld
[
r0
,
#
44
]
)
.
c2u_3cpynopld
:
mov
r3
,
r7
,
pull
#
24
ldmia
r1
!,
{
r4
-
r7
}
ldmia
r1
!,
{
r4
-
r7
}
subs
ip
,
ip
,
#
16
subs
ip
,
ip
,
#
16
orr
r3
,
r3
,
r4
,
push
#
8
orr
r3
,
r3
,
r4
,
push
#
8
...
@@ -299,9 +252,6 @@ USER( strt r3, [r0], #4) @ May fault
...
@@ -299,9 +252,6 @@ USER( strt r3, [r0], #4) @ May fault
orr
r6
,
r6
,
r7
,
push
#
8
orr
r6
,
r6
,
r7
,
push
#
8
stmia
r0
!,
{
r3
-
r6
}
@
Shouldnt
fault
stmia
r0
!,
{
r3
-
r6
}
@
Shouldnt
fault
bpl
.
c2u_3cpy8lp
bpl
.
c2u_3cpy8lp
PLD
(
cmn
ip
,
#
32
)
PLD
(
bge
.
c2u_3cpynopld
)
PLD
(
add
ip
,
ip
,
#
32
)
.
c2u_3rem8lp
:
tst
ip
,
#
8
.
c2u_3rem8lp
:
tst
ip
,
#
8
movne
r3
,
r7
,
pull
#
24
movne
r3
,
r7
,
pull
#
24
...
@@ -356,8 +306,6 @@ ENTRY(__arch_copy_from_user)
...
@@ -356,8 +306,6 @@ ENTRY(__arch_copy_from_user)
stmfd
sp
!,
{
r0
,
r2
,
r4
-
r7
,
lr
}
stmfd
sp
!,
{
r0
,
r2
,
r4
-
r7
,
lr
}
cmp
r2
,
#
4
cmp
r2
,
#
4
blt
.
cfu_not_enough
blt
.
cfu_not_enough
PLD
(
pld
[
r1
,
#
0
]
)
PLD
(
pld
[
r0
,
#
0
]
)
ands
ip
,
r0
,
#
3
ands
ip
,
r0
,
#
3
bne
.
cfu_dest_not_aligned
bne
.
cfu_dest_not_aligned
.
cfu_dest_aligned
:
.
cfu_dest_aligned
:
...
@@ -385,25 +333,13 @@ USER( ldrt r3, [r1], #4)
...
@@ -385,25 +333,13 @@ USER( ldrt r3, [r1], #4)
sub
r2
,
r2
,
ip
sub
r2
,
r2
,
ip
subs
ip
,
ip
,
#
32
subs
ip
,
ip
,
#
32
blt
.
cfu_0rem8lp
blt
.
cfu_0rem8lp
PLD
(
pld
[
r1
,
#
28
]
)
PLD
(
pld
[
r0
,
#
28
]
)
.
cfu_0cpy8lp
:
ldmia
r1
!,
{
r3
-
r6
}
@
Shouldnt
fault
PLD
(
subs
ip
,
ip
,
#
64
)
PLD
(
blt
.
cfu_0cpynopld
)
PLD
(
pld
[
r1
,
#
60
]
)
PLD
(
pld
[
r0
,
#
60
]
)
.
cfu_0cpy8lp
:
PLD
(
pld
[
r1
,
#
92
]
)
PLD
(
pld
[
r0
,
#
92
]
)
.
cfu_0cpynopld
:
ldmia
r1
!,
{
r3
-
r6
}
@
Shouldnt
fault
stmia
r0
!,
{
r3
-
r6
}
stmia
r0
!,
{
r3
-
r6
}
ldmia
r1
!,
{
r3
-
r6
}
@
Shouldnt
fault
ldmia
r1
!,
{
r3
-
r6
}
@
Shouldnt
fault
subs
ip
,
ip
,
#
32
subs
ip
,
ip
,
#
32
stmia
r0
!,
{
r3
-
r6
}
stmia
r0
!,
{
r3
-
r6
}
bpl
.
cfu_0cpy8lp
bpl
.
cfu_0cpy8lp
PLD
(
cmn
ip
,
#
64
)
PLD
(
bge
.
cfu_0cpynopld
)
PLD
(
add
ip
,
ip
,
#
64
)
.
cfu_0rem8lp
:
cmn
ip
,
#
16
.
cfu_0rem8lp
:
cmn
ip
,
#
16
ldmgeia
r1
!,
{
r3
-
r6
}
@
Shouldnt
fault
ldmgeia
r1
!,
{
r3
-
r6
}
@
Shouldnt
fault
...
@@ -456,17 +392,8 @@ USER( ldrt r7, [r1], #4) @ May fault
...
@@ -456,17 +392,8 @@ USER( ldrt r7, [r1], #4) @ May fault
sub
r2
,
r2
,
ip
sub
r2
,
r2
,
ip
subs
ip
,
ip
,
#
16
subs
ip
,
ip
,
#
16
blt
.
cfu_1rem8lp
blt
.
cfu_1rem8lp
PLD
(
pld
[
r1
,
#
12
]
)
PLD
(
pld
[
r0
,
#
12
]
)
.
cfu_1cpy8lp
:
mov
r3
,
r7
,
pull
#
8
PLD
(
subs
ip
,
ip
,
#
32
)
PLD
(
blt
.
cfu_1cpynopld
)
PLD
(
pld
[
r1
,
#
28
]
)
PLD
(
pld
[
r0
,
#
28
]
)
.
cfu_1cpy8lp
:
PLD
(
pld
[
r1
,
#
44
]
)
PLD
(
pld
[
r0
,
#
44
]
)
.
cfu_1cpynopld
:
mov
r3
,
r7
,
pull
#
8
ldmia
r1
!,
{
r4
-
r7
}
@
Shouldnt
fault
ldmia
r1
!,
{
r4
-
r7
}
@
Shouldnt
fault
subs
ip
,
ip
,
#
16
subs
ip
,
ip
,
#
16
orr
r3
,
r3
,
r4
,
push
#
24
orr
r3
,
r3
,
r4
,
push
#
24
...
@@ -478,9 +405,6 @@ USER( ldrt r7, [r1], #4) @ May fault
...
@@ -478,9 +405,6 @@ USER( ldrt r7, [r1], #4) @ May fault
orr
r6
,
r6
,
r7
,
push
#
24
orr
r6
,
r6
,
r7
,
push
#
24
stmia
r0
!,
{
r3
-
r6
}
stmia
r0
!,
{
r3
-
r6
}
bpl
.
cfu_1cpy8lp
bpl
.
cfu_1cpy8lp
PLD
(
cmn
ip
,
#
32
)
PLD
(
bge
.
cfu_1cpynopld
)
PLD
(
add
ip
,
ip
,
#
32
)
.
cfu_1rem8lp
:
tst
ip
,
#
8
.
cfu_1rem8lp
:
tst
ip
,
#
8
movne
r3
,
r7
,
pull
#
8
movne
r3
,
r7
,
pull
#
8
...
@@ -523,17 +447,8 @@ USER( ldrt r7, [r1], #4) @ May fault
...
@@ -523,17 +447,8 @@ USER( ldrt r7, [r1], #4) @ May fault
sub
r2
,
r2
,
ip
sub
r2
,
r2
,
ip
subs
ip
,
ip
,
#
16
subs
ip
,
ip
,
#
16
blt
.
cfu_2rem8lp
blt
.
cfu_2rem8lp
PLD
(
pld
[
r1
,
#
12
]
)
PLD
(
pld
[
r0
,
#
12
]
)
.
cfu_2cpy8lp
:
mov
r3
,
r7
,
pull
#
16
PLD
(
subs
ip
,
ip
,
#
32
)
PLD
(
blt
.
cfu_2cpynopld
)
PLD
(
pld
[
r1
,
#
28
]
)
PLD
(
pld
[
r0
,
#
28
]
)
.
cfu_2cpy8lp
:
PLD
(
pld
[
r1
,
#
44
]
)
PLD
(
pld
[
r0
,
#
44
]
)
.
cfu_2cpynopld
:
mov
r3
,
r7
,
pull
#
16
ldmia
r1
!,
{
r4
-
r7
}
@
Shouldnt
fault
ldmia
r1
!,
{
r4
-
r7
}
@
Shouldnt
fault
subs
ip
,
ip
,
#
16
subs
ip
,
ip
,
#
16
orr
r3
,
r3
,
r4
,
push
#
16
orr
r3
,
r3
,
r4
,
push
#
16
...
@@ -545,9 +460,6 @@ USER( ldrt r7, [r1], #4) @ May fault
...
@@ -545,9 +460,6 @@ USER( ldrt r7, [r1], #4) @ May fault
orr
r6
,
r6
,
r7
,
push
#
16
orr
r6
,
r6
,
r7
,
push
#
16
stmia
r0
!,
{
r3
-
r6
}
stmia
r0
!,
{
r3
-
r6
}
bpl
.
cfu_2cpy8lp
bpl
.
cfu_2cpy8lp
PLD
(
cmn
ip
,
#
32
)
PLD
(
bge
.
cfu_2cpynopld
)
PLD
(
add
ip
,
ip
,
#
32
)
.
cfu_2rem8lp
:
tst
ip
,
#
8
.
cfu_2rem8lp
:
tst
ip
,
#
8
movne
r3
,
r7
,
pull
#
16
movne
r3
,
r7
,
pull
#
16
...
@@ -590,17 +502,8 @@ USER( ldrt r7, [r1], #4) @ May fault
...
@@ -590,17 +502,8 @@ USER( ldrt r7, [r1], #4) @ May fault
sub
r2
,
r2
,
ip
sub
r2
,
r2
,
ip
subs
ip
,
ip
,
#
16
subs
ip
,
ip
,
#
16
blt
.
cfu_3rem8lp
blt
.
cfu_3rem8lp
PLD
(
pld
[
r1
,
#
12
]
)
PLD
(
pld
[
r0
,
#
12
]
)
.
cfu_3cpy8lp
:
mov
r3
,
r7
,
pull
#
24
PLD
(
subs
ip
,
ip
,
#
32
)
PLD
(
blt
.
cfu_3cpynopld
)
PLD
(
pld
[
r1
,
#
28
]
)
PLD
(
pld
[
r0
,
#
28
]
)
.
cfu_3cpy8lp
:
PLD
(
pld
[
r1
,
#
44
]
)
PLD
(
pld
[
r0
,
#
44
]
)
.
cfu_3cpynopld
:
mov
r3
,
r7
,
pull
#
24
ldmia
r1
!,
{
r4
-
r7
}
@
Shouldnt
fault
ldmia
r1
!,
{
r4
-
r7
}
@
Shouldnt
fault
orr
r3
,
r3
,
r4
,
push
#
8
orr
r3
,
r3
,
r4
,
push
#
8
mov
r4
,
r4
,
pull
#
24
mov
r4
,
r4
,
pull
#
24
...
@@ -612,9 +515,6 @@ USER( ldrt r7, [r1], #4) @ May fault
...
@@ -612,9 +515,6 @@ USER( ldrt r7, [r1], #4) @ May fault
stmia
r0
!,
{
r3
-
r6
}
stmia
r0
!,
{
r3
-
r6
}
subs
ip
,
ip
,
#
16
subs
ip
,
ip
,
#
16
bpl
.
cfu_3cpy8lp
bpl
.
cfu_3cpy8lp
PLD
(
cmn
ip
,
#
32
)
PLD
(
bge
.
cfu_3cpynopld
)
PLD
(
add
ip
,
ip
,
#
32
)
.
cfu_3rem8lp
:
tst
ip
,
#
8
.
cfu_3rem8lp
:
tst
ip
,
#
8
movne
r3
,
r7
,
pull
#
24
movne
r3
,
r7
,
pull
#
24
...
...
arch/arm/mach-clps711x/Kconfig
View file @
0676fc12
...
@@ -69,17 +69,6 @@ config EP72XX_ROM_BOOT
...
@@ -69,17 +69,6 @@ config EP72XX_ROM_BOOT
You almost surely want to say N here.
You almost surely want to say N here.
config MACH_MP1000
bool "MACH_MP1000"
help
Say Y if you intend to run the kernel on the Comdial MP1000 platform.
config MP1000_90MHZ
bool "MP1000_90MHZ"
depends on MACH_MP1000
help
Say Y if you have the MP1000 configured to be set at 90MHZ rather than 74MHZ
endmenu
endmenu
endif
endif
arch/arm/mach-clps711x/Makefile
View file @
0676fc12
...
@@ -15,7 +15,6 @@ obj-$(CONFIG_ARCH_CDB89712) += cdb89712.o
...
@@ -15,7 +15,6 @@ obj-$(CONFIG_ARCH_CDB89712) += cdb89712.o
obj-$(CONFIG_ARCH_CLEP7312)
+=
clep7312.o
obj-$(CONFIG_ARCH_CLEP7312)
+=
clep7312.o
obj-$(CONFIG_ARCH_EDB7211)
+=
edb7211-arch.o edb7211-mm.o
obj-$(CONFIG_ARCH_EDB7211)
+=
edb7211-arch.o edb7211-mm.o
obj-$(CONFIG_ARCH_FORTUNET)
+=
fortunet.o
obj-$(CONFIG_ARCH_FORTUNET)
+=
fortunet.o
obj-$(CONFIG_MACH_MP1000)
+=
mp1000-mach.o mp1000-mm.o mp1000-seprom.o
obj-$(CONFIG_ARCH_P720T)
+=
p720t.o
obj-$(CONFIG_ARCH_P720T)
+=
p720t.o
leds-$(CONFIG_ARCH_P720T)
+=
p720t-leds.o
leds-$(CONFIG_ARCH_P720T)
+=
p720t-leds.o
obj-$(CONFIG_LEDS)
+=
$
(
leds-y
)
obj-$(CONFIG_LEDS)
+=
$
(
leds-y
)
arch/arm/mach-clps711x/edb7211-mm.c
View file @
0676fc12
...
@@ -55,22 +55,22 @@ static struct map_desc edb7211_io_desc[] __initdata = {
...
@@ -55,22 +55,22 @@ static struct map_desc edb7211_io_desc[] __initdata = {
.
virtual
=
EP7211_VIRT_EXTKBD
,
.
virtual
=
EP7211_VIRT_EXTKBD
,
.
pfn
=
__phys_to_pfn
(
EP7211_PHYS_EXTKBD
),
.
pfn
=
__phys_to_pfn
(
EP7211_PHYS_EXTKBD
),
.
length
=
SZ_1M
,
.
length
=
SZ_1M
,
.
type
-
MT_DEVICE
.
type
=
MT_DEVICE
,
},
{
/* and CS8900A Ethernet chip */
},
{
/* and CS8900A Ethernet chip */
.
virtual
=
EP7211_VIRT_CS8900A
,
.
virtual
=
EP7211_VIRT_CS8900A
,
.
pfn
=
__phys_to_pfn
(
EP7211_PHYS_CS8900A
),
.
pfn
=
__phys_to_pfn
(
EP7211_PHYS_CS8900A
),
.
length
=
SZ_1M
,
.
length
=
SZ_1M
,
.
type
=
MT_DEVICE
.
type
=
MT_DEVICE
,
},
{
/* flash banks */
},
{
/* flash banks */
.
virtual
=
EP7211_VIRT_FLASH1
,
.
virtual
=
EP7211_VIRT_FLASH1
,
.
pfn
=
__phys_to_pfn
(
EP7211_PHYS_FLASH1
),
.
pfn
=
__phys_to_pfn
(
EP7211_PHYS_FLASH1
),
.
length
=
SZ_8M
,
.
length
=
SZ_8M
,
.
type
=
MT_DEVICE
.
type
=
MT_DEVICE
,
},
{
},
{
.
virtual
=
EP7211_VIRT_FLASH2
,
.
virtual
=
EP7211_VIRT_FLASH2
,
.
pfn
=
__phys_to_pfn
(
EP7211_PHYS_FLASH2
),
.
pfn
=
__phys_to_pfn
(
EP7211_PHYS_FLASH2
),
.
length
=
SZ_8M
,
.
length
=
SZ_8M
,
.
type
=
MT_DEVICE
.
type
=
MT_DEVICE
,
}
}
};
};
...
...
arch/arm/mach-clps711x/mp1000-mach.c
deleted
100644 → 0
View file @
912cbe3c
/*
* linux/arch/arm/mach-mp1000/mp1000.c
*
* Copyright (C) 2005 Comdial Corporation
*
* 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 option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <linux/init.h>
#include <linux/types.h>
#include <linux/string.h>
#include <asm/setup.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/arch/mp1000-seprom.h>
#include "common.h"
extern
void
mp1000_map_io
(
void
);
static
void
__init
mp1000_init
(
void
)
{
seprom_init
();
}
MACHINE_START
(
MP1000
,
"Comdial MP1000"
)
/* Maintainer: Jon Ringle */
.
phys_ram
=
0xc0000000
,
.
phys_io
=
0x80000000
,
.
io_pg_offst
=
((
0xff000000
)
>>
18
)
&
0xfffc
,
.
boot_params
=
0xc0015100
,
.
map_io
=
mp1000_map_io
,
.
init_irq
=
clps711x_init_irq
,
.
init_machine
=
mp1000_init
,
.
timer
=
&
clps711x_timer
,
MACHINE_END
arch/arm/mach-clps711x/mp1000-mm.c
deleted
100644 → 0
View file @
912cbe3c
/*
* linux/arch/arm/mach-mp1000/mm.c
*
* Extra MM routines for the MP1000
*
* Copyright (C) 2005 Comdial Corporation
*
* 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 option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <linux/kernel.h>
#include <linux/init.h>
#include <asm/hardware.h>
#include <asm/page.h>
#include <asm/pgtable.h>
#include <asm/sizes.h>
#include <asm/mach/map.h>
extern
void
clps711x_map_io
(
void
);
static
struct
map_desc
mp1000_io_desc
[]
__initdata
=
{
{
MP1000_EIO_BASE
,
MP1000_EIO_START
,
MP1000_EIO_SIZE
,
MT_DEVICE
},
{
MP1000_FIO_BASE
,
MP1000_FIO_START
,
MP1000_FIO_SIZE
,
MT_DEVICE
},
{
MP1000_LIO_BASE
,
MP1000_LIO_START
,
MP1000_LIO_SIZE
,
MT_DEVICE
},
{
MP1000_NIO_BASE
,
MP1000_NIO_START
,
MP1000_NIO_SIZE
,
MT_DEVICE
},
{
MP1000_IDE_BASE
,
MP1000_IDE_START
,
MP1000_IDE_SIZE
,
MT_DEVICE
},
{
MP1000_DSP_BASE
,
MP1000_DSP_START
,
MP1000_DSP_SIZE
,
MT_DEVICE
}
};
void
__init
mp1000_map_io
(
void
)
{
clps711x_map_io
();
iotable_init
(
mp1000_io_desc
,
ARRAY_SIZE
(
mp1000_io_desc
));
}
arch/arm/mach-clps711x/mp1000-seprom.c
deleted
100644 → 0
View file @
912cbe3c
/*`
* mp1000-seprom.c
*
* This file contains the Serial EEPROM code for the MP1000 board
*
* Copyright (C) 2005 Comdial Corporation
*
* 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 option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
#include <linux/kernel.h>
#include <linux/init.h>
#include <asm/hardware.h>
#include <asm/hardware/clps7111.h>
#include <asm/arch/mp1000-seprom.h>
/* If SepromInit() can initialize and checksum the seprom successfully, */
/* then it will point seprom_data_ptr at the shadow copy. */
static
eeprom_struct
seprom_data
;
/* shadow copy of seprom content */
eeprom_struct
*
seprom_data_ptr
=
0
;
/* 0 => not initialized */
/*
* Port D Bit 5 is Chip Select for EEPROM
* Port E Bit 0 is Input, Data out from EEPROM
* Port E Bit 1 is Output, Data in to EEPROM
* Port E Bit 2 is Output, CLK to EEPROM
*/
static
char
*
port_d_ptr
=
(
char
*
)(
CLPS7111_VIRT_BASE
+
PDDR
);
static
char
*
port_e_ptr
=
(
char
*
)(
CLPS7111_VIRT_BASE
+
PEDR
);
#define NO_OF_SHORTS 64 // Device is 64 x 16 bits
#define ENABLE_RW 0
#define DISABLE_RW 1
static
inline
void
toggle_seprom_clock
(
void
)
{
*
port_e_ptr
|=
HwPortESepromCLK
;
*
port_e_ptr
&=
~
(
HwPortESepromCLK
);
}
static
inline
void
select_eeprom
(
void
)
{
*
port_d_ptr
|=
HwPortDEECS
;
*
port_e_ptr
&=
~
(
HwPortESepromCLK
);
}
static
inline
void
deselect_eeprom
(
void
)
{
*
port_d_ptr
&=
~
(
HwPortDEECS
);
*
port_e_ptr
&=
~
(
HwPortESepromDIn
);
}
/*
* GetSepromDataPtr - returns pointer to shadow (RAM) copy of seprom
* and returns 0 if seprom is not initialized or
* has a checksum error.
*/
eeprom_struct
*
get_seprom_ptr
(
void
)
{
return
seprom_data_ptr
;
}
unsigned
char
*
get_eeprom_mac_address
(
void
)
{
return
seprom_data_ptr
->
variant
.
eprom_struct
.
mac_Address
;
}
/*
* ReadSProm, Physically reads data from the Serial PROM
*/
static
void
read_sprom
(
short
address
,
int
length
,
eeprom_struct
*
buffer
)
{
short
data
=
COMMAND_READ
|
(
address
&
0x3F
);
short
bit
;
int
i
;
select_eeprom
();
// Clock in 9 bits of the command
for
(
i
=
0
,
bit
=
0x100
;
i
<
9
;
i
++
,
bit
>>=
1
)
{
if
(
data
&
bit
)
*
port_e_ptr
|=
HwPortESepromDIn
;
else
*
port_e_ptr
&=
~
(
HwPortESepromDIn
);
toggle_seprom_clock
();
}
//
// Now read one or more shorts of data from the Seprom
//
while
(
length
--
>
0
)
{
data
=
0
;
// Read 16 bits at a time
for
(
i
=
0
;
i
<
16
;
i
++
)
{
data
<<=
1
;
toggle_seprom_clock
();
data
|=
*
port_e_ptr
&
HwPortESepromDOut
;
}
buffer
->
variant
.
eprom_short_data
[
address
++
]
=
data
;
}
deselect_eeprom
();
return
;
}
/*
* ReadSerialPROM
*
* Input: Pointer to array of 64 x 16 Bits
*
* Output: if no problem reading data is filled in
*/
static
void
read_serial_prom
(
eeprom_struct
*
data
)
{
read_sprom
(
0
,
64
,
data
);
}
//
// Compute Serial EEPROM checksum
//
// Input: Pointer to struct with Eprom data
//
// Output: The computed Eprom checksum
//
static
short
compute_seprom_checksum
(
eeprom_struct
*
data
)
{
short
checksum
=
0
;
int
i
;
for
(
i
=
0
;
i
<
126
;
i
++
)
{
checksum
+=
(
short
)
data
->
variant
.
eprom_byte_data
[
i
];
}
return
((
short
)(
0x5555
-
(
checksum
&
0xFFFF
)));
}
//
// Make sure the data port bits for the SEPROM are correctly initialised
//
void
__init
seprom_init
(
void
)
{
short
checksum
;
// Init Port D
*
(
char
*
)(
CLPS7111_VIRT_BASE
+
PDDDR
)
=
0x0
;
*
(
char
*
)(
CLPS7111_VIRT_BASE
+
PDDR
)
=
0x15
;
// Init Port E
*
(
int
*
)(
CLPS7111_VIRT_BASE
+
PEDDR
)
=
0x06
;
*
(
int
*
)(
CLPS7111_VIRT_BASE
+
PEDR
)
=
0x04
;
//
// Make sure that EEPROM struct size never exceeds 128 bytes
//
if
(
sizeof
(
eeprom_struct
)
>
128
)
{
panic
(
"Serial PROM struct size > 128, aborting read
\n
"
);
}
read_serial_prom
(
&
seprom_data
);
checksum
=
compute_seprom_checksum
(
&
seprom_data
);
if
(
checksum
!=
seprom_data
.
variant
.
eprom_short_data
[
63
])
{
panic
(
"Serial EEPROM checksum failed
\n
"
);
}
seprom_data_ptr
=
&
seprom_data
;
}
arch/arm/mach-ixp2000/core.c
View file @
0676fc12
...
@@ -402,6 +402,40 @@ static void ixp2000_pci_irq_unmask(unsigned int irq)
...
@@ -402,6 +402,40 @@ static void ixp2000_pci_irq_unmask(unsigned int irq)
ixp2000_reg_write
(
IXP2000_PCI_XSCALE_INT_ENABLE
,
(
temp
|
(
1
<<
27
)));
ixp2000_reg_write
(
IXP2000_PCI_XSCALE_INT_ENABLE
,
(
temp
|
(
1
<<
27
)));
}
}
/*
* Error interrupts. These are used extensively by the microengine drivers
*/
static
void
ixp2000_err_irq_handler
(
unsigned
int
irq
,
struct
irqdesc
*
desc
,
struct
pt_regs
*
regs
)
{
int
i
;
unsigned
long
status
=
*
IXP2000_IRQ_ERR_STATUS
;
for
(
i
=
31
;
i
>=
0
;
i
--
)
{
if
(
status
&
(
1
<<
i
))
{
desc
=
irq_desc
+
IRQ_IXP2000_DRAM0_MIN_ERR
+
i
;
desc
->
handle
(
IRQ_IXP2000_DRAM0_MIN_ERR
+
i
,
desc
,
regs
);
}
}
}
static
void
ixp2000_err_irq_mask
(
unsigned
int
irq
)
{
ixp2000_reg_write
(
IXP2000_IRQ_ERR_ENABLE_CLR
,
(
1
<<
(
irq
-
IRQ_IXP2000_DRAM0_MIN_ERR
)));
}
static
void
ixp2000_err_irq_unmask
(
unsigned
int
irq
)
{
ixp2000_reg_write
(
IXP2000_IRQ_ERR_ENABLE_SET
,
(
1
<<
(
irq
-
IRQ_IXP2000_DRAM0_MIN_ERR
)));
}
static
struct
irqchip
ixp2000_err_irq_chip
=
{
.
ack
=
ixp2000_err_irq_mask
,
.
mask
=
ixp2000_err_irq_mask
,
.
unmask
=
ixp2000_err_irq_unmask
};
static
struct
irqchip
ixp2000_pci_irq_chip
=
{
static
struct
irqchip
ixp2000_pci_irq_chip
=
{
.
ack
=
ixp2000_pci_irq_mask
,
.
ack
=
ixp2000_pci_irq_mask
,
.
mask
=
ixp2000_pci_irq_mask
,
.
mask
=
ixp2000_pci_irq_mask
,
...
@@ -459,6 +493,18 @@ void __init ixp2000_init_irq(void)
...
@@ -459,6 +493,18 @@ void __init ixp2000_init_irq(void)
}
else
set_irq_flags
(
irq
,
0
);
}
else
set_irq_flags
(
irq
,
0
);
}
}
for
(
irq
=
IRQ_IXP2000_DRAM0_MIN_ERR
;
irq
<=
IRQ_IXP2000_SP_INT
;
irq
++
)
{
if
((
1
<<
(
irq
-
IRQ_IXP2000_DRAM0_MIN_ERR
))
&
IXP2000_VALID_ERR_IRQ_MASK
)
{
set_irq_chip
(
irq
,
&
ixp2000_err_irq_chip
);
set_irq_handler
(
irq
,
do_level_IRQ
);
set_irq_flags
(
irq
,
IRQF_VALID
);
}
else
set_irq_flags
(
irq
,
0
);
}
set_irq_chained_handler
(
IRQ_IXP2000_ERRSUM
,
ixp2000_err_irq_handler
);
/*
/*
* GPIO IRQs are invalid until someone sets the interrupt mode
* GPIO IRQs are invalid until someone sets the interrupt mode
* by calling set_irq_type().
* by calling set_irq_type().
...
...
arch/arm/mach-ixp2000/enp2611.c
View file @
0676fc12
...
@@ -69,19 +69,19 @@ static struct sys_timer enp2611_timer = {
...
@@ -69,19 +69,19 @@ static struct sys_timer enp2611_timer = {
static
struct
map_desc
enp2611_io_desc
[]
__initdata
=
{
static
struct
map_desc
enp2611_io_desc
[]
__initdata
=
{
{
{
.
virtual
=
ENP2611_CALEB_VIRT_BASE
,
.
virtual
=
ENP2611_CALEB_VIRT_BASE
,
.
p
hysical
=
ENP2611_CALEB_PHYS_BASE
,
.
p
fn
=
__phys_to_pfn
(
ENP2611_CALEB_PHYS_BASE
)
,
.
length
=
ENP2611_CALEB_SIZE
,
.
length
=
ENP2611_CALEB_SIZE
,
.
type
=
MT_IXP2000_DEVICE
.
type
=
MT_IXP2000_DEVICE
,
},
{
},
{
.
virtual
=
ENP2611_PM3386_0_VIRT_BASE
,
.
virtual
=
ENP2611_PM3386_0_VIRT_BASE
,
.
p
hysical
=
ENP2611_PM3386_0_PHYS_BASE
,
.
p
fn
=
__phys_to_pfn
(
ENP2611_PM3386_0_PHYS_BASE
)
,
.
length
=
ENP2611_PM3386_0_SIZE
,
.
length
=
ENP2611_PM3386_0_SIZE
,
.
type
=
MT_IXP2000_DEVICE
.
type
=
MT_IXP2000_DEVICE
,
},
{
},
{
.
virtual
=
ENP2611_PM3386_1_VIRT_BASE
,
.
virtual
=
ENP2611_PM3386_1_VIRT_BASE
,
.
p
hysical
=
ENP2611_PM3386_1_PHYS_BASE
,
.
p
fn
=
__phys_to_pfn
(
ENP2611_PM3386_1_PHYS_BASE
)
,
.
length
=
ENP2611_PM3386_1_SIZE
,
.
length
=
ENP2611_PM3386_1_SIZE
,
.
type
=
MT_IXP2000_DEVICE
.
type
=
MT_IXP2000_DEVICE
,
}
}
};
};
...
...
arch/arm/mach-pxa/lubbock.c
View file @
0676fc12
...
@@ -19,16 +19,20 @@
...
@@ -19,16 +19,20 @@
#include <linux/major.h>
#include <linux/major.h>
#include <linux/fb.h>
#include <linux/fb.h>
#include <linux/interrupt.h>
#include <linux/interrupt.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
#include <asm/setup.h>
#include <asm/setup.h>
#include <asm/memory.h>
#include <asm/memory.h>
#include <asm/mach-types.h>
#include <asm/mach-types.h>
#include <asm/hardware.h>
#include <asm/hardware.h>
#include <asm/irq.h>
#include <asm/irq.h>
#include <asm/sizes.h>
#include <asm/mach/arch.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
#include <asm/mach/map.h>
#include <asm/mach/irq.h>
#include <asm/mach/irq.h>
#include <asm/mach/flash.h>
#include <asm/hardware/sa1111.h>
#include <asm/hardware/sa1111.h>
...
@@ -199,10 +203,75 @@ static struct platform_device smc91x_device = {
...
@@ -199,10 +203,75 @@ static struct platform_device smc91x_device = {
.
resource
=
smc91x_resources
,
.
resource
=
smc91x_resources
,
};
};
static
struct
resource
flash_resources
[]
=
{
[
0
]
=
{
.
start
=
0x00000000
,
.
end
=
SZ_64M
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
0x04000000
,
.
end
=
0x04000000
+
SZ_64M
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
};
static
struct
mtd_partition
lubbock_partitions
[]
=
{
{
.
name
=
"Bootloader"
,
.
size
=
0x00040000
,
.
offset
=
0
,
.
mask_flags
=
MTD_WRITEABLE
/* force read-only */
},{
.
name
=
"Kernel"
,
.
size
=
0x00100000
,
.
offset
=
0x00040000
,
},{
.
name
=
"Filesystem"
,
.
size
=
MTDPART_SIZ_FULL
,
.
offset
=
0x00140000
}
};
static
struct
flash_platform_data
lubbock_flash_data
[
2
]
=
{
{
.
map_name
=
"cfi_probe"
,
.
parts
=
lubbock_partitions
,
.
nr_parts
=
ARRAY_SIZE
(
lubbock_partitions
),
},
{
.
map_name
=
"cfi_probe"
,
.
parts
=
NULL
,
.
nr_parts
=
0
,
}
};
static
struct
platform_device
lubbock_flash_device
[
2
]
=
{
{
.
name
=
"pxa2xx-flash"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
lubbock_flash_data
[
0
],
},
.
resource
=
&
flash_resources
[
0
],
.
num_resources
=
1
,
},
{
.
name
=
"pxa2xx-flash"
,
.
id
=
1
,
.
dev
=
{
.
platform_data
=
&
lubbock_flash_data
[
1
],
},
.
resource
=
&
flash_resources
[
1
],
.
num_resources
=
1
,
},
};
static
struct
platform_device
*
devices
[]
__initdata
=
{
static
struct
platform_device
*
devices
[]
__initdata
=
{
&
sa1111_device
,
&
sa1111_device
,
&
lub_audio_device
,
&
lub_audio_device
,
&
smc91x_device
,
&
smc91x_device
,
&
lubbock_flash_device
[
0
],
&
lubbock_flash_device
[
1
],
};
};
static
struct
pxafb_mach_info
sharp_lm8v31
__initdata
=
{
static
struct
pxafb_mach_info
sharp_lm8v31
__initdata
=
{
...
@@ -315,10 +384,21 @@ static struct pxaficp_platform_data lubbock_ficp_platform_data = {
...
@@ -315,10 +384,21 @@ static struct pxaficp_platform_data lubbock_ficp_platform_data = {
static
void
__init
lubbock_init
(
void
)
static
void
__init
lubbock_init
(
void
)
{
{
int
flashboot
=
(
LUB_CONF_SWITCHES
&
1
);
pxa_set_udc_info
(
&
udc_info
);
pxa_set_udc_info
(
&
udc_info
);
set_pxa_fb_info
(
&
sharp_lm8v31
);
set_pxa_fb_info
(
&
sharp_lm8v31
);
pxa_set_mci_info
(
&
lubbock_mci_platform_data
);
pxa_set_mci_info
(
&
lubbock_mci_platform_data
);
pxa_set_ficp_info
(
&
lubbock_ficp_platform_data
);
pxa_set_ficp_info
(
&
lubbock_ficp_platform_data
);
lubbock_flash_data
[
0
].
width
=
lubbock_flash_data
[
1
].
width
=
(
BOOT_DEF
&
1
)
?
2
:
4
;
/* Compensate for the nROMBT switch which swaps the flash banks */
printk
(
KERN_NOTICE
"Lubbock configured to boot from %s (bank %d)
\n
"
,
flashboot
?
"Flash"
:
"ROM"
,
flashboot
);
lubbock_flash_data
[
flashboot
^
1
].
name
=
"application-flash"
;
lubbock_flash_data
[
flashboot
].
name
=
"boot-rom"
;
(
void
)
platform_add_devices
(
devices
,
ARRAY_SIZE
(
devices
));
(
void
)
platform_add_devices
(
devices
,
ARRAY_SIZE
(
devices
));
}
}
...
...
arch/arm/mach-pxa/mainstone.c
View file @
0676fc12
...
@@ -20,6 +20,9 @@
...
@@ -20,6 +20,9 @@
#include <linux/sched.h>
#include <linux/sched.h>
#include <linux/bitops.h>
#include <linux/bitops.h>
#include <linux/fb.h>
#include <linux/fb.h>
#include <linux/ioport.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
#include <asm/types.h>
#include <asm/types.h>
#include <asm/setup.h>
#include <asm/setup.h>
...
@@ -27,10 +30,12 @@
...
@@ -27,10 +30,12 @@
#include <asm/mach-types.h>
#include <asm/mach-types.h>
#include <asm/hardware.h>
#include <asm/hardware.h>
#include <asm/irq.h>
#include <asm/irq.h>
#include <asm/sizes.h>
#include <asm/mach/arch.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
#include <asm/mach/map.h>
#include <asm/mach/irq.h>
#include <asm/mach/irq.h>
#include <asm/mach/flash.h>
#include <asm/arch/pxa-regs.h>
#include <asm/arch/pxa-regs.h>
#include <asm/arch/mainstone.h>
#include <asm/arch/mainstone.h>
...
@@ -190,6 +195,69 @@ static struct platform_device mst_audio_device = {
...
@@ -190,6 +195,69 @@ static struct platform_device mst_audio_device = {
.
dev
=
{
.
platform_data
=
&
mst_audio_ops
},
.
dev
=
{
.
platform_data
=
&
mst_audio_ops
},
};
};
static
struct
resource
flash_resources
[]
=
{
[
0
]
=
{
.
start
=
PXA_CS0_PHYS
,
.
end
=
PXA_CS0_PHYS
+
SZ_64M
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
PXA_CS1_PHYS
,
.
end
=
PXA_CS1_PHYS
+
SZ_64M
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
};
static
struct
mtd_partition
mainstoneflash0_partitions
[]
=
{
{
.
name
=
"Bootloader"
,
.
size
=
0x00040000
,
.
offset
=
0
,
.
mask_flags
=
MTD_WRITEABLE
/* force read-only */
},{
.
name
=
"Kernel"
,
.
size
=
0x00400000
,
.
offset
=
0x00040000
,
},{
.
name
=
"Filesystem"
,
.
size
=
MTDPART_SIZ_FULL
,
.
offset
=
0x00440000
}
};
static
struct
flash_platform_data
mst_flash_data
[
2
]
=
{
{
.
map_name
=
"cfi_probe"
,
.
parts
=
mainstoneflash0_partitions
,
.
nr_parts
=
ARRAY_SIZE
(
mainstoneflash0_partitions
),
},
{
.
map_name
=
"cfi_probe"
,
.
parts
=
NULL
,
.
nr_parts
=
0
,
}
};
static
struct
platform_device
mst_flash_device
[
2
]
=
{
{
.
name
=
"pxa2xx-flash"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
mst_flash_data
[
0
],
},
.
resource
=
&
flash_resources
[
0
],
.
num_resources
=
1
,
},
{
.
name
=
"pxa2xx-flash"
,
.
id
=
1
,
.
dev
=
{
.
platform_data
=
&
mst_flash_data
[
1
],
},
.
resource
=
&
flash_resources
[
1
],
.
num_resources
=
1
,
},
};
static
void
mainstone_backlight_power
(
int
on
)
static
void
mainstone_backlight_power
(
int
on
)
{
{
if
(
on
)
{
if
(
on
)
{
...
@@ -318,16 +386,34 @@ static struct pxaficp_platform_data mainstone_ficp_platform_data = {
...
@@ -318,16 +386,34 @@ static struct pxaficp_platform_data mainstone_ficp_platform_data = {
.
transceiver_mode
=
mainstone_irda_transceiver_mode
,
.
transceiver_mode
=
mainstone_irda_transceiver_mode
,
};
};
static
struct
platform_device
*
platform_devices
[]
__initdata
=
{
&
smc91x_device
,
&
mst_audio_device
,
&
mst_flash_device
[
0
],
&
mst_flash_device
[
1
],
};
static
void
__init
mainstone_init
(
void
)
static
void
__init
mainstone_init
(
void
)
{
{
int
SW7
=
0
;
/* FIXME: get from SCR (Mst doc section 3.2.1.1) */
mst_flash_data
[
0
].
width
=
(
BOOT_DEF
&
1
)
?
2
:
4
;
mst_flash_data
[
1
].
width
=
4
;
/* Compensate for SW7 which swaps the flash banks */
mst_flash_data
[
SW7
].
name
=
"processor-flash"
;
mst_flash_data
[
SW7
^
1
].
name
=
"mainboard-flash"
;
printk
(
KERN_NOTICE
"Mainstone configured to boot from %s
\n
"
,
mst_flash_data
[
0
].
name
);
/*
/*
* On Mainstone, we route AC97_SYSCLK via GPIO45 to
* On Mainstone, we route AC97_SYSCLK via GPIO45 to
* the audio daughter card
* the audio daughter card
*/
*/
pxa_gpio_mode
(
GPIO45_SYSCLK_AC97_MD
);
pxa_gpio_mode
(
GPIO45_SYSCLK_AC97_MD
);
platform_device_register
(
&
smc91x_device
);
platform_add_devices
(
platform_devices
,
ARRAY_SIZE
(
platform_devices
));
platform_device_register
(
&
mst_audio_device
);
/* reading Mainstone's "Virtual Configuration Register"
/* reading Mainstone's "Virtual Configuration Register"
might be handy to select LCD type here */
might be handy to select LCD type here */
...
...
arch/arm/mm/Kconfig
View file @
0676fc12
...
@@ -250,6 +250,18 @@ config CPU_V6
...
@@ -250,6 +250,18 @@ config CPU_V6
select CPU_COPY_V6
select CPU_COPY_V6
select CPU_TLB_V6
select CPU_TLB_V6
# ARMv6k
config CPU_32v6K
bool "Support ARM V6K processor extensions" if !SMP
depends on CPU_V6
default y if SMP
help
Say Y here if your ARMv6 processor supports the 'K' extension.
This enables the kernel to use some instructions not present
on previous processors, and as such a kernel build with this
enabled will not boot on processors with do not support these
instructions.
# Figure out what processor architecture version we should be using.
# Figure out what processor architecture version we should be using.
# This defines the compiler instruction set which depends on the machine type.
# This defines the compiler instruction set which depends on the machine type.
config CPU_32v3
config CPU_32v3
...
...
arch/arm/mm/mm-armv.c
View file @
0676fc12
...
@@ -469,14 +469,14 @@ void __init create_mapping(struct map_desc *md)
...
@@ -469,14 +469,14 @@ void __init create_mapping(struct map_desc *md)
if
(
md
->
virtual
!=
vectors_base
()
&&
md
->
virtual
<
TASK_SIZE
)
{
if
(
md
->
virtual
!=
vectors_base
()
&&
md
->
virtual
<
TASK_SIZE
)
{
printk
(
KERN_WARNING
"BUG: not creating mapping for "
printk
(
KERN_WARNING
"BUG: not creating mapping for "
"0x%0
16
llx at 0x%08lx in user region
\n
"
,
"0x%0
8
llx at 0x%08lx in user region
\n
"
,
__pfn_to_phys
((
u64
)
md
->
pfn
),
md
->
virtual
);
__pfn_to_phys
((
u64
)
md
->
pfn
),
md
->
virtual
);
return
;
return
;
}
}
if
((
md
->
type
==
MT_DEVICE
||
md
->
type
==
MT_ROM
)
&&
if
((
md
->
type
==
MT_DEVICE
||
md
->
type
==
MT_ROM
)
&&
md
->
virtual
>=
PAGE_OFFSET
&&
md
->
virtual
<
VMALLOC_END
)
{
md
->
virtual
>=
PAGE_OFFSET
&&
md
->
virtual
<
VMALLOC_END
)
{
printk
(
KERN_WARNING
"BUG: mapping for 0x%0
16
llx at 0x%08lx "
printk
(
KERN_WARNING
"BUG: mapping for 0x%0
8
llx at 0x%08lx "
"overlaps vmalloc space
\n
"
,
"overlaps vmalloc space
\n
"
,
__pfn_to_phys
((
u64
)
md
->
pfn
),
md
->
virtual
);
__pfn_to_phys
((
u64
)
md
->
pfn
),
md
->
virtual
);
}
}
...
@@ -492,14 +492,14 @@ void __init create_mapping(struct map_desc *md)
...
@@ -492,14 +492,14 @@ void __init create_mapping(struct map_desc *md)
if
(
md
->
pfn
>=
0x100000
)
{
if
(
md
->
pfn
>=
0x100000
)
{
if
(
domain
)
{
if
(
domain
)
{
printk
(
KERN_ERR
"MM: invalid domain in supersection "
printk
(
KERN_ERR
"MM: invalid domain in supersection "
"mapping for 0x%0
16
llx at 0x%08lx
\n
"
,
"mapping for 0x%0
8
llx at 0x%08lx
\n
"
,
__pfn_to_phys
((
u64
)
md
->
pfn
),
md
->
virtual
);
__pfn_to_phys
((
u64
)
md
->
pfn
),
md
->
virtual
);
return
;
return
;
}
}
if
((
md
->
virtual
|
md
->
length
|
__pfn_to_phys
(
md
->
pfn
))
if
((
md
->
virtual
|
md
->
length
|
__pfn_to_phys
(
md
->
pfn
))
&
~
SUPERSECTION_MASK
)
{
&
~
SUPERSECTION_MASK
)
{
printk
(
KERN_ERR
"MM: cannot create mapping for "
printk
(
KERN_ERR
"MM: cannot create mapping for "
"0x%0
16
llx at 0x%08lx invalid alignment
\n
"
,
"0x%0
8
llx at 0x%08lx invalid alignment
\n
"
,
__pfn_to_phys
((
u64
)
md
->
pfn
),
md
->
virtual
);
__pfn_to_phys
((
u64
)
md
->
pfn
),
md
->
virtual
);
return
;
return
;
}
}
...
...
drivers/char/nvram.c
View file @
0676fc12
...
@@ -32,11 +32,9 @@
...
@@ -32,11 +32,9 @@
* added changelog
* added changelog
* 1.2 Erik Gilling: Cobalt Networks support
* 1.2 Erik Gilling: Cobalt Networks support
* Tim Hockin: general cleanup, Cobalt support
* Tim Hockin: general cleanup, Cobalt support
* 1.3 Jon Ringle: Comdial MP1000 support
*
*/
*/
#define NVRAM_VERSION "1.
3
"
#define NVRAM_VERSION "1.
2
"
#include <linux/module.h>
#include <linux/module.h>
#include <linux/config.h>
#include <linux/config.h>
...
@@ -47,7 +45,6 @@
...
@@ -47,7 +45,6 @@
#define PC 1
#define PC 1
#define ATARI 2
#define ATARI 2
#define COBALT 3
#define COBALT 3
#define MP1000 4
/* select machine configuration */
/* select machine configuration */
#if defined(CONFIG_ATARI)
#if defined(CONFIG_ATARI)
...
@@ -57,9 +54,6 @@
...
@@ -57,9 +54,6 @@
# if defined(CONFIG_COBALT)
# if defined(CONFIG_COBALT)
# include <linux/cobalt-nvram.h>
# include <linux/cobalt-nvram.h>
# define MACH COBALT
# define MACH COBALT
# elif defined(CONFIG_MACH_MP1000)
# undef MACH
# define MACH MP1000
# else
# else
# define MACH PC
# define MACH PC
# endif
# endif
...
@@ -118,23 +112,6 @@
...
@@ -118,23 +112,6 @@
#endif
#endif
#if MACH == MP1000
/* RTC in a MP1000 */
#define CHECK_DRIVER_INIT() 1
#define MP1000_CKS_RANGE_START 0
#define MP1000_CKS_RANGE_END 111
#define MP1000_CKS_LOC 112
#define NVRAM_BYTES (128-NVRAM_FIRST_BYTE)
#define mach_check_checksum mp1000_check_checksum
#define mach_set_checksum mp1000_set_checksum
#define mach_proc_infos mp1000_proc_infos
#endif
/* Note that *all* calls to CMOS_READ and CMOS_WRITE must be done with
/* Note that *all* calls to CMOS_READ and CMOS_WRITE must be done with
* rtc_lock held. Due to the index-port/data-port design of the RTC, we
* rtc_lock held. Due to the index-port/data-port design of the RTC, we
* don't want two different things trying to get to it at once. (e.g. the
* don't want two different things trying to get to it at once. (e.g. the
...
@@ -938,91 +915,6 @@ atari_proc_infos(unsigned char *nvram, char *buffer, int *len,
...
@@ -938,91 +915,6 @@ atari_proc_infos(unsigned char *nvram, char *buffer, int *len,
#endif
/* MACH == ATARI */
#endif
/* MACH == ATARI */
#if MACH == MP1000
static
int
mp1000_check_checksum
(
void
)
{
int
i
;
unsigned
short
sum
=
0
;
unsigned
short
expect
;
for
(
i
=
MP1000_CKS_RANGE_START
;
i
<=
MP1000_CKS_RANGE_END
;
++
i
)
sum
+=
__nvram_read_byte
(
i
);
expect
=
__nvram_read_byte
(
MP1000_CKS_LOC
+
1
)
<<
8
|
__nvram_read_byte
(
MP1000_CKS_LOC
);
return
((
sum
&
0xffff
)
==
expect
);
}
static
void
mp1000_set_checksum
(
void
)
{
int
i
;
unsigned
short
sum
=
0
;
for
(
i
=
MP1000_CKS_RANGE_START
;
i
<=
MP1000_CKS_RANGE_END
;
++
i
)
sum
+=
__nvram_read_byte
(
i
);
__nvram_write_byte
(
sum
>>
8
,
MP1000_CKS_LOC
+
1
);
__nvram_write_byte
(
sum
&
0xff
,
MP1000_CKS_LOC
);
}
#ifdef CONFIG_PROC_FS
#define SERVER_N_LEN 32
#define PATH_N_LEN 32
#define FILE_N_LEN 32
#define NVRAM_MAGIC_SIG 0xdead
typedef
struct
NvRamImage
{
unsigned
short
int
magic
;
unsigned
short
int
mode
;
char
fname
[
FILE_N_LEN
];
char
path
[
PATH_N_LEN
];
char
server
[
SERVER_N_LEN
];
char
pad
[
12
];
}
NvRam
;
static
int
mp1000_proc_infos
(
unsigned
char
*
nvram
,
char
*
buffer
,
int
*
len
,
off_t
*
begin
,
off_t
offset
,
int
size
)
{
int
checksum
;
NvRam
*
nv
=
(
NvRam
*
)
nvram
;
spin_lock_irq
(
&
rtc_lock
);
checksum
=
__nvram_check_checksum
();
spin_unlock_irq
(
&
rtc_lock
);
PRINT_PROC
(
"Checksum status: %svalid
\n
"
,
checksum
?
""
:
"not "
);
switch
(
nv
->
mode
)
{
case
0
:
PRINT_PROC
(
"
\t
Mode 0, tftp prompt
\n
"
);
break
;
case
1
:
PRINT_PROC
(
"
\t
Mode 1, booting from disk
\n
"
);
break
;
case
2
:
PRINT_PROC
(
"
\t
Mode 2, Alternate boot from disk /boot/%s
\n
"
,
nv
->
fname
);
break
;
case
3
:
PRINT_PROC
(
"
\t
Mode 3, Booting from net:
\n
"
);
PRINT_PROC
(
"
\t\t
%s:%s%s
\n
"
,
nv
->
server
,
nv
->
path
,
nv
->
fname
);
break
;
default:
PRINT_PROC
(
"
\t
Inconsistant nvram?
\n
"
);
break
;
}
return
1
;
}
#endif
#endif
/* MACH == MP1000 */
MODULE_LICENSE
(
"GPL"
);
MODULE_LICENSE
(
"GPL"
);
EXPORT_SYMBOL
(
__nvram_read_byte
);
EXPORT_SYMBOL
(
__nvram_read_byte
);
...
...
drivers/net/Kconfig
View file @
0676fc12
...
@@ -1374,7 +1374,7 @@ config FORCEDETH
...
@@ -1374,7 +1374,7 @@ config FORCEDETH
config CS89x0
config CS89x0
tristate "CS89x0 support"
tristate "CS89x0 support"
depends on (NET_PCI && (ISA || ARCH_IXDP2X01)) || ARCH_PNX0105
|| MACH_MP1000
depends on (NET_PCI && (ISA || ARCH_IXDP2X01)) || ARCH_PNX0105
---help---
---help---
Support for CS89x0 chipset based Ethernet cards. If you have a
Support for CS89x0 chipset based Ethernet cards. If you have a
network (Ethernet) card of this type, say Y and read the
network (Ethernet) card of this type, say Y and read the
...
...
drivers/net/cs89x0.c
View file @
0676fc12
...
@@ -182,10 +182,6 @@ static unsigned int cs8900_irq_map[] = {IRQ_IXDP2X01_CS8900, 0, 0, 0};
...
@@ -182,10 +182,6 @@ static unsigned int cs8900_irq_map[] = {IRQ_IXDP2X01_CS8900, 0, 0, 0};
#define CIRRUS_DEFAULT_IRQ VH_INTC_INT_NUM_CASCADED_INTERRUPT_1
/* Event inputs bank 1 - ID 35/bit 3 */
#define CIRRUS_DEFAULT_IRQ VH_INTC_INT_NUM_CASCADED_INTERRUPT_1
/* Event inputs bank 1 - ID 35/bit 3 */
static
unsigned
int
netcard_portlist
[]
__initdata
=
{
CIRRUS_DEFAULT_BASE
,
0
};
static
unsigned
int
netcard_portlist
[]
__initdata
=
{
CIRRUS_DEFAULT_BASE
,
0
};
static
unsigned
int
cs8900_irq_map
[]
=
{
CIRRUS_DEFAULT_IRQ
,
0
,
0
,
0
};
static
unsigned
int
cs8900_irq_map
[]
=
{
CIRRUS_DEFAULT_IRQ
,
0
,
0
,
0
};
#elif defined(CONFIG_MACH_MP1000)
#include <asm/arch/mp1000-seprom.h>
static
unsigned
int
netcard_portlist
[]
__initdata
=
{
MP1000_EIO_BASE
+
0x300
,
0
};
static
unsigned
int
cs8900_irq_map
[]
=
{
IRQ_EINT3
,
0
,
0
,
0
};
#else
#else
static
unsigned
int
netcard_portlist
[]
__initdata
=
static
unsigned
int
netcard_portlist
[]
__initdata
=
{
0x300
,
0x320
,
0x340
,
0x360
,
0x200
,
0x220
,
0x240
,
0x260
,
0x280
,
0x2a0
,
0x2c0
,
0x2e0
,
0
};
{
0x300
,
0x320
,
0x340
,
0x360
,
0x200
,
0x220
,
0x240
,
0x260
,
0x280
,
0x2a0
,
0x2c0
,
0x2e0
,
0
};
...
@@ -594,10 +590,6 @@ cs89x0_probe1(struct net_device *dev, int ioaddr, int modular)
...
@@ -594,10 +590,6 @@ cs89x0_probe1(struct net_device *dev, int ioaddr, int modular)
cnt
-=
j
;
cnt
-=
j
;
}
}
}
else
}
else
#elif defined(CONFIG_MACH_MP1000)
if
(
1
)
{
memcpy
(
dev
->
dev_addr
,
get_eeprom_mac_address
(),
ETH_ALEN
);
}
else
#endif
#endif
if
((
readreg
(
dev
,
PP_SelfST
)
&
(
EEPROM_OK
|
EEPROM_PRESENT
))
==
if
((
readreg
(
dev
,
PP_SelfST
)
&
(
EEPROM_OK
|
EEPROM_PRESENT
))
==
...
@@ -657,10 +649,6 @@ cs89x0_probe1(struct net_device *dev, int ioaddr, int modular)
...
@@ -657,10 +649,6 @@ cs89x0_probe1(struct net_device *dev, int ioaddr, int modular)
if
(
1
)
{
if
(
1
)
{
printk
(
KERN_NOTICE
"cs89x0: No EEPROM on HiCO.SH4
\n
"
);
printk
(
KERN_NOTICE
"cs89x0: No EEPROM on HiCO.SH4
\n
"
);
}
else
}
else
#elif defined(CONFIG_MACH_MP1000)
if
(
1
)
{
lp
->
force
|=
FORCE_RJ45
;
}
else
#endif
#endif
if
((
readreg
(
dev
,
PP_SelfST
)
&
EEPROM_PRESENT
)
==
0
)
if
((
readreg
(
dev
,
PP_SelfST
)
&
EEPROM_PRESENT
)
==
0
)
printk
(
KERN_WARNING
"cs89x0: No EEPROM, relying on command line....
\n
"
);
printk
(
KERN_WARNING
"cs89x0: No EEPROM, relying on command line....
\n
"
);
...
@@ -1243,7 +1231,7 @@ net_open(struct net_device *dev)
...
@@ -1243,7 +1231,7 @@ net_open(struct net_device *dev)
else
else
#endif
#endif
{
{
#if !defined(CONFIG_ARCH_IXDP2X01) && !defined(CONFIG_ARCH_PNX0105)
&& !defined(CONFIG_MACH_MP1000)
#if !defined(CONFIG_ARCH_IXDP2X01) && !defined(CONFIG_ARCH_PNX0105)
if
(((
1
<<
dev
->
irq
)
&
lp
->
irq_map
)
==
0
)
{
if
(((
1
<<
dev
->
irq
)
&
lp
->
irq_map
)
==
0
)
{
printk
(
KERN_ERR
"%s: IRQ %d is not in our map of allowable IRQs, which is %x
\n
"
,
printk
(
KERN_ERR
"%s: IRQ %d is not in our map of allowable IRQs, which is %x
\n
"
,
dev
->
name
,
dev
->
irq
,
lp
->
irq_map
);
dev
->
name
,
dev
->
irq
,
lp
->
irq_map
);
...
...
drivers/net/cs89x0.h
View file @
0676fc12
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
#include <linux/config.h>
#include <linux/config.h>
#if defined(CONFIG_ARCH_IXDP2X01) || defined(CONFIG_ARCH_PNX0105)
|| defined (CONFIG_MACH_MP1000)
#if defined(CONFIG_ARCH_IXDP2X01) || defined(CONFIG_ARCH_PNX0105)
/* IXDP2401/IXDP2801 uses dword-aligned register addressing */
/* IXDP2401/IXDP2801 uses dword-aligned register addressing */
#define CS89x0_PORT(reg) ((reg) * 2)
#define CS89x0_PORT(reg) ((reg) * 2)
#else
#else
...
...
drivers/serial/clps711x.c
View file @
0676fc12
...
@@ -408,11 +408,7 @@ static struct uart_port clps711x_ports[UART_NR] = {
...
@@ -408,11 +408,7 @@ static struct uart_port clps711x_ports[UART_NR] = {
{
{
.
iobase
=
SYSCON1
,
.
iobase
=
SYSCON1
,
.
irq
=
IRQ_UTXINT1
,
/* IRQ_URXINT1, IRQ_UMSINT */
.
irq
=
IRQ_UTXINT1
,
/* IRQ_URXINT1, IRQ_UMSINT */
#ifdef CONFIG_MP1000_90MHZ
.
uartclk
=
4515840
,
#else
.
uartclk
=
3686400
,
.
uartclk
=
3686400
,
#endif
.
fifosize
=
16
,
.
fifosize
=
16
,
.
ops
=
&
clps711x_pops
,
.
ops
=
&
clps711x_pops
,
.
line
=
0
,
.
line
=
0
,
...
@@ -421,11 +417,7 @@ static struct uart_port clps711x_ports[UART_NR] = {
...
@@ -421,11 +417,7 @@ static struct uart_port clps711x_ports[UART_NR] = {
{
{
.
iobase
=
SYSCON2
,
.
iobase
=
SYSCON2
,
.
irq
=
IRQ_UTXINT2
,
/* IRQ_URXINT2 */
.
irq
=
IRQ_UTXINT2
,
/* IRQ_URXINT2 */
#ifdef CONFIG_MP1000_90MHZ
.
uartclk
=
4515840
,
#else
.
uartclk
=
3686400
,
.
uartclk
=
3686400
,
#endif
.
fifosize
=
16
,
.
fifosize
=
16
,
.
ops
=
&
clps711x_pops
,
.
ops
=
&
clps711x_pops
,
.
line
=
1
,
.
line
=
1
,
...
@@ -559,7 +551,6 @@ console_initcall(clps711xuart_console_init);
...
@@ -559,7 +551,6 @@ console_initcall(clps711xuart_console_init);
static
struct
uart_driver
clps711x_reg
=
{
static
struct
uart_driver
clps711x_reg
=
{
.
driver_name
=
"ttyCL"
,
.
driver_name
=
"ttyCL"
,
.
dev_name
=
"ttyCL"
,
.
dev_name
=
"ttyCL"
,
.
devfs_name
=
"ttyCL"
,
.
major
=
SERIAL_CLPS711X_MAJOR
,
.
major
=
SERIAL_CLPS711X_MAJOR
,
.
minor
=
SERIAL_CLPS711X_MINOR
,
.
minor
=
SERIAL_CLPS711X_MINOR
,
.
nr
=
UART_NR
,
.
nr
=
UART_NR
,
...
...
include/asm-arm/arch-clps711x/hardware.h
View file @
0676fc12
...
@@ -235,121 +235,4 @@
...
@@ -235,121 +235,4 @@
#define CEIVA_PB0_BLK_BTN (1<<0)
#define CEIVA_PB0_BLK_BTN (1<<0)
#endif // #if defined (CONFIG_ARCH_CEIVA)
#endif // #if defined (CONFIG_ARCH_CEIVA)
#if defined (CONFIG_MACH_MP1000)
/* NOR FLASH */
#define MP1000_NIO_BASE 0xf9000000
/* virtual */
#define MP1000_NIO_START CS0_PHYS_BASE
/* physical */
#define MP1000_NIO_SIZE 0x00400000
/* DSP Interface */
#define MP1000_DSP_BASE 0xfa000000
/* virtual */
#define MP1000_DSP_START CS1_PHYS_BASE
/* physical */
#define MP1000_DSP_SIZE 0x00100000
/* LCD, DAA/DSP, RTC, DAA RW Reg all in CS2 */
#define MP1000_LIO_BASE 0xfb000000
/* virtual */
#define MP1000_LIO_START CS2_PHYS_BASE
/* physical */
#define MP1000_LIO_SIZE 0x00100000
/* NAND FLASH */
#define MP1000_FIO_BASE 0xfc000000
/* virtual */
#define MP1000_FIO_START CS3_PHYS_BASE
/* physical */
#define MP1000_FIO_SIZE 0x00800000
/* Ethernet */
#define MP1000_EIO_BASE 0xfd000000
/* virtual */
#define MP1000_EIO_START CS4_PHYS_BASE
/* physical */
#define MP1000_EIO_SIZE 0x00100000
#define MP1000_LCD_OFFSET 0x00000000
/* LCD offset in CS2 */
#define MP1000_DDD_OFFSET 0x00001000
/* DAA/DAI/DSP sft reset offst*/
#define MP1000_RTC_OFFSET 0x00002000
/* RTC offset in CS2 */
#define MP1000_DAA_OFFSET 0x00003000
/* DAA RW reg offset in CS2 */
/* IDE */
#define MP1000_IDE_BASE 0xfe000000
/* virtual */
#define MP1000_IDE_START CS5_PHYS_BASE
/* physical */
#define MP1000_IDE_SIZE 0x00100000
/* actually it's only 0x1000 */
#define IRQ_HARDDISK IRQ_EINT2
/*
* IDE registers definition
*/
#define IDE_CONTROL_BASE (MP1000_IDE_BASE + 0x1000)
#define IDE_BASE_OFF (MP1000_IDE_BASE)
#define IDE_WRITE_DEVICE_DATA (IDE_BASE_OFF + 0x0)
#define IDE_FEATURES_REGISTER (IDE_BASE_OFF + 0x2)
#define IDE_SECTOR_COUNT_REGISTER (IDE_BASE_OFF + 0x4)
#define IDE_SECTOR_NUMBER_REGISTER (IDE_BASE_OFF + 0x6)
#define IDE_CYLINDER_LOW_REGISTER (IDE_BASE_OFF + 0x8)
#define IDE_CYLINDER_HIGH_REGISTER (IDE_BASE_OFF + 0xa)
#define IDE_DEVICE_HEAD_REGISTER (IDE_BASE_OFF + 0xc)
#define IDE_COMMAND_DATA_REGISTER (IDE_BASE_OFF + 0xe)
#define IDE_DEVICE_CONTROL_REGISTER (IDE_CONTROL_BASE + 0xc)
#define IDE_IRQ IRQ_EINT2
#define RTC_PORT(x) (MP1000_LIO_BASE+0x2000 + (x*2))
#define RTC_ALWAYS_BCD 0
/*
// Definitions of the bit fields in the HwPortA register for the
// MP1000 board.
*/
#define HwPortAKeyboardRow1 0x00000001
#define HwPortAKeyboardRow2 0x00000002
#define HwPortAKeyboardRow3 0x00000004
#define HwPortAKeyboardRow4 0x00000008
#define HwPortAKeyboardRow5 0x00000010
#define HwPortAKeyboardRow6 0x00000020
#define HwPortALCDEnable 0x00000040
#define HwPortAOffhook 0x00000080
/*
// Definitions of the bit fields in the HwPortB register for the
// MP1000 board.
*/
#define HwPortBL3Mode 0x00000001
#define HwPortBL3Clk 0x00000002
#define HwPortBSClk 0x00000001
#define HwPortBSData 0x00000002
#define HwPortBL3Data 0x00000004
#define HwPortBMute 0x00000008
#define HwPortBQD0 0x00000010
#define HwPortBQD1 0x00000020
#define HwPortBQD2 0x00000040
#define HwPortBQD3 0x00000080
/*
// Definitions of the bit fields in the HwPortD register for the
// MP1000 board.
*/
#define HwPortDLED1 0x00000001
#define HwPortDLED2 0x00000002
#define HwPortDLED3 0x00000004
#define HwPortDLED4 0x00000008
#define HwPortDLED5 0x00000010
#define HwPortDEECS 0x00000020
#define HwPortBRTS 0x00000040
#define HwPortBRI 0x00000080
/*
// Definitions of the bit fields in the HwPortE register for the
// MP1000 board.
*/
#define HwPortECLE 0x00000001
#define HwPortESepromDOut 0x00000001
#define HwPortEALE 0x00000002
#define HwPortESepromDIn 0x00000002
#define HwPortENANDCS 0x00000004
#define HwPortESepromCLK 0x00000004
#endif // #if defined (CONFIG_MACH_MP1000)
#endif
#endif
include/asm-arm/arch-clps711x/mp1000-seprom.h
deleted
100644 → 0
View file @
912cbe3c
#ifndef MP1000_SEPROM_H
#define MP1000_SEPROM_H
/*
* mp1000-seprom.h
*
*
* This file contains the Serial EEPROM definitions for the MP1000 board
*
* Copyright (C) 2005 Comdial Corporation
*
* 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 option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
#define COMMAND_ERASE (0x1C0)
#define COMMAND_ERASE_ALL (0x120)
#define COMMAND_WRITE_DISABLE (0x100)
#define COMMAND_WRITE_ENABLE (0x130)
#define COMMAND_READ (0x180)
#define COMMAND_WRITE (0x140)
#define COMMAND_WRITE_ALL (0x110)
//
// Serial EEPROM data format
//
#define PACKED __attribute__ ((packed))
typedef
struct
_EEPROM
{
union
{
unsigned
char
eprom_byte_data
[
128
];
unsigned
short
eprom_short_data
[
64
];
struct
{
unsigned
char
version
PACKED
;
// EEPROM Version "1" for now
unsigned
char
box_id
PACKED
;
// Box ID (Standalone, SOHO, embedded, etc)
unsigned
char
major_hw_version
PACKED
;
// Major Hardware version (Hex)
unsigned
char
minor_hw_version
PACKED
;
// Minor Hardware Version (Hex)
unsigned
char
mfg_id
[
3
]
PACKED
;
// Manufacturer ID (3 character Alphabetic)
unsigned
char
mfg_serial_number
[
10
]
PACKED
;
// Manufacturer Serial number
unsigned
char
mfg_date
[
3
]
PACKED
;
// Date of Mfg (Formatted YY:MM:DD)
unsigned
char
country
PACKED
;
// Country of deployment
unsigned
char
mac_Address
[
6
]
PACKED
;
// MAC Address
unsigned
char
oem_string
[
20
]
PACKED
;
// OEM ID string
unsigned
short
feature_bits1
PACKED
;
// Feature Bits 1
unsigned
short
feature_bits2
PACKED
;
// Feature Bits 2
unsigned
char
filler
[
75
]
PACKED
;
// Unused/Undefined 0 initialized
unsigned
short
checksum
PACKED
;
// byte accumulated short checksum
}
eprom_struct
;
}
variant
;
}
eeprom_struct
;
/* These settings must be mutually exclusive */
#define FEATURE_BITS1_DRAMSIZE_16MEG 0x0001
/* 0 signifies 4 MEG system */
#define FEATURE_BITS1_DRAMSIZE_8MEG 0x0002
/* 1 in bit 1 = 8MEG system */
#define FEATURE_BITS1_DRAMSIZE_64MEG 0x0004
/* 1 in bit 2 = 64MEG system */
#define FEATURE_BITS1_CPUIS90MEG 0x0010
extern
void
seprom_init
(
void
);
extern
eeprom_struct
*
get_seprom_ptr
(
void
);
extern
unsigned
char
*
get_eeprom_mac_address
(
void
);
#endif
/* MP1000_SEPROM_H */
include/asm-arm/arch-iop3xx/iop321.h
View file @
0676fc12
...
@@ -40,7 +40,7 @@
...
@@ -40,7 +40,7 @@
#define IOP321_PCI_UPPER_IO_BA (IOP321_PCI_LOWER_IO_BA + IOP321_PCI_IO_WINDOW_SIZE - 1)
#define IOP321_PCI_UPPER_IO_BA (IOP321_PCI_LOWER_IO_BA + IOP321_PCI_IO_WINDOW_SIZE - 1)
#define IOP321_PCI_IO_OFFSET (IOP321_PCI_LOWER_IO_VA - IOP321_PCI_LOWER_IO_BA)
#define IOP321_PCI_IO_OFFSET (IOP321_PCI_LOWER_IO_VA - IOP321_PCI_LOWER_IO_BA)
/
/#define IOP321_PCI_MEM_WINDOW_SIZE (~*IOP321_IALR1 + 1)
/
* #define IOP321_PCI_MEM_WINDOW_SIZE (~*IOP321_IALR1 + 1) */
#define IOP321_PCI_MEM_WINDOW_SIZE 0x04000000
/* 64M outbound window */
#define IOP321_PCI_MEM_WINDOW_SIZE 0x04000000
/* 64M outbound window */
#define IOP321_PCI_LOWER_MEM_PA 0x80000000
#define IOP321_PCI_LOWER_MEM_PA 0x80000000
#define IOP321_PCI_LOWER_MEM_BA (*IOP321_OMWTVR0)
#define IOP321_PCI_LOWER_MEM_BA (*IOP321_OMWTVR0)
...
...
include/asm-arm/arch-ixp2000/irqs.h
View file @
0676fc12
...
@@ -67,12 +67,45 @@
...
@@ -67,12 +67,45 @@
#define IRQ_IXP2000_PCIA 40
#define IRQ_IXP2000_PCIA 40
#define IRQ_IXP2000_PCIB 41
#define IRQ_IXP2000_PCIB 41
#define NR_IXP2000_IRQS 42
/* Int sources from IRQ_ERROR_STATUS */
#define IRQ_IXP2000_DRAM0_MIN_ERR 42
#define IRQ_IXP2000_DRAM0_MAJ_ERR 43
#define IRQ_IXP2000_DRAM1_MIN_ERR 44
#define IRQ_IXP2000_DRAM1_MAJ_ERR 45
#define IRQ_IXP2000_DRAM2_MIN_ERR 46
#define IRQ_IXP2000_DRAM2_MAJ_ERR 47
/* 48-57 reserved */
#define IRQ_IXP2000_SRAM0_ERR 58
#define IRQ_IXP2000_SRAM1_ERR 59
#define IRQ_IXP2000_SRAM2_ERR 60
#define IRQ_IXP2000_SRAM3_ERR 61
/* 62-65 reserved */
#define IRQ_IXP2000_MEDIA_ERR 66
#define IRQ_IXP2000_PCI_ERR 67
#define IRQ_IXP2000_SP_INT 68
#define NR_IXP2000_IRQS 69
#define IXP2000_BOARD_IRQ(x) (NR_IXP2000_IRQS + (x))
#define IXP2000_BOARD_IRQ(x) (NR_IXP2000_IRQS + (x))
#define IXP2000_BOARD_IRQ_MASK(irq) (1 << (irq - NR_IXP2000_IRQS))
#define IXP2000_BOARD_IRQ_MASK(irq) (1 << (irq - NR_IXP2000_IRQS))
#define IXP2000_ERR_IRQ_MASK(irq) ( 1 << (irq - IRQ_IXP2000_DRAM0_MIN_ERR))
#define IXP2000_VALID_ERR_IRQ_MASK (\
IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_DRAM0_MIN_ERR) | \
IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_DRAM0_MAJ_ERR) | \
IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_DRAM1_MIN_ERR) | \
IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_DRAM1_MAJ_ERR) | \
IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_DRAM2_MIN_ERR) | \
IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_DRAM2_MAJ_ERR) | \
IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_SRAM0_ERR) | \
IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_SRAM1_ERR) | \
IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_SRAM2_ERR) | \
IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_SRAM3_ERR) | \
IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_MEDIA_ERR) | \
IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_PCI_ERR) | \
IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_SP_INT) )
/*
/*
* This allows for all the on-chip sources plus up to 32 CPLD based
* This allows for all the on-chip sources plus up to 32 CPLD based
* IRQs. Should be more than enough.
* IRQs. Should be more than enough.
...
...
include/asm-arm/mmu_context.h
View file @
0676fc12
...
@@ -86,7 +86,8 @@ switch_mm(struct mm_struct *prev, struct mm_struct *next,
...
@@ -86,7 +86,8 @@ switch_mm(struct mm_struct *prev, struct mm_struct *next,
cpu_set
(
cpu
,
next
->
cpu_vm_mask
);
cpu_set
(
cpu
,
next
->
cpu_vm_mask
);
check_context
(
next
);
check_context
(
next
);
cpu_switch_mm
(
next
->
pgd
,
next
);
cpu_switch_mm
(
next
->
pgd
,
next
);
cpu_clear
(
cpu
,
prev
->
cpu_vm_mask
);
if
(
cache_is_vivt
())
cpu_clear
(
cpu
,
prev
->
cpu_vm_mask
);
}
}
}
}
...
...
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