Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
8b789b7d
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
8b789b7d
编写于
6月 27, 2005
作者:
L
Linus Torvalds
浏览文件
操作
浏览文件
下载
差异文件
Merge master.kernel.org:/home/rmk/linux-2.6-arm
上级
61cca8c7
b46ffaef
变更
10
显示空白变更内容
内联
并排
Showing
10 changed file
with
155 addition
and
96 deletion
+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
未找到文件。
arch/arm/kernel/process.c
浏览文件 @
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
浏览文件 @
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
浏览文件 @
8b789b7d
zreladdr-y
:=
0xf0008000
arch/arm/mm/init.c
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录