Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
OpenBMC Firmware
talos-obmc-linux
Commits
6fbfddcb
Commit
6fbfddcb
authored
19 years ago
by
Greg KH
Committed by
Greg Kroah-Hartman
19 years ago
Browse files
Options
Download
Plain Diff
Merge ../bleed-2.6
parents
1a222bca
27d1097d
Changes
591
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
2581 additions
and
74 deletions
+2581
-74
Documentation/DocBook/libata.tmpl
Documentation/DocBook/libata.tmpl
+1072
-0
Documentation/block/biodoc.txt
Documentation/block/biodoc.txt
+52
-61
Documentation/networking/bonding.txt
Documentation/networking/bonding.txt
+3
-2
Makefile
Makefile
+1
-1
arch/alpha/kernel/pci-noop.c
arch/alpha/kernel/pci-noop.c
+1
-1
arch/alpha/kernel/pci_iommu.c
arch/alpha/kernel/pci_iommu.c
+1
-1
arch/arm/Kconfig
arch/arm/Kconfig
+3
-1
arch/arm/boot/compressed/head.S
arch/arm/boot/compressed/head.S
+2
-1
arch/arm/configs/mp1000_defconfig
arch/arm/configs/mp1000_defconfig
+897
-0
arch/arm/kernel/module.c
arch/arm/kernel/module.c
+1
-0
arch/arm/kernel/traps.c
arch/arm/kernel/traps.c
+3
-1
arch/arm/lib/Makefile
arch/arm/lib/Makefile
+1
-1
arch/arm/lib/sha1.S
arch/arm/lib/sha1.S
+206
-0
arch/arm/mach-aaec2000/Makefile
arch/arm/mach-aaec2000/Makefile
+1
-1
arch/arm/mach-aaec2000/aaed2000.c
arch/arm/mach-aaec2000/aaed2000.c
+50
-0
arch/arm/mach-aaec2000/clock.c
arch/arm/mach-aaec2000/clock.c
+110
-0
arch/arm/mach-aaec2000/clock.h
arch/arm/mach-aaec2000/clock.h
+23
-0
arch/arm/mach-aaec2000/core.c
arch/arm/mach-aaec2000/core.c
+132
-3
arch/arm/mach-aaec2000/core.h
arch/arm/mach-aaec2000/core.h
+11
-0
arch/arm/mach-clps711x/Kconfig
arch/arm/mach-clps711x/Kconfig
+11
-0
No files found.
Documentation/DocBook/libata.tmpl
View file @
6fbfddcb
This diff is collapsed.
Click to expand it.
Documentation/block/biodoc.txt
View file @
6fbfddcb
...
...
@@ -906,9 +906,20 @@ Aside:
4. The I/O scheduler
I/O schedulers are now per queue. They should be runtime switchable and modular
but aren't yet. Jens has most bits to do this, but the sysfs implementation is
missing.
I/O scheduler, a.k.a. elevator, is implemented in two layers. Generic dispatch
queue and specific I/O schedulers. Unless stated otherwise, elevator is used
to refer to both parts and I/O scheduler to specific I/O schedulers.
Block layer implements generic dispatch queue in ll_rw_blk.c and elevator.c.
The generic dispatch queue is responsible for properly ordering barrier
requests, requeueing, handling non-fs requests and all other subtleties.
Specific I/O schedulers are responsible for ordering normal filesystem
requests. They can also choose to delay certain requests to improve
throughput or whatever purpose. As the plural form indicates, there are
multiple I/O schedulers. They can be built as modules but at least one should
be built inside the kernel. Each queue can choose different one and can also
change to another one dynamically.
A block layer call to the i/o scheduler follows the convention elv_xxx(). This
calls elevator_xxx_fn in the elevator switch (drivers/block/elevator.c). Oh,
...
...
@@ -921,44 +932,36 @@ keeping work.
The functions an elevator may implement are: (* are mandatory)
elevator_merge_fn called to query requests for merge with a bio
elevator_merge_req_fn " " " with another request
elevator_merge_req_fn called when two requests get merged. the one
which gets merged into the other one will be
never seen by I/O scheduler again. IOW, after
being merged, the request is gone.
elevator_merged_fn called when a request in the scheduler has been
involved in a merge. It is used in the deadline
scheduler for example, to reposition the request
if its sorting order has changed.
*elevator_next_req_fn returns the next scheduled request, or NULL
if there are none (or none are ready).
elevator_dispatch_fn fills the dispatch queue with ready requests.
I/O schedulers are free to postpone requests by
not filling the dispatch queue unless @force
is non-zero. Once dispatched, I/O schedulers
are not allowed to manipulate the requests -
they belong to generic dispatch queue.
*
elevator_add_req_fn called to add a new request into the scheduler
elevator_add_req_fn called to add a new request into the scheduler
elevator_queue_empty_fn returns true if the merge queue is empty.
Drivers shouldn't use this, but rather check
if elv_next_request is NULL (without losing the
request if one exists!)
elevator_remove_req_fn This is called when a driver claims ownership of
the target request - it now belongs to the
driver. It must not be modified or merged.
Drivers must not lose the request! A subsequent
call of elevator_next_req_fn must return the
_next_ request.
elevator_requeue_req_fn called to add a request to the scheduler. This
is used when the request has alrnadebeen
returned by elv_next_request, but hasn't
completed. If this is not implemented then
elevator_add_req_fn is called instead.
elevator_former_req_fn
elevator_latter_req_fn These return the request before or after the
one specified in disk sort order. Used by the
block layer to find merge possibilities.
elevator_completed_req_fn called when a request is completed. This might
come about due to being merged with another or
when the device completes the request.
elevator_completed_req_fn called when a request is completed.
elevator_may_queue_fn returns true if the scheduler wants to allow the
current context to queue a new request even if
...
...
@@ -967,13 +970,33 @@ elevator_may_queue_fn returns true if the scheduler wants to allow the
elevator_set_req_fn
elevator_put_req_fn Must be used to allocate and free any elevator
specific storate for a request.
specific storage for a request.
elevator_activate_req_fn Called when device driver first sees a request.
I/O schedulers can use this callback to
determine when actual execution of a request
starts.
elevator_deactivate_req_fn Called when device driver decides to delay
a request by requeueing it.
elevator_init_fn
elevator_exit_fn Allocate and free any elevator specific storage
for a queue.
4.2 I/O scheduler implementation
4.2 Request flows seen by I/O schedulers
All requests seens by I/O schedulers strictly follow one of the following three
flows.
set_req_fn ->
i. add_req_fn -> (merged_fn ->)* -> dispatch_fn -> activate_req_fn ->
(deactivate_req_fn -> activate_req_fn ->)* -> completed_req_fn
ii. add_req_fn -> (merged_fn ->)* -> merge_req_fn
iii. [none]
-> put_req_fn
4.3 I/O scheduler implementation
The generic i/o scheduler algorithm attempts to sort/merge/batch requests for
optimal disk scan and request servicing performance (based on generic
principles and device capabilities), optimized for:
...
...
@@ -993,18 +1016,7 @@ request in sort order to prevent binary tree lookups.
This arrangement is not a generic block layer characteristic however, so
elevators may implement queues as they please.
ii. Last merge hint
The last merge hint is part of the generic queue layer. I/O schedulers must do
some management on it. For the most part, the most important thing is to make
sure q->last_merge is cleared (set to NULL) when the request on it is no longer
a candidate for merging (for example if it has been sent to the driver).
The last merge performed is cached as a hint for the subsequent request. If
sequential data is being submitted, the hint is used to perform merges without
any scanning. This is not sufficient when there are multiple processes doing
I/O though, so a "merge hash" is used by some schedulers.
iii. Merge hash
ii. Merge hash
AS and deadline use a hash table indexed by the last sector of a request. This
enables merging code to quickly look up "back merge" candidates, even when
multiple I/O streams are being performed at once on one disk.
...
...
@@ -1013,29 +1025,8 @@ multiple I/O streams are being performed at once on one disk.
are far less common than "back merges" due to the nature of most I/O patterns.
Front merges are handled by the binary trees in AS and deadline schedulers.
iv. Handling barrier cases
A request with flags REQ_HARDBARRIER or REQ_SOFTBARRIER must not be ordered
around. That is, they must be processed after all older requests, and before
any newer ones. This includes merges!
In AS and deadline schedulers, barriers have the effect of flushing the reorder
queue. The performance cost of this will vary from nothing to a lot depending
on i/o patterns and device characteristics. Obviously they won't improve
performance, so their use should be kept to a minimum.
v. Handling insertion position directives
A request may be inserted with a position directive. The directives are one of
ELEVATOR_INSERT_BACK, ELEVATOR_INSERT_FRONT, ELEVATOR_INSERT_SORT.
ELEVATOR_INSERT_SORT is a general directive for non-barrier requests.
ELEVATOR_INSERT_BACK is used to insert a barrier to the back of the queue.
ELEVATOR_INSERT_FRONT is used to insert a barrier to the front of the queue, and
overrides the ordering requested by any previous barriers. In practice this is
harmless and required, because it is used for SCSI requeueing. This does not
require flushing the reorder queue, so does not impose a performance penalty.
vi. Plugging the queue to batch requests in anticipation of opportunities for
merge/sort optimizations
iii. Plugging the queue to batch requests in anticipation of opportunities for
merge/sort optimizations
This is just the same as in 2.4 so far, though per-device unplugging
support is anticipated for 2.5. Also with a priority-based i/o scheduler,
...
...
@@ -1069,7 +1060,7 @@ Aside:
blk_kick_queue() to unplug a specific queue (right away ?)
or optionally, all queues, is in the plan.
4.
3
I/O contexts
4.
4
I/O contexts
I/O contexts provide a dynamically allocated per process data area. They may
be used in I/O schedulers, and in the block layer (could be used for IO statis,
priorities for example). See *io_context in drivers/block/ll_rw_blk.c, and
...
...
This diff is collapsed.
Click to expand it.
Documentation/networking/bonding.txt
View file @
6fbfddcb
...
...
@@ -777,7 +777,7 @@ doing so is the same as described in the "Configuring Multiple Bonds
Manually" section, below.
NOTE: It has been observed that some Red Hat supplied kernels
are apparently unable to rename modules at load time (the "-obond
ing
1"
are apparently unable to rename modules at load time (the "-o
bond1"
part). Attempts to pass that option to modprobe will produce an
"Operation not permitted" error. This has been reported on some
Fedora Core kernels, and has been seen on RHEL 4 as well. On kernels
...
...
@@ -883,7 +883,8 @@ the above does not work, and the second bonding instance never sees
its options. In that case, the second options line can be substituted
as follows:
install bonding1 /sbin/modprobe bonding -obond1 mode=balance-alb miimon=50
install bond1 /sbin/modprobe --ignore-install bonding -o bond1 \
mode=balance-alb miimon=50
This may be repeated any number of times, specifying a new and
unique name in place of bond1 for each subsequent instance.
...
...
This diff is collapsed.
Click to expand it.
Makefile
View file @
6fbfddcb
...
...
@@ -334,7 +334,7 @@ KALLSYMS = scripts/kallsyms
PERL
=
perl
CHECK
=
sparse
CHECKFLAGS
:=
-D__linux__
-Dlinux
-D__STDC__
-Dunix
-D__unix__
$(CF)
CHECKFLAGS
:=
-D__linux__
-Dlinux
-D__STDC__
-Dunix
-D__unix__
-Wbitwise
$(CF)
MODFLAGS
=
-DMODULE
CFLAGS_MODULE
=
$(MODFLAGS)
AFLAGS_MODULE
=
$(MODFLAGS)
...
...
This diff is collapsed.
Click to expand it.
arch/alpha/kernel/pci-noop.c
View file @
6fbfddcb
...
...
@@ -154,7 +154,7 @@ pci_dma_supported(struct pci_dev *hwdev, dma_addr_t mask)
void
*
dma_alloc_coherent
(
struct
device
*
dev
,
size_t
size
,
dma_addr_t
*
dma_handle
,
in
t
gfp
)
dma_addr_t
*
dma_handle
,
gfp_
t
gfp
)
{
void
*
ret
;
...
...
This diff is collapsed.
Click to expand it.
arch/alpha/kernel/pci_iommu.c
View file @
6fbfddcb
...
...
@@ -397,7 +397,7 @@ pci_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr_t *dma_addrp)
{
void
*
cpu_addr
;
long
order
=
get_order
(
size
);
in
t
gfp
=
GFP_ATOMIC
;
gfp_
t
gfp
=
GFP_ATOMIC
;
try_again:
cpu_addr
=
(
void
*
)
__get_free_pages
(
gfp
,
order
);
...
...
This diff is collapsed.
Click to expand it.
arch/arm/Kconfig
View file @
6fbfddcb
...
...
@@ -204,6 +204,7 @@ config ARCH_H720X
config ARCH_AAEC2000
bool "Agilent AAEC-2000 based"
select ARM_AMBA
help
This enables support for systems based on the Agilent AAEC-2000
...
...
@@ -687,7 +688,8 @@ source "drivers/acorn/block/Kconfig"
if PCMCIA || ARCH_CLPS7500 || ARCH_IOP3XX || ARCH_IXP4XX \
|| 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"
endif
...
...
This diff is collapsed.
Click to expand it.
arch/arm/boot/compressed/head.S
View file @
6fbfddcb
...
...
@@ -39,7 +39,8 @@
defined
(
CONFIG_ARCH_IXP4XX
)
||
\
defined
(
CONFIG_ARCH_IXP2000
)
||
\
defined
(
CONFIG_ARCH_LH7A40X
)
||
\
defined
(
CONFIG_ARCH_OMAP
)
defined
(
CONFIG_ARCH_OMAP
)
||
\
defined
(
CONFIG_MACH_MP1000
)
.
macro
loadsp
,
rb
addruart
\
rb
.
endm
...
...
This diff is collapsed.
Click to expand it.
arch/arm/configs/mp1000_defconfig
0 → 100644
View file @
6fbfddcb
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.14-rc1
# Fri Sep 16 15:48:13 2005
#
CONFIG_ARM=y
CONFIG_MMU=y
CONFIG_UID16=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
# CONFIG_CLEAN_COMPILE is not set
CONFIG_BROKEN=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
#
# General setup
#
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_POSIX_MQUEUE is not set
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
# CONFIG_AUDIT is not set
# CONFIG_HOTPLUG is not set
CONFIG_KOBJECT_UEVENT=y
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_EMBEDDED=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SHMEM=y
CONFIG_CC_ALIGN_FUNCTIONS=0
CONFIG_CC_ALIGN_LABELS=0
CONFIG_CC_ALIGN_LOOPS=0
CONFIG_CC_ALIGN_JUMPS=0
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
#
# Loadable module support
#
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
CONFIG_OBSOLETE_MODPARM=y
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_KMOD=y
#
# System Type
#
# CONFIG_ARCH_CLPS7500 is not set
CONFIG_ARCH_CLPS711X=y
# CONFIG_ARCH_CO285 is not set
# CONFIG_ARCH_EBSA110 is not set
# CONFIG_ARCH_CAMELOT is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
# CONFIG_ARCH_INTEGRATOR is not set
# CONFIG_ARCH_IOP3XX is not set
# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_IXP2000 is not set
# CONFIG_ARCH_L7200 is not set
# CONFIG_ARCH_PXA is not set
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
# CONFIG_ARCH_S3C2410 is not set
# CONFIG_ARCH_SHARK is not set
# CONFIG_ARCH_LH7A40X is not set
# CONFIG_ARCH_OMAP is not set
# CONFIG_ARCH_VERSATILE is not set
# CONFIG_ARCH_IMX is not set
# CONFIG_ARCH_H720X is not set
# CONFIG_ARCH_AAEC2000 is not set
#
# CLPS711X/EP721X Implementations
#
# CONFIG_ARCH_AUTCPU12 is not set
# CONFIG_ARCH_CDB89712 is not set
# CONFIG_ARCH_CEIVA is not set
# CONFIG_ARCH_CLEP7312 is not set
# CONFIG_ARCH_EDB7211 is not set
# CONFIG_ARCH_P720T is not set
# CONFIG_ARCH_FORTUNET is not set
CONFIG_MACH_MP1000=y
CONFIG_MP1000_90MHZ=y
#
# Processor Type
#
CONFIG_CPU_32=y
CONFIG_CPU_ARM720T=y
CONFIG_CPU_32v4=y
CONFIG_CPU_ABRT_LV4T=y
CONFIG_CPU_CACHE_V4=y
CONFIG_CPU_CACHE_VIVT=y
CONFIG_CPU_COPY_V4WT=y
CONFIG_CPU_TLB_V4WT=y
#
# Processor Features
#
CONFIG_ARM_THUMB=y
#
# Bus support
#
CONFIG_ISA_DMA_API=y
#
# PCCARD (PCMCIA/CardBus) support
#
# CONFIG_PCCARD is not set
#
# Kernel Features
#
# CONFIG_SMP is not set
CONFIG_PREEMPT=y
# CONFIG_NO_IDLE_HZ is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
# CONFIG_DISCONTIGMEM_MANUAL is not set
# CONFIG_SPARSEMEM_MANUAL is not set
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
# CONFIG_SPARSEMEM_STATIC is not set
CONFIG_ALIGNMENT_TRAP=y
#
# Boot options
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="console=ttyCL,38400 root=/dev/discs/disc0/part1 ip=any cs89x0_media=rj45"
# CONFIG_XIP_KERNEL is not set
#
# Floating point emulation
#
#
# At least one emulation must be selected
#
CONFIG_FPE_NWFPE=y
# CONFIG_FPE_NWFPE_XP is not set
# CONFIG_FPE_FASTFPE is not set
#
# Userspace binary formats
#
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_AOUT is not set
CONFIG_BINFMT_MISC=y
# CONFIG_ARTHUR is not set
#
# Power management options
#
# CONFIG_PM is not set
#
# Networking
#
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
CONFIG_IP_PNP_RARP=y
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
# CONFIG_SYN_COOKIES is not set
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_TUNNEL is not set
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_BIC=y
CONFIG_IPV6=y
# CONFIG_IPV6_PRIVACY is not set
# CONFIG_INET6_AH is not set
# CONFIG_INET6_ESP is not set
# CONFIG_INET6_IPCOMP is not set
# CONFIG_INET6_TUNNEL is not set
# CONFIG_IPV6_TUNNEL is not set
# CONFIG_NETFILTER is not set
#
# DCCP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_DCCP is not set
#
# SCTP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_NET_SCHED is not set
# CONFIG_NET_CLS_ROUTE is not set
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_IEEE80211 is not set
#
# Device Drivers
#
#
# Generic Driver Options
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
# CONFIG_FW_LOADER is not set
# CONFIG_DEBUG_DRIVER is not set
#
# Memory Technology Devices (MTD)
#
CONFIG_MTD=y
CONFIG_MTD_DEBUG=y
CONFIG_MTD_DEBUG_VERBOSE=3
# CONFIG_MTD_CONCAT is not set
CONFIG_MTD_PARTITIONS=y
CONFIG_MTD_REDBOOT_PARTS=m
CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-2
CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
CONFIG_MTD_CMDLINE_PARTS=y
# CONFIG_MTD_AFS_PARTS is not set
#
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLOCK=y
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
#
# RAM/ROM/Flash chip drivers
#
CONFIG_MTD_CFI=m
# CONFIG_MTD_JEDECPROBE is not set
CONFIG_MTD_GEN_PROBE=m
CONFIG_MTD_CFI_ADV_OPTIONS=y
CONFIG_MTD_CFI_NOSWAP=y
# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
CONFIG_MTD_CFI_GEOMETRY=y
# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_2 is not set
CONFIG_MTD_MAP_BANK_WIDTH_4=y
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
# CONFIG_MTD_CFI_I1 is not set
CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
# CONFIG_MTD_OTP is not set
CONFIG_MTD_CFI_INTELEXT=m
# CONFIG_MTD_CFI_AMDSTD is not set
# CONFIG_MTD_CFI_STAA is not set
CONFIG_MTD_CFI_UTIL=m
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set
# CONFIG_MTD_OBSOLETE_CHIPS is not set
# CONFIG_MTD_XIP is not set
#
# Mapping drivers for chip access
#
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
CONFIG_MTD_PHYSMAP=m
CONFIG_MTD_PHYSMAP_START=0x0000000
CONFIG_MTD_PHYSMAP_LEN=0x4000000
CONFIG_MTD_PHYSMAP_BANKWIDTH=2
# CONFIG_MTD_ARM_INTEGRATOR is not set
CONFIG_MTD_EDB7312=m
# CONFIG_MTD_PLATRAM is not set
#
# Self-contained MTD device drivers
#
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_PHRAM is not set
# CONFIG_MTD_MTDRAM is not set
# CONFIG_MTD_BLKMTD is not set
# CONFIG_MTD_BLOCK2MTD is not set
#
# Disk-On-Chip Device Drivers
#
# CONFIG_MTD_DOC2000 is not set
# CONFIG_MTD_DOC2001 is not set
# CONFIG_MTD_DOC2001PLUS is not set
#
# NAND Flash Device Drivers
#
CONFIG_MTD_NAND=y
# CONFIG_MTD_NAND_VERIFY_WRITE is not set
CONFIG_MTD_NAND_MP1000=y
CONFIG_MTD_NAND_IDS=y
# CONFIG_MTD_NAND_DISKONCHIP is not set
# CONFIG_MTD_NAND_NANDSIM is not set
#
# Parallel port support
#
# CONFIG_PARPORT is not set
#
# Plug and Play support
#
#
# Block devices
#
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_NBD is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=2
CONFIG_BLK_DEV_RAM_SIZE=16384
CONFIG_BLK_DEV_INITRD=y
# CONFIG_CDROM_PKTCDVD is not set
#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
# CONFIG_ATA_OVER_ETH is not set
#
# ATA/ATAPI/MFM/RLL support
#
CONFIG_IDE=y
CONFIG_BLK_DEV_IDE=y
#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_IDE_SATA is not set
# CONFIG_BLK_DEV_HD_IDE is not set
CONFIG_BLK_DEV_IDEDISK=y
# CONFIG_IDEDISK_MULTI_MODE is not set
# CONFIG_BLK_DEV_IDECD is not set
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_IDE_TASK_IOCTL is not set
#
# IDE chipset support/bugfixes
#
# CONFIG_IDE_GENERIC is not set
CONFIG_IDE_ARM=y
CONFIG_BLK_DEV_IDE_MP1000=y
# CONFIG_BLK_DEV_IDEDMA is not set
# CONFIG_IDEDMA_AUTO is not set
# CONFIG_BLK_DEV_HD is not set
#
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
# CONFIG_SCSI is not set
#
# Multi-device support (RAID and LVM)
#
CONFIG_MD=y
# CONFIG_BLK_DEV_MD is not set
CONFIG_BLK_DEV_DM=y
# CONFIG_DM_CRYPT is not set
# CONFIG_DM_SNAPSHOT is not set
# CONFIG_DM_MIRROR is not set
# CONFIG_DM_ZERO is not set
# CONFIG_DM_MULTIPATH is not set
#
# Fusion MPT device support
#
# CONFIG_FUSION is not set
#
# IEEE 1394 (FireWire) support
#
# CONFIG_IEEE1394 is not set
#
# I2O device support
#
#
# Network device support
#
CONFIG_NETDEVICES=y
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
#
# PHY device support
#
# CONFIG_PHYLIB is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
# CONFIG_MII is not set
# CONFIG_SMC91X is not set
# CONFIG_DM9000 is not set
CONFIG_CS89x0=y
#
# Ethernet (1000 Mbit)
#
#
# Ethernet (10000 Mbit)
#
#
# Token Ring devices
#
#
# Wireless LAN (non-hamradio)
#
# CONFIG_NET_RADIO is not set
#
# Wan interfaces
#
# CONFIG_WAN is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
#
# ISDN subsystem
#
# CONFIG_ISDN is not set
#
# Input device support
#
CONFIG_INPUT=y
#
# Userland interfaces
#
# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
# CONFIG_INPUT_EVDEV is not set
CONFIG_INPUT_EVBUG=y
#
# Input Device Drivers
#
# CONFIG_INPUT_KEYBOARD is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set
#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_SERPORT=y
# CONFIG_SERIO_LIBPS2 is not set
# CONFIG_SERIO_RAW is not set
# CONFIG_GAMEPORT is not set
#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_SERIAL_NONSTANDARD is not set
#
# Serial drivers
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=2
# CONFIG_SERIAL_8250_EXTENDED is not set
#
# Non-8250 serial port support
#
CONFIG_SERIAL_CLPS711X=y
CONFIG_SERIAL_CLPS711X_CONSOLE=y
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256
#
# IPMI
#
# CONFIG_IPMI_HANDLER is not set
#
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
CONFIG_NVRAM=y
CONFIG_RTC=y
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
#
# Ftape, the floppy tape device driver
#
# CONFIG_RAW_DRIVER is not set
#
# TPM devices
#
#
# I2C support
#
# CONFIG_I2C is not set
#
# Hardware Monitoring support
#
CONFIG_HWMON=y
# CONFIG_HWMON_VID is not set
# CONFIG_HWMON_DEBUG_CHIP is not set
#
# Misc devices
#
#
# Multimedia Capabilities Port drivers
#
#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
#
# Digital Video Broadcasting Devices
#
# CONFIG_DVB is not set
#
# Graphics support
#
# CONFIG_FB is not set
#
# Console display driver support
#
# CONFIG_VGA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
#
# Sound
#
# CONFIG_SOUND is not set
#
# USB support
#
CONFIG_USB_ARCH_HAS_HCD=y
# CONFIG_USB_ARCH_HAS_OHCI is not set
# CONFIG_USB is not set
#
# USB Gadget Support
#
# CONFIG_USB_GADGET is not set
#
# MMC/SD Card support
#
# CONFIG_MMC is not set
#
# File systems
#
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
# CONFIG_EXT2_FS_POSIX_ACL is not set
# CONFIG_EXT2_FS_SECURITY is not set
# CONFIG_EXT2_FS_XIP is not set
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_XATTR=y
# CONFIG_EXT3_FS_POSIX_ACL is not set
# CONFIG_EXT3_FS_SECURITY is not set
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=m
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
# CONFIG_REISERFS_FS_XATTR is not set
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_INOTIFY=y
CONFIG_QUOTA=y
# CONFIG_QFMT_V1 is not set
# CONFIG_QFMT_V2 is not set
CONFIG_QUOTACTL=y
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set
# CONFIG_FUSE_FS is not set
#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not set
# CONFIG_UDF_FS is not set
#
# DOS/FAT/NT Filesystems
#
# CONFIG_MSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_NTFS_FS is not set
#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
# CONFIG_HUGETLBFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
# CONFIG_RELAYFS_FS is not set
#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
CONFIG_JFFS2_FS=m
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
CONFIG_JFFS2_ZLIB=y
CONFIG_JFFS2_RTIME=y
# CONFIG_JFFS2_RUBIN is not set
CONFIG_CRAMFS=m
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
#
# Network File Systems
#
CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
CONFIG_NFS_V4=y
# CONFIG_NFS_DIRECTIO is not set
CONFIG_NFSD=y
CONFIG_NFSD_V3=y
# CONFIG_NFSD_V3_ACL is not set
CONFIG_NFSD_V4=y
CONFIG_NFSD_TCP=y
CONFIG_ROOT_NFS=y
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=y
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
CONFIG_SUNRPC_GSS=y
CONFIG_RPCSEC_GSS_KRB5=y
# CONFIG_RPCSEC_GSS_SPKM3 is not set
CONFIG_SMB_FS=m
# CONFIG_SMB_NLS_DEFAULT is not set
CONFIG_CIFS=m
# CONFIG_CIFS_STATS is not set
# CONFIG_CIFS_XATTR is not set
# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
# CONFIG_9P_FS is not set
#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
#
# Native Language Support
#
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
CONFIG_NLS_CODEPAGE_437=y
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
# CONFIG_NLS_CODEPAGE_850 is not set
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set
# CONFIG_NLS_ASCII is not set
# CONFIG_NLS_ISO8859_1 is not set
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
# CONFIG_NLS_ISO8859_15 is not set
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
# CONFIG_NLS_UTF8 is not set
#
# Profiling support
#
# CONFIG_PROFILING is not set
#
# Kernel hacking
#
CONFIG_PRINTK_TIME=y
CONFIG_DEBUG_KERNEL=y
# CONFIG_MAGIC_SYSRQ is not set
CONFIG_LOG_BUF_SHIFT=14
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_FS is not set
CONFIG_FRAME_POINTER=y
CONFIG_DEBUG_USER=y
CONFIG_DEBUG_WAITQ=y
CONFIG_DEBUG_ERRORS=y
CONFIG_DEBUG_LL=y
# CONFIG_DEBUG_ICEDCC is not set
# CONFIG_DEBUG_CLPS711X_UART2 is not set
#
# Security options
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
#
# Cryptographic options
#
CONFIG_CRYPTO=y
# CONFIG_CRYPTO_HMAC is not set
# CONFIG_CRYPTO_NULL is not set
# CONFIG_CRYPTO_MD4 is not set
CONFIG_CRYPTO_MD5=y
# CONFIG_CRYPTO_SHA1 is not set
# CONFIG_CRYPTO_SHA256 is not set
# CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_WP512 is not set
# CONFIG_CRYPTO_TGR192 is not set
CONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_SERPENT is not set
# CONFIG_CRYPTO_AES is not set
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_TEA is not set
# CONFIG_CRYPTO_ARC4 is not set
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
# CONFIG_CRYPTO_DEFLATE is not set
# CONFIG_CRYPTO_MICHAEL_MIC is not set
# CONFIG_CRYPTO_CRC32C is not set
# CONFIG_CRYPTO_TEST is not set
#
# Hardware crypto devices
#
#
# Library routines
#
# CONFIG_CRC_CCITT is not set
# CONFIG_CRC16 is not set
CONFIG_CRC32=y
# CONFIG_LIBCRC32C is not set
CONFIG_ZLIB_INFLATE=m
CONFIG_ZLIB_DEFLATE=m
This diff is collapsed.
Click to expand it.
arch/arm/kernel/module.c
View file @
6fbfddcb
...
...
@@ -11,6 +11,7 @@
*/
#include <linux/config.h>
#include <linux/module.h>
#include <linux/moduleloader.h>
#include <linux/kernel.h>
#include <linux/elf.h>
#include <linux/vmalloc.h>
...
...
This diff is collapsed.
Click to expand it.
arch/arm/kernel/traps.c
View file @
6fbfddcb
...
...
@@ -345,7 +345,9 @@ static int bad_syscall(int n, struct pt_regs *regs)
struct
thread_info
*
thread
=
current_thread_info
();
siginfo_t
info
;
if
(
current
->
personality
!=
PER_LINUX
&&
thread
->
exec_domain
->
handler
)
{
if
(
current
->
personality
!=
PER_LINUX
&&
current
->
personality
!=
PER_LINUX_32BIT
&&
thread
->
exec_domain
->
handler
)
{
thread
->
exec_domain
->
handler
(
n
,
regs
);
return
regs
->
ARM_r0
;
}
...
...
This diff is collapsed.
Click to expand it.
arch/arm/lib/Makefile
View file @
6fbfddcb
...
...
@@ -11,7 +11,7 @@ lib-y := backtrace.o changebit.o csumipv6.o csumpartial.o \
strnlen_user.o strchr.o strrchr.o testchangebit.o
\
testclearbit.o testsetbit.o uaccess.o getuser.o
\
putuser.o ashldi3.o ashrdi3.o lshrdi3.o muldi3.o
\
ucmpdi2.o lib1funcs.o div64.o
\
ucmpdi2.o lib1funcs.o div64.o
sha1.o
\
io-readsb.o io-writesb.o io-readsl.o io-writesl.o
ifeq
($(CONFIG_CPU_32v3),y)
...
...
This diff is collapsed.
Click to expand it.
arch/arm/lib/sha1.S
0 → 100644
View file @
6fbfddcb
/*
*
linux
/
arch
/
arm
/
lib
/
sha1
.
S
*
*
SHA
transform
optimized
for
ARM
*
*
Copyright
:
(
C
)
2005
by
Nicolas
Pitre
<
nico
@
cam
.
org
>
*
Created
:
September
17
,
2005
*
*
This
program
is
free
software
; you can redistribute it and/or modify
*
it
under
the
terms
of
the
GNU
General
Public
License
version
2
as
*
published
by
the
Free
Software
Foundation
.
*
*
The
reference
implementation
for
this
code
is
linux
/
lib
/
sha1
.
c
*/
#include <linux/linkage.h>
.
text
/*
*
void
sha_transform
(
__u32
*
digest
,
const
char
*
in
,
__u32
*
W
)
*
*
Note
:
the
"in"
ptr
may
be
unaligned
.
*/
ENTRY
(
sha_transform
)
stmfd
sp
!,
{
r4
-
r8
,
lr
}
@
for
(
i
=
0
; i < 16; i++)
@
W
[
i
]
=
be32_to_cpu
(
in
[
i
])
; */
#ifdef __ARMEB__
mov
r4
,
r0
mov
r0
,
r2
mov
r2
,
#
64
bl
memcpy
mov
r2
,
r0
mov
r0
,
r4
#else
mov
r3
,
r2
mov
lr
,
#
16
1
:
ldrb
r4
,
[
r1
],
#
1
ldrb
r5
,
[
r1
],
#
1
ldrb
r6
,
[
r1
],
#
1
ldrb
r7
,
[
r1
],
#
1
subs
lr
,
lr
,
#
1
orr
r5
,
r5
,
r4
,
lsl
#
8
orr
r6
,
r6
,
r5
,
lsl
#
8
orr
r7
,
r7
,
r6
,
lsl
#
8
str
r7
,
[
r3
],
#
4
bne
1
b
#endif
@
for
(
i
=
0
; i < 64; i++)
@
W
[
i
+
16
]
=
ror
(
W
[
i
+
13
]
^
W
[
i
+
8
]
^
W
[
i
+
2
]
^
W
[
i
],
31
)
;
sub
r3
,
r2
,
#
4
mov
lr
,
#
64
2
:
ldr
r4
,
[
r3
,
#
4
]!
subs
lr
,
lr
,
#
1
ldr
r5
,
[
r3
,
#
8
]
ldr
r6
,
[
r3
,
#
32
]
ldr
r7
,
[
r3
,
#
52
]
eor
r4
,
r4
,
r5
eor
r4
,
r4
,
r6
eor
r4
,
r4
,
r7
mov
r4
,
r4
,
ror
#
31
str
r4
,
[
r3
,
#
64
]
bne
2
b
/
*
*
The
SHA
functions
are
:
*
*
f1
(
B
,
C
,
D
)
=
(
D
^
(
B
&
(
C
^
D
)))
*
f2
(
B
,
C
,
D
)
=
(
B
^
C
^
D
)
*
f3
(
B
,
C
,
D
)
=
((
B
&
C
)
| (D & (B |
C
)))
*
*
Then
the
sub
-
blocks
are
processed
as
follows
:
*
*
A
' = ror(A, 27) + f(B,C,D) + E + K + *W++
*
B
' = A
*
C
' = ror(B, 2)
*
D
' = C
*
E
' = D
*
*
We
therefore
unroll
each
loop
5
times
to
avoid
register
shuffling
.
*
Also
the
ror
for
C
(
and
also
D
and
E
which
are
successivelyderived
*
from
it
)
is
applied
in
place
to
cut
on
an
additional
mov
insn
for
*
each
round
.
*/
.
macro
sha_f1
,
A
,
B
,
C
,
D
,
E
ldr
r3
,
[
r2
],
#
4
eor
ip
,
\
C
,
\
D
add
\
E
,
r1
,
\
E
,
ror
#
2
and
ip
,
\
B
,
ip
,
ror
#
2
add
\
E
,
\
E
,
\
A
,
ror
#
27
eor
ip
,
ip
,
\
D
,
ror
#
2
add
\
E
,
\
E
,
r3
add
\
E
,
\
E
,
ip
.
endm
.
macro
sha_f2
,
A
,
B
,
C
,
D
,
E
ldr
r3
,
[
r2
],
#
4
add
\
E
,
r1
,
\
E
,
ror
#
2
eor
ip
,
\
B
,
\
C
,
ror
#
2
add
\
E
,
\
E
,
\
A
,
ror
#
27
eor
ip
,
ip
,
\
D
,
ror
#
2
add
\
E
,
\
E
,
r3
add
\
E
,
\
E
,
ip
.
endm
.
macro
sha_f3
,
A
,
B
,
C
,
D
,
E
ldr
r3
,
[
r2
],
#
4
add
\
E
,
r1
,
\
E
,
ror
#
2
orr
ip
,
\
B
,
\
C
,
ror
#
2
add
\
E
,
\
E
,
\
A
,
ror
#
27
and
ip
,
ip
,
\
D
,
ror
#
2
add
\
E
,
\
E
,
r3
and
r3
,
\
B
,
\
C
,
ror
#
2
orr
ip
,
ip
,
r3
add
\
E
,
\
E
,
ip
.
endm
ldmia
r0
,
{
r4
-
r8
}
mov
lr
,
#
4
ldr
r1
,
.
L_sha_K
+
0
/
*
adjust
initial
values
*/
mov
r6
,
r6
,
ror
#
30
mov
r7
,
r7
,
ror
#
30
mov
r8
,
r8
,
ror
#
30
3
:
subs
lr
,
lr
,
#
1
sha_f1
r4
,
r5
,
r6
,
r7
,
r8
sha_f1
r8
,
r4
,
r5
,
r6
,
r7
sha_f1
r7
,
r8
,
r4
,
r5
,
r6
sha_f1
r6
,
r7
,
r8
,
r4
,
r5
sha_f1
r5
,
r6
,
r7
,
r8
,
r4
bne
3
b
ldr
r1
,
.
L_sha_K
+
4
mov
lr
,
#
4
4
:
subs
lr
,
lr
,
#
1
sha_f2
r4
,
r5
,
r6
,
r7
,
r8
sha_f2
r8
,
r4
,
r5
,
r6
,
r7
sha_f2
r7
,
r8
,
r4
,
r5
,
r6
sha_f2
r6
,
r7
,
r8
,
r4
,
r5
sha_f2
r5
,
r6
,
r7
,
r8
,
r4
bne
4
b
ldr
r1
,
.
L_sha_K
+
8
mov
lr
,
#
4
5
:
subs
lr
,
lr
,
#
1
sha_f3
r4
,
r5
,
r6
,
r7
,
r8
sha_f3
r8
,
r4
,
r5
,
r6
,
r7
sha_f3
r7
,
r8
,
r4
,
r5
,
r6
sha_f3
r6
,
r7
,
r8
,
r4
,
r5
sha_f3
r5
,
r6
,
r7
,
r8
,
r4
bne
5
b
ldr
r1
,
.
L_sha_K
+
12
mov
lr
,
#
4
6
:
subs
lr
,
lr
,
#
1
sha_f2
r4
,
r5
,
r6
,
r7
,
r8
sha_f2
r8
,
r4
,
r5
,
r6
,
r7
sha_f2
r7
,
r8
,
r4
,
r5
,
r6
sha_f2
r6
,
r7
,
r8
,
r4
,
r5
sha_f2
r5
,
r6
,
r7
,
r8
,
r4
bne
6
b
ldmia
r0
,
{
r1
,
r2
,
r3
,
ip
,
lr
}
add
r4
,
r1
,
r4
add
r5
,
r2
,
r5
add
r6
,
r3
,
r6
,
ror
#
2
add
r7
,
ip
,
r7
,
ror
#
2
add
r8
,
lr
,
r8
,
ror
#
2
stmia
r0
,
{
r4
-
r8
}
ldmfd
sp
!,
{
r4
-
r8
,
pc
}
.
L_sha_K
:
.
word
0x5a827999
,
0x6ed9eba1
,
0x8f1bbcdc
,
0xca62c1d6
/*
*
void
sha_init
(
__u32
*
buf
)
*/
.
L_sha_initial_digest
:
.
word
0x67452301
,
0xefcdab89
,
0x98badcfe
,
0x10325476
,
0xc3d2e1f0
ENTRY
(
sha_init
)
str
lr
,
[
sp
,
#-
4
]!
adr
r1
,
.
L_sha_initial_digest
ldmia
r1
,
{
r1
,
r2
,
r3
,
ip
,
lr
}
stmia
r0
,
{
r1
,
r2
,
r3
,
ip
,
lr
}
ldr
pc
,
[
sp
],
#
4
This diff is collapsed.
Click to expand it.
arch/arm/mach-aaec2000/Makefile
View file @
6fbfddcb
...
...
@@ -3,7 +3,7 @@
#
# Common support (must be linked before board specific support)
obj-y
+=
core.o
obj-y
+=
core.o
clock.o
# Specific board support
obj-$(CONFIG_MACH_AAED2000)
+=
aaed2000.o
This diff is collapsed.
Click to expand it.
arch/arm/mach-aaec2000/aaed2000.c
View file @
6fbfddcb
...
...
@@ -27,16 +27,65 @@
#include <asm/mach/map.h>
#include <asm/mach/irq.h>
#include <asm/arch/aaed2000.h>
#include "core.h"
static
void
aaed2000_clcd_disable
(
struct
clcd_fb
*
fb
)
{
AAED_EXT_GPIO
&=
~
AAED_EGPIO_LCD_PWR_EN
;
}
static
void
aaed2000_clcd_enable
(
struct
clcd_fb
*
fb
)
{
AAED_EXT_GPIO
|=
AAED_EGPIO_LCD_PWR_EN
;
}
struct
aaec2000_clcd_info
clcd_info
=
{
.
enable
=
aaed2000_clcd_enable
,
.
disable
=
aaed2000_clcd_disable
,
.
panel
=
{
.
mode
=
{
.
name
=
"Sharp"
,
.
refresh
=
60
,
.
xres
=
640
,
.
yres
=
480
,
.
pixclock
=
39721
,
.
left_margin
=
20
,
.
right_margin
=
44
,
.
upper_margin
=
21
,
.
lower_margin
=
34
,
.
hsync_len
=
96
,
.
vsync_len
=
2
,
.
sync
=
0
,
.
vmode
=
FB_VMODE_NONINTERLACED
,
},
.
width
=
-
1
,
.
height
=
-
1
,
.
tim2
=
TIM2_IVS
|
TIM2_IHS
,
.
cntl
=
CNTL_LCDTFT
,
.
bpp
=
16
,
},
};
static
void
__init
aaed2000_init_irq
(
void
)
{
aaec2000_init_irq
();
}
static
void
__init
aaed2000_init
(
void
)
{
aaec2000_set_clcd_plat_data
(
&
clcd_info
);
}
static
struct
map_desc
aaed2000_io_desc
[]
__initdata
=
{
{
EXT_GPIO_VBASE
,
EXT_GPIO_PBASE
,
EXT_GPIO_LENGTH
,
MT_DEVICE
},
/* Ext GPIO */
};
static
void
__init
aaed2000_map_io
(
void
)
{
aaec2000_map_io
();
iotable_init
(
aaed2000_io_desc
,
ARRAY_SIZE
(
aaed2000_io_desc
));
}
MACHINE_START
(
AAED2000
,
"Agilent AAED-2000 Development Platform"
)
...
...
@@ -47,4 +96,5 @@ MACHINE_START(AAED2000, "Agilent AAED-2000 Development Platform")
.
map_io
=
aaed2000_map_io
,
.
init_irq
=
aaed2000_init_irq
,
.
timer
=
&
aaec2000_timer
,
.
init_machine
=
aaed2000_init
,
MACHINE_END
This diff is collapsed.
Click to expand it.
arch/arm/mach-aaec2000/clock.c
0 → 100644
View file @
6fbfddcb
/*
* linux/arch/arm/mach-aaec2000/clock.c
*
* Copyright (C) 2005 Nicolas Bellido Y Ortega
*
* Based on linux/arch/arm/mach-integrator/clock.c
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/list.h>
#include <linux/errno.h>
#include <linux/err.h>
#include <asm/semaphore.h>
#include <asm/hardware/clock.h>
#include "clock.h"
static
LIST_HEAD
(
clocks
);
static
DECLARE_MUTEX
(
clocks_sem
);
struct
clk
*
clk_get
(
struct
device
*
dev
,
const
char
*
id
)
{
struct
clk
*
p
,
*
clk
=
ERR_PTR
(
-
ENOENT
);
down
(
&
clocks_sem
);
list_for_each_entry
(
p
,
&
clocks
,
node
)
{
if
(
strcmp
(
id
,
p
->
name
)
==
0
&&
try_module_get
(
p
->
owner
))
{
clk
=
p
;
break
;
}
}
up
(
&
clocks_sem
);
return
clk
;
}
EXPORT_SYMBOL
(
clk_get
);
void
clk_put
(
struct
clk
*
clk
)
{
module_put
(
clk
->
owner
);
}
EXPORT_SYMBOL
(
clk_put
);
int
clk_enable
(
struct
clk
*
clk
)
{
return
0
;
}
EXPORT_SYMBOL
(
clk_enable
);
void
clk_disable
(
struct
clk
*
clk
)
{
}
EXPORT_SYMBOL
(
clk_disable
);
int
clk_use
(
struct
clk
*
clk
)
{
return
0
;
}
EXPORT_SYMBOL
(
clk_use
);
void
clk_unuse
(
struct
clk
*
clk
)
{
}
EXPORT_SYMBOL
(
clk_unuse
);
unsigned
long
clk_get_rate
(
struct
clk
*
clk
)
{
return
clk
->
rate
;
}
EXPORT_SYMBOL
(
clk_get_rate
);
long
clk_round_rate
(
struct
clk
*
clk
,
unsigned
long
rate
)
{
return
rate
;
}
EXPORT_SYMBOL
(
clk_round_rate
);
int
clk_set_rate
(
struct
clk
*
clk
,
unsigned
long
rate
)
{
return
0
;
}
EXPORT_SYMBOL
(
clk_set_rate
);
int
clk_register
(
struct
clk
*
clk
)
{
down
(
&
clocks_sem
);
list_add
(
&
clk
->
node
,
&
clocks
);
up
(
&
clocks_sem
);
return
0
;
}
EXPORT_SYMBOL
(
clk_register
);
void
clk_unregister
(
struct
clk
*
clk
)
{
down
(
&
clocks_sem
);
list_del
(
&
clk
->
node
);
up
(
&
clocks_sem
);
}
EXPORT_SYMBOL
(
clk_unregister
);
static
int
__init
clk_init
(
void
)
{
return
0
;
}
arch_initcall
(
clk_init
);
This diff is collapsed.
Click to expand it.
arch/arm/mach-aaec2000/clock.h
0 → 100644
View file @
6fbfddcb
/*
* linux/arch/arm/mach-aaec2000/clock.h
*
* Copyright (C) 2005 Nicolas Bellido Y Ortega
*
* Based on linux/arch/arm/mach-integrator/clock.h
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
struct
module
;
struct
clk
{
struct
list_head
node
;
unsigned
long
rate
;
struct
module
*
owner
;
const
char
*
name
;
void
*
data
;
};
int
clk_register
(
struct
clk
*
clk
);
void
clk_unregister
(
struct
clk
*
clk
);
This diff is collapsed.
Click to expand it.
arch/arm/mach-aaec2000/core.c
View file @
6fbfddcb
...
...
@@ -13,19 +13,27 @@
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/device.h>
#include <linux/list.h>
#include <linux/errno.h>
#include <linux/dma-mapping.h>
#include <linux/interrupt.h>
#include <linux/timex.h>
#include <linux/signal.h>
#include <asm/hardware.h>
#include <asm/irq.h>
#include <asm/sizes.h>
#include <asm/hardware/amba.h>
#include <asm/mach/flash.h>
#include <asm/mach/irq.h>
#include <asm/mach/time.h>
#include <asm/mach/map.h>
#include "core.h"
#include "clock.h"
/*
* Common I/O mapping:
*
...
...
@@ -40,9 +48,17 @@
* default mapping provided here.
*/
static
struct
map_desc
standard_io_desc
[]
__initdata
=
{
/* virtual physical length type */
{
VIO_APB_BASE
,
PIO_APB_BASE
,
IO_APB_LENGTH
,
MT_DEVICE
},
{
VIO_AHB_BASE
,
PIO_AHB_BASE
,
IO_AHB_LENGTH
,
MT_DEVICE
}
{
.
virtual
=
VIO_APB_BASE
,
.
physical
=
__phys_to_pfn
(
PIO_APB_BASE
),
.
length
=
IO_APB_LENGTH
,
.
type
=
MT_DEVICE
},
{
.
virtual
=
VIO_AHB_BASE
,
.
physical
=
__phys_to_pfn
(
PIO_AHB_BASE
),
.
length
=
IO_AHB_LENGTH
,
.
type
=
MT_DEVICE
}
};
void
__init
aaec2000_map_io
(
void
)
...
...
@@ -155,3 +171,116 @@ struct sys_timer aaec2000_timer = {
.
offset
=
aaec2000_gettimeoffset
,
};
static
struct
clcd_panel
mach_clcd_panel
;
static
int
aaec2000_clcd_setup
(
struct
clcd_fb
*
fb
)
{
dma_addr_t
dma
;
fb
->
panel
=
&
mach_clcd_panel
;
fb
->
fb
.
screen_base
=
dma_alloc_writecombine
(
&
fb
->
dev
->
dev
,
SZ_1M
,
&
dma
,
GFP_KERNEL
);
if
(
!
fb
->
fb
.
screen_base
)
{
printk
(
KERN_ERR
"CLCD: unable to map framebuffer
\n
"
);
return
-
ENOMEM
;
}
fb
->
fb
.
fix
.
smem_start
=
dma
;
fb
->
fb
.
fix
.
smem_len
=
SZ_1M
;
return
0
;
}
static
int
aaec2000_clcd_mmap
(
struct
clcd_fb
*
fb
,
struct
vm_area_struct
*
vma
)
{
return
dma_mmap_writecombine
(
&
fb
->
dev
->
dev
,
vma
,
fb
->
fb
.
screen_base
,
fb
->
fb
.
fix
.
smem_start
,
fb
->
fb
.
fix
.
smem_len
);
}
static
void
aaec2000_clcd_remove
(
struct
clcd_fb
*
fb
)
{
dma_free_writecombine
(
&
fb
->
dev
->
dev
,
fb
->
fb
.
fix
.
smem_len
,
fb
->
fb
.
screen_base
,
fb
->
fb
.
fix
.
smem_start
);
}
static
struct
clcd_board
clcd_plat_data
=
{
.
name
=
"AAEC-2000"
,
.
check
=
clcdfb_check
,
.
decode
=
clcdfb_decode
,
.
setup
=
aaec2000_clcd_setup
,
.
mmap
=
aaec2000_clcd_mmap
,
.
remove
=
aaec2000_clcd_remove
,
};
static
struct
amba_device
clcd_device
=
{
.
dev
=
{
.
bus_id
=
"mb:16"
,
.
coherent_dma_mask
=
~
0
,
.
platform_data
=
&
clcd_plat_data
,
},
.
res
=
{
.
start
=
AAEC_CLCD_PHYS
,
.
end
=
AAEC_CLCD_PHYS
+
SZ_4K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
.
irq
=
{
INT_LCD
,
NO_IRQ
},
.
periphid
=
0x41110
,
};
static
struct
amba_device
*
amba_devs
[]
__initdata
=
{
&
clcd_device
,
};
static
struct
clk
aaec2000_clcd_clk
=
{
.
name
=
"CLCDCLK"
,
};
void
__init
aaec2000_set_clcd_plat_data
(
struct
aaec2000_clcd_info
*
clcd
)
{
clcd_plat_data
.
enable
=
clcd
->
enable
;
clcd_plat_data
.
disable
=
clcd
->
disable
;
memcpy
(
&
mach_clcd_panel
,
&
clcd
->
panel
,
sizeof
(
struct
clcd_panel
));
}
static
struct
flash_platform_data
aaec2000_flash_data
=
{
.
map_name
=
"cfi_probe"
,
.
width
=
4
,
};
static
struct
resource
aaec2000_flash_resource
=
{
.
start
=
AAEC_FLASH_BASE
,
.
end
=
AAEC_FLASH_BASE
+
AAEC_FLASH_SIZE
,
.
flags
=
IORESOURCE_MEM
,
};
static
struct
platform_device
aaec2000_flash_device
=
{
.
name
=
"armflash"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
aaec2000_flash_data
,
},
.
num_resources
=
1
,
.
resource
=
&
aaec2000_flash_resource
,
};
static
int
__init
aaec2000_init
(
void
)
{
int
i
;
clk_register
(
&
aaec2000_clcd_clk
);
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
amba_devs
);
i
++
)
{
struct
amba_device
*
d
=
amba_devs
[
i
];
amba_device_register
(
d
,
&
iomem_resource
);
}
platform_device_register
(
&
aaec2000_flash_device
);
return
0
;
};
arch_initcall
(
aaec2000_init
);
This diff is collapsed.
Click to expand it.
arch/arm/mach-aaec2000/core.h
View file @
6fbfddcb
...
...
@@ -9,8 +9,19 @@
*
*/
#include <asm/hardware/amba_clcd.h>
struct
sys_timer
;
extern
struct
sys_timer
aaec2000_timer
;
extern
void
__init
aaec2000_map_io
(
void
);
extern
void
__init
aaec2000_init_irq
(
void
);
struct
aaec2000_clcd_info
{
struct
clcd_panel
panel
;
void
(
*
disable
)(
struct
clcd_fb
*
);
void
(
*
enable
)(
struct
clcd_fb
*
);
};
extern
void
__init
aaec2000_set_clcd_plat_data
(
struct
aaec2000_clcd_info
*
);
This diff is collapsed.
Click to expand it.
arch/arm/mach-clps711x/Kconfig
View file @
6fbfddcb
...
...
@@ -69,6 +69,17 @@ config EP72XX_ROM_BOOT
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
endif
This diff is collapsed.
Click to expand it.
Prev
1
2
3
4
5
…
30
Next
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