Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
7266355c
Commit
7266355c
authored
Dec 21, 2003
by
Russell King
Browse files
Options
Browse Files
Download
Plain Diff
[ARM] Merge current 2.6 into experimental tree.
parents
67e9bb60
f5793133
Changes
18
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
382 additions
and
142 deletions
+382
-142
arch/arm/boot/compressed/Makefile
arch/arm/boot/compressed/Makefile
+0
-4
arch/arm/boot/compressed/head-integrator.S
arch/arm/boot/compressed/head-integrator.S
+0
-4
arch/arm/boot/compressed/head.S
arch/arm/boot/compressed/head.S
+6
-6
arch/arm/configs/shark_defconfig
arch/arm/configs/shark_defconfig
+109
-44
arch/arm/kernel/armksyms.c
arch/arm/kernel/armksyms.c
+2
-2
arch/arm/lib/div64.S
arch/arm/lib/div64.S
+195
-54
arch/arm/mach-clps711x/time.c
arch/arm/mach-clps711x/time.c
+4
-1
arch/arm/mach-integrator/integrator_ap.c
arch/arm/mach-integrator/integrator_ap.c
+1
-1
arch/arm/mm/cache-v3.S
arch/arm/mm/cache-v3.S
+2
-2
arch/arm/mm/cache-v4.S
arch/arm/mm/cache-v4.S
+2
-2
arch/arm/mm/cache-v4wb.S
arch/arm/mm/cache-v4wb.S
+2
-2
arch/arm/mm/cache-v4wt.S
arch/arm/mm/cache-v4wt.S
+2
-2
drivers/acorn/char/i2c.c
drivers/acorn/char/i2c.c
+5
-3
include/asm-arm/arch-ebsa285/time.h
include/asm-arm/arch-ebsa285/time.h
+4
-1
include/asm-arm/arch-pxa/time.h
include/asm-arm/arch-pxa/time.h
+7
-1
include/asm-arm/arch-sa1100/time.h
include/asm-arm/arch-sa1100/time.h
+7
-1
include/asm-arm/arch-shark/time.h
include/asm-arm/arch-shark/time.h
+0
-2
include/asm-arm/div64.h
include/asm-arm/div64.h
+34
-10
No files found.
arch/arm/boot/compressed/Makefile
View file @
7266355c
...
...
@@ -23,10 +23,6 @@ ifeq ($(CONFIG_ARCH_SHARK),y)
OBJS
+=
head-shark.o ofw-shark.o
endif
ifeq
($(CONFIG_ARCH_INTEGRATOR),y)
OBJS
+=
head-integrator.o
endif
ifeq
($(CONFIG_ARCH_CAMELOT),y)
OBJS
+=
head-epxa10db.o
endif
...
...
arch/arm/boot/compressed/head-integrator.S
deleted
100644 → 0
View file @
67e9bb60
#include <asm/mach-types.h>
.
section
".start"
,
"ax"
mov
r7
,
#
MACH_TYPE_INTEGRATOR
arch/arm/boot/compressed/head.S
View file @
7266355c
...
...
@@ -503,12 +503,6 @@ proc_types:
@
Everything
from
here
on
will
be
the
new
ID
system
.
.
word
0x41129200
@
ARM920T
.
word
0xff00fff0
b
__armv4_cache_on
b
__armv4_cache_off
b
__armv4_cache_flush
.
word
0x4401a100
@
sa110
/
sa1100
.
word
0xffffffe0
b
__armv4_cache_on
...
...
@@ -523,6 +517,12 @@ proc_types:
@
These
match
on
the
architecture
ID
.
word
0x00020000
@
ARMv4T
.
word
0x000f0000
b
__armv4_cache_on
b
__armv4_cache_off
b
__armv4_cache_flush
.
word
0x00050000
@
ARMv5TE
.
word
0x000f0000
b
__armv4_cache_on
...
...
arch/arm/configs/shark_defconfig
View file @
7266355c
...
...
@@ -10,6 +10,10 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
# CONFIG_CLEAN_COMPILE is not set
# CONFIG_STANDALONE is not set
CONFIG_BROKEN=y
CONFIG_BROKEN_ON_SMP=y
#
# General setup
...
...
@@ -19,6 +23,14 @@ CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
CONFIG_LOG_BUF_SHIFT=14
# CONFIG_IKCONFIG is not set
# CONFIG_EMBEDDED is not set
CONFIG_KALLSYMS=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
#
# Loadable module support
...
...
@@ -35,7 +47,6 @@ CONFIG_KMOD=y
#
# CONFIG_ARCH_ADIFCC is not set
# CONFIG_ARCH_ANAKIN is not set
# CONFIG_ARCH_ARCA5K is not set
# CONFIG_ARCH_CLPS7500 is not set
# CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_CO285 is not set
...
...
@@ -44,20 +55,12 @@ CONFIG_KMOD=y
# CONFIG_ARCH_CAMELOT is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
# CONFIG_ARCH_INTEGRATOR is not set
# CONFIG_ARCH_IOP3
10
is not set
# CONFIG_ARCH_IOP3
XX
is not set
# CONFIG_ARCH_L7200 is not set
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
CONFIG_ARCH_SHARK=y
#
# Archimedes/A5000 Implementations
#
#
# Archimedes/A5000 Implementations (select only ONE)
#
#
# CLPS711X/EP721X Implementations
#
...
...
@@ -71,11 +74,13 @@ CONFIG_ARCH_SHARK=y
#
#
# IOP3
10
Implementation Options
# IOP3
xx
Implementation Options
#
# CONFIG_ARCH_IOP310 is not set
# CONFIG_ARCH_IOP321 is not set
#
# IOP3
10
Chipset Features
# IOP3
xx
Chipset Features
#
#
...
...
@@ -92,6 +97,10 @@ CONFIG_ARCH_SHARK=y
CONFIG_CPU_32=y
CONFIG_CPU_SA110=y
CONFIG_CPU_32v4=y
CONFIG_CPU_ABRT_EV4=y
CONFIG_CPU_CACHE_V4WB=y
CONFIG_CPU_COPY_V4WB=y
CONFIG_CPU_TLB_V4WB=y
#
# Processor Features
...
...
@@ -116,11 +125,13 @@ CONFIG_PCI_LEGACY_PROC=y
#
# CONFIG_FPE_NWFPE is not set
CONFIG_FPE_FASTFPE=y
CONFIG_KCORE_ELF=y
# CONFIG_KCORE_AOUT is not set
# CONFIG_BINFMT_AOUT is not set
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_AOUT is not set
# CONFIG_BINFMT_MISC is not set
#
# Generic Driver Options
#
# CONFIG_PM is not set
# CONFIG_PREEMPT is not set
# CONFIG_ARTHUR is not set
...
...
@@ -164,6 +175,7 @@ CONFIG_PARPORT_PC_CML1=y
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
CONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_NBD is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=4096
...
...
@@ -185,7 +197,6 @@ CONFIG_NET=y
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
# CONFIG_NETLINK_DEV is not set
# CONFIG_NETFILTER is not set
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
...
...
@@ -199,8 +210,11 @@ CONFIG_INET=y
# 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_IPV6 is not set
# CONFIG_XFRM_USER is not set
# CONFIG_DECNET is not set
# CONFIG_BRIDGE is not set
# CONFIG_NETFILTER is not set
#
# SCTP Configuration (EXPERIMENTAL)
...
...
@@ -209,9 +223,9 @@ CONFIG_IPV6_SCTP__=y
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_LLC is not set
# CONFIG_
DECNET
is not set
# CONFIG_
BRIDGE
is not set
# CONFIG_LLC
2
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
...
...
@@ -239,13 +253,13 @@ CONFIG_NETDEVICES=y
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
# CONFIG_MII is not set
# CONFIG_SMC91X is not set
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
...
...
@@ -294,8 +308,14 @@ CONFIG_CS89x0=y
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_R8169 is not set
# CONFIG_SIS190 is not set
# CONFIG_SK98LIN is not set
# CONFIG_TIGON3 is not set
#
# Ethernet (10000 Mbit)
#
# CONFIG_IXGB is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PLIP is not set
...
...
@@ -306,10 +326,12 @@ CONFIG_CS89x0=y
# Wireless LAN (non-hamradio)
#
# CONFIG_NET_RADIO is not set
# CONFIG_HOSTAP is not set
#
# Token Ring devices
(depends on LLC=y)
# Token Ring devices
#
# CONFIG_TR is not set
# CONFIG_NET_FC is not set
# CONFIG_RCPCI is not set
# CONFIG_SHAPER is not set
...
...
@@ -319,48 +341,55 @@ CONFIG_CS89x0=y
#
# CONFIG_WAN is not set
#
# Amateur Radio support
#
# CONFIG_HAMRADIO is not set
#
# IrDA (infrared) support
#
# CONFIG_IRDA is not set
#
#
Amateur Radio
support
#
Bluetooth
support
#
# CONFIG_
HAMRADIO
is not set
# CONFIG_
BT
is not set
#
# ATA/ATAPI/MFM/RLL support
#
CONFIG_IDE=y
#
# IDE, ATA and ATAPI Block devices
#
CONFIG_BLK_DEV_IDE=y
#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_HD is not set
CONFIG_BLK_DEV_IDEDISK=y
# CONFIG_IDEDISK_MULTI_MODE is not set
# CONFIG_IDEDISK_STROKE is not set
CONFIG_BLK_DEV_IDECD=y
# CONFIG_BLK_DEV_IDETAPE is not set
CONFIG_BLK_DEV_IDEFLOPPY=y
# CONFIG_BLK_DEV_IDESCSI is not set
# CONFIG_IDE_TASK_IOCTL is not set
# CONFIG_IDE_TASKFILE_IO is not set
#
# IDE chipset support/bugfixes
#
# CONFIG_BLK_DEV_IDEPCI is not set
# CONFIG_IDE_CHIPSETS is not set
# CONFIG_BLK_DEV_IDEDMA is not set
# CONFIG_IDEDMA_AUTO is not set
# CONFIG_DMA_NONPCI is not set
# CONFIG_BLK_DEV_HD is not set
#
# SCSI support
# SCSI
device
support
#
CONFIG_SCSI=m
CONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
...
...
@@ -395,7 +424,6 @@ CONFIG_CHR_DEV_SG=m
# CONFIG_SCSI_DPT_I2O is not set
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_IN2000 is not set
# CONFIG_SCSI_AM53C974 is not set
# CONFIG_SCSI_MEGARAID is not set
# CONFIG_SCSI_BUSLOGIC is not set
# CONFIG_SCSI_CPQFCTS is not set
...
...
@@ -407,15 +435,13 @@ CONFIG_CHR_DEV_SG=m
# CONFIG_SCSI_GDTH is not set
# CONFIG_SCSI_GENERIC_NCR5380 is not set
# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
# CONFIG_SCSI_IPS is not set
# CONFIG_SCSI_INITIO is not set
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_PPA is not set
# CONFIG_SCSI_IMM is not set
# CONFIG_SCSI_NCR53C406A is not set
# CONFIG_SCSI_NCR53C7xx is not set
# CONFIG_SCSI_SYM53C8XX_2 is not set
# CONFIG_SCSI_NCR53C8XX is not set
# CONFIG_SCSI_SYM53C8XX is not set
# CONFIG_SCSI_PAS16 is not set
# CONFIG_SCSI_PCI2000 is not set
# CONFIG_SCSI_PCI2220I is not set
...
...
@@ -425,6 +451,7 @@ CONFIG_CHR_DEV_SG=m
# CONFIG_SCSI_QLOGIC_FC is not set
# CONFIG_SCSI_QLOGIC_1280 is not set
# CONFIG_SCSI_SYM53C416 is not set
# CONFIG_SCSI_DC395x is not set
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_T128 is not set
# CONFIG_SCSI_U14_34F is not set
...
...
@@ -486,6 +513,7 @@ CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_NEWTON is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
# CONFIG_MOUSE_PS2_SYNAPTICS is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_INPORT is not set
# CONFIG_MOUSE_LOGIBM is not set
...
...
@@ -497,7 +525,9 @@ CONFIG_MOUSE_PS2=y
#
# Character devices
#
# CONFIG_VT is not set
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_SERIAL_NONSTANDARD is not set
#
...
...
@@ -505,6 +535,7 @@ CONFIG_MOUSE_PS2=y
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=4
# CONFIG_SERIAL_8250_EXTENDED is not set
#
...
...
@@ -526,12 +557,17 @@ CONFIG_PRINTER=m
# CONFIG_I2C is not set
#
# I2C Hardware Sensors Mainboard support
# I2C Algorithms
#
#
# I2C Hardware Bus support
#
#
# I2C Hardware Sensors Chip support
#
# CONFIG_I2C_SENSOR is not set
#
# L3 serial bus support
...
...
@@ -566,13 +602,22 @@ CONFIG_RTC=y
# CONFIG_AGP is not set
# CONFIG_DRM is not set
# CONFIG_RAW_DRIVER is not set
# CONFIG_HANGCHECK_TIMER is not set
#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
#
# Digital Video Broadcasting Devices
#
# CONFIG_DVB is not set
#
# MMC/SD Card support
#
# CONFIG_MMC is not set
#
# File systems
#
...
...
@@ -581,6 +626,7 @@ CONFIG_EXT2_FS=y
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
...
...
@@ -618,6 +664,8 @@ CONFIG_DEVFS_MOUNT=y
# CONFIG_DEVFS_DEBUG is not set
# CONFIG_DEVPTS_FS is not set
# CONFIG_TMPFS is not set
# CONFIG_HUGETLBFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
#
...
...
@@ -642,6 +690,7 @@ CONFIG_RAMFS=y
CONFIG_NFS_FS=y
# CONFIG_NFS_V3 is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
CONFIG_LOCKD=y
# CONFIG_EXPORTFS is not set
...
...
@@ -739,10 +788,25 @@ CONFIG_FB_CYBER2000=y
# CONFIG_FB_PM3 is not set
# CONFIG_FB_VIRTUAL is not set
#
# Console display driver support
#
# CONFIG_VGA_CONSOLE is not set
# CONFIG_MDA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_PCI_CONSOLE=y
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
#
# Logo configuration
#
# CONFIG_LOGO is not set
CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not set
CONFIG_LOGO_LINUX_CLUT224=y
#
# Sound
...
...
@@ -769,7 +833,6 @@ CONFIG_SOUND_PRIME=m
# CONFIG_SOUND_MAESTRO is not set
# CONFIG_SOUND_MAESTRO3 is not set
# CONFIG_SOUND_ICH is not set
# CONFIG_SOUND_RME96XX is not set
# CONFIG_SOUND_SONICVIBES is not set
# CONFIG_SOUND_TRIDENT is not set
# CONFIG_SOUND_MSNDCLAS is not set
...
...
@@ -779,6 +842,7 @@ CONFIG_SOUND_OSS=m
# CONFIG_SOUND_TRACEINIT is not set
# CONFIG_SOUND_DMAP is not set
# CONFIG_SOUND_AD1816 is not set
# CONFIG_SOUND_AD1889 is not set
# CONFIG_SOUND_SGALAXY is not set
CONFIG_SOUND_ADLIB=m
# CONFIG_SOUND_ACI_MIXER is not set
...
...
@@ -803,6 +867,11 @@ CONFIG_SOUND_SB=m
# CONFIG_SOUND_YMFPCI is not set
# CONFIG_SOUND_UART6850 is not set
# CONFIG_SOUND_AEDSP16 is not set
# CONFIG_SOUND_KAHLUA is not set
# CONFIG_SOUND_ALI5455 is not set
# CONFIG_SOUND_FORTE is not set
# CONFIG_SOUND_RME96XX is not set
# CONFIG_SOUND_AD1980 is not set
#
# Misc devices
...
...
@@ -822,11 +891,7 @@ CONFIG_SOUND_SB=m
# USB support
#
# CONFIG_USB is not set
#
# Bluetooth support
#
# CONFIG_BT is not set
# CONFIG_USB_GADGET is not set
#
# Kernel hacking
...
...
arch/arm/kernel/armksyms.c
View file @
7266355c
...
...
@@ -68,8 +68,8 @@ extern void __umoddi3(void);
extern
void
__udivmoddi4
(
void
);
extern
void
__udivsi3
(
void
);
extern
void
__umodsi3
(
void
);
extern
void
__do_div64
(
void
);
extern
void
abort
(
void
);
extern
void
do_div64
(
void
);
extern
void
ret_from_exception
(
void
);
extern
void
fpundefinstr
(
void
);
...
...
@@ -223,7 +223,7 @@ EXPORT_SYMBOL_NOVERS(__umoddi3);
EXPORT_SYMBOL_NOVERS
(
__udivmoddi4
);
EXPORT_SYMBOL_NOVERS
(
__udivsi3
);
EXPORT_SYMBOL_NOVERS
(
__umodsi3
);
EXPORT_SYMBOL_NOVERS
(
do_div64
);
EXPORT_SYMBOL_NOVERS
(
__
do_div64
);
/* bitops */
EXPORT_SYMBOL
(
_set_bit_le
);
...
...
arch/arm/lib/div64.S
View file @
7266355c
/*
*
linux
/
arch
/
arm
/
lib
/
div64
.
S
*
*
Optimized
computation
of
64
-
bit
dividend
/
32
-
bit
divisor
*
*
Author
:
Nicolas
Pitre
*
Created
:
Oct
5
,
2003
*
Copyright
:
Monta
Vista
Software
,
Inc
.
*
*
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/linkage.h>
#ifndef __ARMEB__
ql
.
req
r0
@
quotient
low
qh
.
req
r1
@
quotient
high
onl
.
req
r0
@
original
dividend
low
onh
.
req
r1
@
original
dividend
high
nl
.
req
r4
@
dividend
low
nh
.
req
r5
@
dividend
high
res
.
req
r4
@
result
#ifdef __ARMEB__
#define xh r0
#define xl r1
#define yh r2
#define yl r3
#else
ql
.
req
r1
qh
.
req
r0
onl
.
req
r1
onh
.
req
r0
nl
.
req
r5
nh
.
req
r4
res
.
req
r5
#define xl r0
#define xh r1
#define yl r2
#define yh r3
#endif
dl
.
req
r3
@
divisor
low
dh
.
req
r2
@
divsor
high
ENTRY
(
do_div64
)
stmfd
sp
!,
{
r4
,
r5
,
lr
}
mov
nl
,
onl
movs
nh
,
onh
@
if
high
bits
are
zero
movne
lr
,
#
33
moveq
lr
,
#
1
@
only
divide
low
bits
moveq
nh
,
onl
tst
dh
,
#
0x80000000
bne
2
f
1
:
cmp
nh
,
dh
bls
2
f
add
lr
,
lr
,
#
1
movs
dh
,
dh
,
lsl
#
1
@
left
justify
disor
bpl
1
b
2
:
movs
nh
,
onh
moveq
dl
,
dh
moveq
dh
,
#
0
movne
dl
,
#
0
mov
ql
,
#
0
mov
qh
,
#
0
3
:
subs
ip
,
nl
,
dl
@
trial
subtraction
sbcs
ip
,
nh
,
dh
movcs
nh
,
ip
@
only
update
if
successful
subcs
nl
,
nl
,
dl
@
(
repeat
the
subtraction
)
adcs
ql
,
ql
,
ql
@
C
=
1
if
successful
,
shift
into
adc
qh
,
qh
,
qh
@
quotient
movs
dh
,
dh
,
lsr
#
1
@
shift
base
high
part
right
mov
dl
,
dl
,
rrx
@
shift
base
low
part
right
subs
lr
,
lr
,
#
1
bne
3
b
mov
r2
,
res
ldmfd
sp
!,
{
r4
,
r5
,
pc
}
/*
*
__do_div64
:
perform
a
division
with
64
-
bit
dividend
and
32
-
bit
divisor
.
*
*
Note
:
Calling
convention
is
totally
non
standard
for
optimal
code
.
*
This
is
meant
to
be
used
by
do_div
()
from
include
/
asm
/
div64
.
h
only
.
*
*
Input
parameters
:
*
xh
-
xl
=
dividend
(
clobbered
)
*
r4
=
divisor
(
preserved
)
*
*
Output
values
:
*
yh
-
yl
=
result
*
xh
=
remainder
*
*
Clobbered
regs
:
xl
,
ip
*/
ENTRY
(
__do_div64
)
@
Test
for
easy
paths
first
.
subs
ip
,
r4
,
#
1
bls
9
f
@
divisor
is
0
or
1
tst
ip
,
r4
beq
8
f
@
divisor
is
power
of
2
@
See
if
we
need
to
handle
upper
32
-
bit
result
.
cmp
xh
,
r4
mov
yh
,
#
0
blo
3
f
@
Align
divisor
with
upper
part
of
dividend
.
@
The
aligned
divisor
is
stored
in
yl
preserving
the
original
.
@
The
bit
position
is
stored
in
ip
.
#if __LINUX_ARM_ARCH__ >= 5
clz
yl
,
r4
clz
ip
,
xh
sub
yl
,
yl
,
ip
mov
ip
,
#
1
mov
ip
,
ip
,
lsl
yl
mov
yl
,
r4
,
lsl
yl
#else
mov
yl
,
r4
mov
ip
,
#
1
1
:
cmp
yl
,
#
0x80000000
cmpcc
yl
,
xh
movcc
yl
,
yl
,
lsl
#
1
movcc
ip
,
ip
,
lsl
#
1
bcc
1
b
#endif
@
The
division
loop
for
needed
upper
bit
positions
.
@
Break
out
early
if
dividend
reaches
0
.
2
:
cmp
xh
,
yl
orrcs
yh
,
yh
,
ip
subcss
xh
,
xh
,
yl
movnes
ip
,
ip
,
lsr
#
1
mov
yl
,
yl
,
lsr
#
1
bne
2
b
@
See
if
we
need
to
handle
lower
32
-
bit
result
.
3
:
cmp
xh
,
#
0
mov
yl
,
#
0
cmpeq
xl
,
r4
movlo
xh
,
xl
movlo
pc
,
lr
@
The
division
loop
for
lower
bit
positions
.
@
Here
we
shift
remainer
bits
leftwards
rather
than
moving
the
@
divisor
for
comparisons
,
considering
the
carry
-
out
bit
as
well
.
mov
ip
,
#
0x80000000
4
:
movs
xl
,
xl
,
lsl
#
1
adcs
xh
,
xh
,
xh
beq
6
f
cmpcc
xh
,
r4
5
:
orrcs
yl
,
yl
,
ip
subcs
xh
,
xh
,
r4
movs
ip
,
ip
,
lsr
#
1
bne
4
b
mov
pc
,
lr
@
The
top
part
of
remainder
became
zero
.
If
carry
is
set
@
(
the
33
th
bit
)
this
is
a
false
positive
so
resume
the
loop
.
@
Otherwise
,
if
lower
part
is
also
null
then
we
're done.
6
:
bcs
5
b
cmp
xl
,
#
0
moveq
pc
,
lr
@
We
still
have
remainer
bits
in
the
low
part
.
Bring
them
up
.
#if __LINUX_ARM_ARCH__ >= 5
clz
xh
,
xl
@
we
know
xh
is
zero
here
so
...
add
xh
,
xh
,
#
1
mov
xl
,
xl
,
lsl
xh
mov
ip
,
ip
,
lsr
xh
#else
7
:
movs
xl
,
xl
,
lsl
#
1
mov
ip
,
ip
,
lsr
#
1
bcc
7
b
#endif
@
Current
remainder
is
now
1
.
It
's worthless to compare with
@
divisor
at
this
point
since
divisor
can
't be smaller than 3 here.
@
If
possible
,
branch
for
another
shift
in
the
division
loop
.
@
If
no
bit
position
left
then
we
're done.
movs
ip
,
ip
,
lsr
#
1
mov
xh
,
#
1
bne
4
b
mov
pc
,
lr
8
:
@
Division
by
a
power
of
2
:
determine
what
that
divisor
order
is
@
then
simply
shift
values
around
#if __LINUX_ARM_ARCH__ >= 5
clz
ip
,
r4
rsb
ip
,
ip
,
#
31
#else
mov
yl
,
r4
cmp
r4
,
#(
1
<<
16
)
mov
ip
,
#
0
movhs
yl
,
yl
,
lsr
#
16
movhs
ip
,
#
16
cmp
yl
,
#(
1
<<
8
)
movhs
yl
,
yl
,
lsr
#
8
addhs
ip
,
ip
,
#
8
cmp
yl
,
#(
1
<<
4
)
movhs
yl
,
yl
,
lsr
#
4
addhs
ip
,
ip
,
#
4
cmp
yl
,
#(
1
<<
2
)
addhi
ip
,
ip
,
#
3
addls
ip
,
ip
,
yl
,
lsr
#
1
#endif
mov
yh
,
xh
,
lsr
ip
mov
yl
,
xl
,
lsr
ip
rsb
ip
,
ip
,
#
32
orr
yl
,
yl
,
xh
,
lsl
ip
mov
xh
,
xl
,
lsl
ip
mov
xh
,
xh
,
lsr
ip
mov
pc
,
lr
@
eq
->
division
by
1
:
obvious
enough
...
9
:
moveq
yl
,
xl
moveq
yh
,
xh
moveq
xh
,
#
0
moveq
pc
,
lr
@
Division
by
0
:
str
lr
,
[
sp
,
#-
4
]!
bl
__div0
@
as
wrong
as
it
could
be
...
mov
yl
,
#
0
mov
yh
,
#
0
mov
xh
,
#
0
ldr
pc
,
[
sp
],
#
4
arch/arm/mach-clps711x/time.c
View file @
7266355c
...
...
@@ -40,6 +40,7 @@ static unsigned long clps711x_gettimeoffset(void)
void
__init
clps711x_setup_timer
(
void
)
{
struct
timespec
tv
;
unsigned
int
syscon
;
gettimeoffset
=
clps711x_gettimeoffset
;
...
...
@@ -50,5 +51,7 @@ void __init clps711x_setup_timer(void)
clps_writel
(
LATCH
-
1
,
TC2D
);
/* 512kHz / 100Hz - 1 */
xtime
.
tv_sec
=
clps_readl
(
RTCDR
);
tv
.
tv_nsec
=
0
;
tv
.
tv_sec
=
clps_readl
(
RTCDR
);
do_settimeofday
(
&
tv
);
}
arch/arm/mach-integrator/integrator_ap.c
View file @
7266355c
...
...
@@ -126,7 +126,7 @@ static void __init ap_init_irq(void)
writel
(
-
1
,
VA_IC_BASE
+
FIQ_ENABLE_CLEAR
);
for
(
i
=
0
;
i
<
NR_IRQS
;
i
++
)
{
if
(((
1
<<
i
)
&
&
INTEGRATOR_SC_VALID_INT
)
!=
0
)
{
if
(((
1
<<
i
)
&
INTEGRATOR_SC_VALID_INT
)
!=
0
)
{
set_irq_chip
(
i
,
&
sc_chip
);
set_irq_handler
(
i
,
do_level_IRQ
);
set_irq_flags
(
i
,
IRQF_VALID
|
IRQF_PROBE
);
...
...
arch/arm/mm/cache-v3.S
View file @
7266355c
...
...
@@ -32,14 +32,14 @@ ENTRY(v3_flush_kern_cache_all)
/
*
FALLTHROUGH
*/
/*
*
flush_user_cache_range
(
start
,
end
,
vm_
flags
)
*
flush_user_cache_range
(
start
,
end
,
flags
)
*
*
Invalidate
a
range
of
cache
entries
in
the
specified
*
address
space
.
*
*
-
start
-
start
address
(
may
not
be
aligned
)
*
-
end
-
end
address
(
exclusive
,
may
not
be
aligned
)
*
-
vma
-
vma_area_struct
describing
address
space
*
-
flags
-
vma_area_struct
flags
describing
address
space
*/
ENTRY
(
v3_flush_user_cache_range
)
mov
ip
,
#
0
...
...
arch/arm/mm/cache-v4.S
View file @
7266355c
...
...
@@ -34,14 +34,14 @@ ENTRY(v4_flush_kern_cache_all)
mov
pc
,
lr
/*
*
flush_user_cache_range
(
start
,
end
,
vma
)
*
flush_user_cache_range
(
start
,
end
,
flags
)
*
*
Invalidate
a
range
of
cache
entries
in
the
specified
*
address
space
.
*
*
-
start
-
start
address
(
may
not
be
aligned
)
*
-
end
-
end
address
(
exclusive
,
may
not
be
aligned
)
*
-
vma
-
vma_area_struct
describing
address
space
*
-
flags
-
vma_area_struct
flags
describing
address
space
*/
ENTRY
(
v4_flush_user_cache_range
)
mov
ip
,
#
0
...
...
arch/arm/mm/cache-v4wb.S
View file @
7266355c
...
...
@@ -72,14 +72,14 @@ __flush_whole_cache:
mov
pc
,
lr
/*
*
flush_user_cache_range
(
start
,
end
,
vm_
flags
)
*
flush_user_cache_range
(
start
,
end
,
flags
)
*
*
Invalidate
a
range
of
cache
entries
in
the
specified
*
address
space
.
*
*
-
start
-
start
address
(
inclusive
,
page
aligned
)
*
-
end
-
end
address
(
exclusive
,
page
aligned
)
*
-
vma
-
vma_area_struct
describing
address
space
*
-
flags
-
vma_area_struct
flags
describing
address
space
*/
ENTRY
(
v4wb_flush_user_cache_range
)
sub
r3
,
r1
,
r0
@
calculate
total
size
...
...
arch/arm/mm/cache-v4wt.S
View file @
7266355c
...
...
@@ -64,14 +64,14 @@ __flush_whole_cache:
mov
pc
,
lr
/*
*
flush_user_cache_range
(
start
,
end
,
vm_
flags
)
*
flush_user_cache_range
(
start
,
end
,
flags
)
*
*
Clean
and
invalidate
a
range
of
cache
entries
in
the
specified
*
address
space
.
*
*
-
start
-
start
address
(
inclusive
,
page
aligned
)
*
-
end
-
end
address
(
exclusive
,
page
aligned
)
*
-
vma
-
vma_area_struct
describing
address
space
*
-
flags
-
vma_area_struct
flags
describing
address
space
*/
ENTRY
(
v4wt_flush_user_cache_range
)
sub
r3
,
r1
,
r0
@
calculate
total
size
...
...
drivers/acorn/char/i2c.c
View file @
7266355c
...
...
@@ -280,13 +280,15 @@ static int ioc_client_reg(struct i2c_client *client)
client
->
addr
==
0x50
)
{
struct
rtc_tm
rtctm
;
unsigned
int
year
;
struct
timespec
tv
;
rtc_client
=
client
;
get_rtc_time
(
&
rtctm
,
&
year
);
xtime
.
tv_nsec
=
rtctm
.
cs
*
10000000
;
xtime
.
tv_sec
=
mktime
(
year
,
rtctm
.
mon
,
rtctm
.
mday
,
rtctm
.
hours
,
rtctm
.
mins
,
rtctm
.
secs
);
tv
.
tv_nsec
=
rtctm
.
cs
*
10000000
;
tv
.
tv_sec
=
mktime
(
year
,
rtctm
.
mon
,
rtctm
.
mday
,
rtctm
.
hours
,
rtctm
.
mins
,
rtctm
.
secs
);
do_settimeofday
(
&
tv
);
set_rtc
=
k_set_rtc_time
;
}
...
...
include/asm-arm/arch-ebsa285/time.h
View file @
7266355c
...
...
@@ -243,6 +243,7 @@ void __init time_init(void)
if
((
CMOS_READ
(
RTC_REG_A
)
&
0x7f
)
==
RTC_REF_CLCK_32KHZ
&&
CMOS_READ
(
RTC_REG_B
)
==
reg_b
)
{
struct
timespec
tv
;
/*
* We have a RTC. Check the battery
...
...
@@ -250,7 +251,9 @@ void __init time_init(void)
if
((
reg_d
&
0x80
)
==
0
)
printk
(
KERN_WARNING
"RTC: *** warning: CMOS battery bad
\n
"
);
xtime
.
tv_sec
=
get_isa_cmos_time
();
tv
.
tv_nsec
=
0
;
tv
.
tv_sec
=
get_isa_cmos_time
();
do_settimeofday
(
&
tv
);
set_rtc
=
set_isa_cmos_time
;
}
else
rtc_base
=
0
;
...
...
include/asm-arm/arch-pxa/time.h
View file @
7266355c
...
...
@@ -73,9 +73,15 @@ pxa_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
void
__init
time_init
(
void
)
{
struct
timespec
tv
;
gettimeoffset
=
pxa_gettimeoffset
;
set_rtc
=
pxa_set_rtc
;
xtime
.
tv_sec
=
pxa_get_rtc_time
();
tv
.
tv_nsec
=
0
;
tv
.
tv_sec
=
pxa_get_rtc_time
();
do_settimeofday
(
&
tv
);
timer_irq
.
handler
=
pxa_timer_interrupt
;
OSMR0
=
0
;
/* set initial match at 0 */
OSSR
=
0xf
;
/* clear status on all timers */
...
...
include/asm-arm/arch-sa1100/time.h
View file @
7266355c
...
...
@@ -92,9 +92,15 @@ sa1100_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
void
__init
time_init
(
void
)
{
struct
timespec
tv
;
gettimeoffset
=
sa1100_gettimeoffset
;
set_rtc
=
sa1100_set_rtc
;
xtime
.
tv_sec
=
sa1100_get_rtc_time
();
tv
.
tv
.
nsec
=
0
;
tv
.
tv_sec
=
sa1100_get_rtc_time
();
do_settimeofday
(
&
tv
);
timer_irq
.
handler
=
sa1100_timer_interrupt
;
OSMR0
=
0
;
/* set initial match at 0 */
OSSR
=
0xf
;
/* clear status on all timers */
...
...
include/asm-arm/arch-shark/time.h
View file @
7266355c
...
...
@@ -34,8 +34,6 @@ void __init time_init(void)
outb
(
HZ_TIME
&
0xff
,
0x40
);
/* LSB of count */
outb
(
HZ_TIME
>>
8
,
0x40
);
xtime
.
tv_sec
=
0
;
timer_irq
.
handler
=
timer_interrupt
;
setup_irq
(
IRQ_TIMER
,
&
timer_irq
);
}
include/asm-arm/div64.h
View file @
7266355c
#ifndef __ASM_ARM_DIV64
#define __ASM_ARM_DIV64
/* We're not 64-bit, but... */
/*
* The semantics of do_div() are:
*
* uint32_t do_div(uint64_t *n, uint32_t base)
* {
* uint32_t remainder = *n % base;
* *n = *n / base;
* return remainder;
* }
*
* In other words, a 64-bit dividend with a 32-bit divisor producing
* a 64-bit result and a 32-bit remainder. To accomplish this optimally
* we call a special __do_div64 helper with completely non standard
* calling convention for arguments and results (beware).
*/
#ifdef __ARMEB__
#define __xh "r0"
#define __xl "r1"
#else
#define __xl "r0"
#define __xh "r1"
#endif
#define do_div(n,base) \
({ \
register int __res asm("r2") = base; \
register unsigned long long __n asm("r0") = n; \
asm("bl do_div64" \
: "=r" (__n), "=r" (__res) \
: "0" (__n), "1" (__res) \
: "r3", "ip", "lr", "cc"); \
n = __n; \
__res; \
register unsigned int __base asm("r4") = base; \
register unsigned long long __n asm("r0") = n; \
register unsigned long long __res asm("r2"); \
register unsigned int __rem asm(__xh); \
asm("bl __do_div64" \
: "=r" (__rem), "=r" (__res) \
: "r" (__n), "r" (__base) \
: "ip", "lr", "cc"); \
n = __res; \
__rem; \
})
#endif
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