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
8b789b7d
Commit
8b789b7d
authored
Jun 27, 2005
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge master.kernel.org:/home/rmk/linux-2.6-arm
parents
61cca8c7
b46ffaef
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
155 additions
and
96 deletions
+155
-96
arch/arm/kernel/process.c
arch/arm/kernel/process.c
+4
-1
arch/arm/kernel/time.c
arch/arm/kernel/time.c
+7
-3
arch/arm/mach-aaec2000/Makefile.boot
arch/arm/mach-aaec2000/Makefile.boot
+1
-0
arch/arm/mm/init.c
arch/arm/mm/init.c
+65
-6
arch/arm/mm/mm-armv.c
arch/arm/mm/mm-armv.c
+7
-80
arch/arm/tools/mach-types
arch/arm/tools/mach-types
+66
-3
include/asm-arm/arch-ixp4xx/debug-macro.S
include/asm-arm/arch-ixp4xx/debug-macro.S
+1
-1
include/asm-arm/ide.h
include/asm-arm/ide.h
+1
-1
include/asm-arm/io.h
include/asm-arm/io.h
+1
-1
include/asm-arm/mach/time.h
include/asm-arm/mach/time.h
+2
-0
No files found.
arch/arm/kernel/process.c
View file @
8b789b7d
...
...
@@ -32,6 +32,7 @@
#include <asm/leds.h>
#include <asm/processor.h>
#include <asm/uaccess.h>
#include <asm/mach/time.h>
extern
const
char
*
processor_modes
[];
extern
void
setup_mm_for_reboot
(
char
mode
);
...
...
@@ -85,8 +86,10 @@ EXPORT_SYMBOL(pm_power_off);
void
default_idle
(
void
)
{
local_irq_disable
();
if
(
!
need_resched
()
&&
!
hlt_counter
)
if
(
!
need_resched
()
&&
!
hlt_counter
)
{
timer_dyn_reprogram
();
arch_idle
();
}
local_irq_enable
();
}
...
...
arch/arm/kernel/time.c
View file @
8b789b7d
...
...
@@ -424,15 +424,19 @@ static int timer_dyn_tick_disable(void)
return
ret
;
}
/*
* Reprogram the system timer for at least the calculated time interval.
* This function should be called from the idle thread with IRQs disabled,
* immediately before sleeping.
*/
void
timer_dyn_reprogram
(
void
)
{
struct
dyn_tick_timer
*
dyn_tick
=
system_timer
->
dyn_tick
;
unsigned
long
flags
;
write_seqlock
_irqsave
(
&
xtime_lock
,
flags
);
write_seqlock
(
&
xtime_lock
);
if
(
dyn_tick
->
state
&
DYN_TICK_ENABLED
)
dyn_tick
->
reprogram
(
next_timer_interrupt
()
-
jiffies
);
write_sequnlock
_irqrestore
(
&
xtime_lock
,
flags
);
write_sequnlock
(
&
xtime_lock
);
}
static
ssize_t
timer_show_dyn_tick
(
struct
sys_device
*
dev
,
char
*
buf
)
...
...
arch/arm/mach-aaec2000/Makefile.boot
0 → 100644
View file @
8b789b7d
zreladdr-y
:=
0xf0008000
arch/arm/mm/init.c
View file @
8b789b7d
...
...
@@ -522,6 +522,69 @@ static inline void free_area(unsigned long addr, unsigned long end, char *s)
printk
(
KERN_INFO
"Freeing %s memory: %dK
\n
"
,
s
,
size
);
}
static
inline
void
free_memmap
(
int
node
,
unsigned
long
start_pfn
,
unsigned
long
end_pfn
)
{
struct
page
*
start_pg
,
*
end_pg
;
unsigned
long
pg
,
pgend
;
/*
* Convert start_pfn/end_pfn to a struct page pointer.
*/
start_pg
=
pfn_to_page
(
start_pfn
);
end_pg
=
pfn_to_page
(
end_pfn
);
/*
* Convert to physical addresses, and
* round start upwards and end downwards.
*/
pg
=
PAGE_ALIGN
(
__pa
(
start_pg
));
pgend
=
__pa
(
end_pg
)
&
PAGE_MASK
;
/*
* If there are free pages between these,
* free the section of the memmap array.
*/
if
(
pg
<
pgend
)
free_bootmem_node
(
NODE_DATA
(
node
),
pg
,
pgend
-
pg
);
}
/*
* The mem_map array can get very big. Free the unused area of the memory map.
*/
static
void
__init
free_unused_memmap_node
(
int
node
,
struct
meminfo
*
mi
)
{
unsigned
long
bank_start
,
prev_bank_end
=
0
;
unsigned
int
i
;
/*
* [FIXME] This relies on each bank being in address order. This
* may not be the case, especially if the user has provided the
* information on the command line.
*/
for
(
i
=
0
;
i
<
mi
->
nr_banks
;
i
++
)
{
if
(
mi
->
bank
[
i
].
size
==
0
||
mi
->
bank
[
i
].
node
!=
node
)
continue
;
bank_start
=
mi
->
bank
[
i
].
start
>>
PAGE_SHIFT
;
if
(
bank_start
<
prev_bank_end
)
{
printk
(
KERN_ERR
"MEM: unordered memory banks. "
"Not freeing memmap.
\n
"
);
break
;
}
/*
* If we had a previous bank, and there is a space
* between the current bank and the previous, free it.
*/
if
(
prev_bank_end
&&
prev_bank_end
!=
bank_start
)
free_memmap
(
node
,
prev_bank_end
,
bank_start
);
prev_bank_end
=
(
mi
->
bank
[
i
].
start
+
mi
->
bank
[
i
].
size
)
>>
PAGE_SHIFT
;
}
}
/*
* mem_init() marks the free areas in the mem_map and tells us how much
* memory is free. This is done after various parts of the system have
...
...
@@ -540,16 +603,12 @@ void __init mem_init(void)
max_mapnr
=
virt_to_page
(
high_memory
)
-
mem_map
;
#endif
/*
* We may have non-contiguous memory.
*/
if
(
meminfo
.
nr_banks
!=
1
)
create_memmap_holes
(
&
meminfo
);
/* this will put all unused low memory onto the freelists */
for_each_online_node
(
node
)
{
pg_data_t
*
pgdat
=
NODE_DATA
(
node
);
free_unused_memmap_node
(
node
,
&
meminfo
);
if
(
pgdat
->
node_spanned_pages
!=
0
)
totalram_pages
+=
free_all_bootmem_node
(
pgdat
);
}
...
...
arch/arm/mm/mm-armv.c
View file @
8b789b7d
...
...
@@ -169,7 +169,14 @@ pgd_t *get_pgd_slow(struct mm_struct *mm)
memzero
(
new_pgd
,
FIRST_KERNEL_PGD_NR
*
sizeof
(
pgd_t
));
/*
* Copy over the kernel and IO PGD entries
*/
init_pgd
=
pgd_offset_k
(
0
);
memcpy
(
new_pgd
+
FIRST_KERNEL_PGD_NR
,
init_pgd
+
FIRST_KERNEL_PGD_NR
,
(
PTRS_PER_PGD
-
FIRST_KERNEL_PGD_NR
)
*
sizeof
(
pgd_t
));
clean_dcache_area
(
new_pgd
,
PTRS_PER_PGD
*
sizeof
(
pgd_t
));
if
(
!
vectors_high
())
{
/*
...
...
@@ -198,14 +205,6 @@ pgd_t *get_pgd_slow(struct mm_struct *mm)
spin_unlock
(
&
mm
->
page_table_lock
);
}
/*
* Copy over the kernel and IO PGD entries
*/
memcpy
(
new_pgd
+
FIRST_KERNEL_PGD_NR
,
init_pgd
+
FIRST_KERNEL_PGD_NR
,
(
PTRS_PER_PGD
-
FIRST_KERNEL_PGD_NR
)
*
sizeof
(
pgd_t
));
clean_dcache_area
(
new_pgd
,
PTRS_PER_PGD
*
sizeof
(
pgd_t
));
return
new_pgd
;
no_pte:
...
...
@@ -698,75 +697,3 @@ void __init iotable_init(struct map_desc *io_desc, int nr)
for
(
i
=
0
;
i
<
nr
;
i
++
)
create_mapping
(
io_desc
+
i
);
}
static
inline
void
free_memmap
(
int
node
,
unsigned
long
start_pfn
,
unsigned
long
end_pfn
)
{
struct
page
*
start_pg
,
*
end_pg
;
unsigned
long
pg
,
pgend
;
/*
* Convert start_pfn/end_pfn to a struct page pointer.
*/
start_pg
=
pfn_to_page
(
start_pfn
);
end_pg
=
pfn_to_page
(
end_pfn
);
/*
* Convert to physical addresses, and
* round start upwards and end downwards.
*/
pg
=
PAGE_ALIGN
(
__pa
(
start_pg
));
pgend
=
__pa
(
end_pg
)
&
PAGE_MASK
;
/*
* If there are free pages between these,
* free the section of the memmap array.
*/
if
(
pg
<
pgend
)
free_bootmem_node
(
NODE_DATA
(
node
),
pg
,
pgend
-
pg
);
}
static
inline
void
free_unused_memmap_node
(
int
node
,
struct
meminfo
*
mi
)
{
unsigned
long
bank_start
,
prev_bank_end
=
0
;
unsigned
int
i
;
/*
* [FIXME] This relies on each bank being in address order. This
* may not be the case, especially if the user has provided the
* information on the command line.
*/
for
(
i
=
0
;
i
<
mi
->
nr_banks
;
i
++
)
{
if
(
mi
->
bank
[
i
].
size
==
0
||
mi
->
bank
[
i
].
node
!=
node
)
continue
;
bank_start
=
mi
->
bank
[
i
].
start
>>
PAGE_SHIFT
;
if
(
bank_start
<
prev_bank_end
)
{
printk
(
KERN_ERR
"MEM: unordered memory banks. "
"Not freeing memmap.
\n
"
);
break
;
}
/*
* If we had a previous bank, and there is a space
* between the current bank and the previous, free it.
*/
if
(
prev_bank_end
&&
prev_bank_end
!=
bank_start
)
free_memmap
(
node
,
prev_bank_end
,
bank_start
);
prev_bank_end
=
PAGE_ALIGN
(
mi
->
bank
[
i
].
start
+
mi
->
bank
[
i
].
size
)
>>
PAGE_SHIFT
;
}
}
/*
* The mem_map array can get very big. Free
* the unused area of the memory map.
*/
void
__init
create_memmap_holes
(
struct
meminfo
*
mi
)
{
int
node
;
for_each_online_node
(
node
)
free_unused_memmap_node
(
node
,
mi
);
}
arch/arm/tools/mach-types
View file @
8b789b7d
...
...
@@ -6,7 +6,7 @@
# To add an entry into this database, please see Documentation/arm/README,
# or contact rmk@arm.linux.org.uk
#
# Last update: Thu
Mar 24 14:34:50
2005
# Last update: Thu
Jun 23 20:19:33
2005
#
# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
#
...
...
@@ -243,7 +243,7 @@ yoho ARCH_YOHO YOHO 231
jasper ARCH_JASPER JASPER 232
dsc25 ARCH_DSC25 DSC25 233
omap_innovator MACH_OMAP_INNOVATOR OMAP_INNOVATOR 234
ramses
ARCH_RAMSES RAMSES 235
mnci
ARCH_RAMSES RAMSES 235
s28x ARCH_S28X S28X 236
mport3 ARCH_MPORT3 MPORT3 237
pxa_eagle250 ARCH_PXA_EAGLE250 PXA_EAGLE250 238
...
...
@@ -323,7 +323,7 @@ nimbra29x ARCH_NIMBRA29X NIMBRA29X 311
nimbra210 ARCH_NIMBRA210 NIMBRA210 312
hhp_d95xx ARCH_HHP_D95XX HHP_D95XX 313
labarm ARCH_LABARM LABARM 314
m825xx
ARCH_M825XX M825XX 315
comcerto
ARCH_M825XX M825XX 315
m7100 SA1100_M7100 M7100 316
nipc2 ARCH_NIPC2 NIPC2 317
fu7202 ARCH_FU7202 FU7202 318
...
...
@@ -724,3 +724,66 @@ lpc22xx MACH_LPC22XX LPC22XX 715
omap_comet3 MACH_COMET3 COMET3 716
omap_comet4 MACH_COMET4 COMET4 717
csb625 MACH_CSB625 CSB625 718
fortunet2 MACH_FORTUNET2 FORTUNET2 719
s5h2200 MACH_S5H2200 S5H2200 720
optorm920 MACH_OPTORM920 OPTORM920 721
adsbitsyxb MACH_ADSBITSYXB ADSBITSYXB 722
adssphere MACH_ADSSPHERE ADSSPHERE 723
adsportal MACH_ADSPORTAL ADSPORTAL 724
ln2410sbc MACH_LN2410SBC LN2410SBC 725
cb3rufc MACH_CB3RUFC CB3RUFC 726
mp2usb MACH_MP2USB MP2USB 727
ntnp425c MACH_NTNP425C NTNP425C 728
colibri MACH_COLIBRI COLIBRI 729
pcm7220 MACH_PCM7220 PCM7220 730
gateway7001 MACH_GATEWAY7001 GATEWAY7001 731
pcm027 MACH_PCM027 PCM027 732
cmpxa MACH_CMPXA CMPXA 733
anubis MACH_ANUBIS ANUBIS 734
ite8152 MACH_ITE8152 ITE8152 735
lpc3xxx MACH_LPC3XXX LPC3XXX 736
puppeteer MACH_PUPPETEER PUPPETEER 737
vt001 MACH_MACH_VADATECH MACH_VADATECH 738
e570 MACH_E570 E570 739
x50 MACH_X50 X50 740
recon MACH_RECON RECON 741
xboardgp8 MACH_XBOARDGP8 XBOARDGP8 742
fpic2 MACH_FPIC2 FPIC2 743
akita MACH_AKITA AKITA 744
a81 MACH_A81 A81 745
svm_sc25x MACH_SVM_SC25X SVM_SC25X 746
vt020 MACH_VADATECH020 VADATECH020 747
tli MACH_TLI TLI 748
edb9315lc MACH_EDB9315LC EDB9315LC 749
passec MACH_PASSEC PASSEC 750
ds_tiger MACH_DS_TIGER DS_TIGER 751
e310 MACH_E310 E310 752
e330 MACH_E330 E330 753
rt3000 MACH_RT3000 RT3000 754
nokia770 MACH_NOKIA770 NOKIA770 755
pnx0106 MACH_PNX0106 PNX0106 756
hx21xx MACH_HX21XX HX21XX 757
faraday MACH_FARADAY FARADAY 758
sbc9312 MACH_SBC9312 SBC9312 759
batman MACH_BATMAN BATMAN 760
jpd201 MACH_JPD201 JPD201 761
mipsa MACH_MIPSA MIPSA 762
kacom MACH_KACOM KACOM 763
swarcocpu MACH_SWARCOCPU SWARCOCPU 764
swarcodsl MACH_SWARCODSL SWARCODSL 765
blueangel MACH_BLUEANGEL BLUEANGEL 766
hairygrama MACH_HAIRYGRAMA HAIRYGRAMA 767
banff MACH_BANFF BANFF 768
carmeva MACH_CARMEVA CARMEVA 769
sam255 MACH_SAM255 SAM255 770
ppm10 MACH_PPM10 PPM10 771
edb9315a MACH_EDB9315A EDB9315A 772
sunset MACH_SUNSET SUNSET 773
stargate2 MACH_STARGATE2 STARGATE2 774
intelmote2 MACH_INTELMOTE2 INTELMOTE2 775
trizeps4 MACH_TRIZEPS4 TRIZEPS4 776
mainstone2 MACH_MAINSTONE2 MAINSTONE2 777
ez_ixp42x MACH_EZ_IXP42X EZ_IXP42X 778
tapwave_zodiac MACH_TAPWAVE_ZODIAC TAPWAVE_ZODIAC 779
universalmeter MACH_UNIVERSALMETER UNIVERSALMETER 780
hicoarm9 MACH_HICOARM9 HICOARM9 781
include/asm-arm/arch-ixp4xx/debug-macro.S
View file @
8b789b7d
...
...
@@ -14,8 +14,8 @@
mrc
p15
,
0
,
\
rx
,
c1
,
c0
tst
\
rx
,
#
1
@
MMU
enabled
?
moveq
\
rx
,
#
0xc8000000
orrne
\
rx
,
\
rx
,
#
0x00b00000
movne
\
rx
,
#
0xff000000
orrne
\
rx
,
\
rx
,
#
0x00b00000
add
\
rx
,
\
rx
,#
3
@
Uart
regs
are
at
off
set
of
3
if
@
byte
writes
used
-
Big
Endian
.
.
endm
...
...
include/asm-arm/ide.h
View file @
8b789b7d
...
...
@@ -5,7 +5,7 @@
*/
/*
* This file contains the
i386
architecture specific IDE code.
* This file contains the
ARM
architecture specific IDE code.
*/
#ifndef __ASMARM_IDE_H
...
...
include/asm-arm/io.h
View file @
8b789b7d
...
...
@@ -82,7 +82,7 @@ extern void __readwrite_bug(const char *fn);
* only. Their primary purpose is to access PCI and ISA peripherals.
*
* Note that for a big endian machine, this implies that the following
* big endian mode connectivity is in place, as described by numer
i
ous
* big endian mode connectivity is in place, as described by numerous
* ARM documents:
*
* PCI: D0-D7 D8-D15 D16-D23 D24-D31
...
...
include/asm-arm/mach/time.h
View file @
8b789b7d
...
...
@@ -60,6 +60,8 @@ struct dyn_tick_timer {
};
void
timer_dyn_reprogram
(
void
);
#else
#define timer_dyn_reprogram() do { } while (0)
#endif
extern
struct
sys_timer
*
system_timer
;
...
...
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