Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Linux-御风守护者
linux
提交
481295f9
L
linux
项目概览
Linux-御风守护者
/
linux
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
481295f9
编写于
2月 07, 2006
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[SPARC64]: Register per-cpu fault status area with sun4v hypervisor.
Signed-off-by:
N
David S. Miller
<
davem@davemloft.net
>
上级
89a5264f
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
29 addition
and
4 deletion
+29
-4
arch/sparc64/kernel/smp.c
arch/sparc64/kernel/smp.c
+3
-0
arch/sparc64/mm/init.c
arch/sparc64/mm/init.c
+25
-4
include/asm-sparc64/pgtable.h
include/asm-sparc64/pgtable.h
+1
-0
未找到文件。
arch/sparc64/kernel/smp.c
浏览文件 @
481295f9
...
...
@@ -122,6 +122,9 @@ void __init smp_callin(void)
__local_per_cpu_offset
=
__per_cpu_offset
(
cpuid
);
if
(
tlb_type
==
hypervisor
)
sun4v_register_fault_status
();
__flush_tlb_all
();
smp_setup_percpu_timer
();
...
...
arch/sparc64/mm/init.c
浏览文件 @
481295f9
...
...
@@ -40,6 +40,7 @@
#include <asm/spitfire.h>
#include <asm/sections.h>
#include <asm/tsb.h>
#include <asm/hypervisor.h>
extern
void
device_scan
(
void
);
...
...
@@ -1083,6 +1084,24 @@ static void __init tsb_phys_patch(void)
}
}
/* Register this cpu's fault status area with the hypervisor. */
void
__cpuinit
sun4v_register_fault_status
(
void
)
{
register
unsigned
long
arg0
asm
(
"%o0"
);
register
unsigned
long
arg1
asm
(
"%o1"
);
int
cpu
=
hard_smp_processor_id
();
struct
trap_per_cpu
*
tb
=
&
trap_block
[
cpu
];
unsigned
long
pa
;
pa
=
kern_base
+
((
unsigned
long
)
tb
-
KERNBASE
);
arg0
=
HV_FAST_MMU_FAULT_AREA_CONF
;
arg1
=
pa
;
__asm__
__volatile__
(
"ta %4"
:
"=&r"
(
arg0
),
"=&r"
(
arg1
)
:
"0"
(
arg0
),
"1"
(
arg1
),
"i"
(
HV_FAST_TRAP
));
}
/* paging_init() sets up the page tables */
extern
void
cheetah_ecache_flush_init
(
void
);
...
...
@@ -1096,12 +1115,17 @@ void __init paging_init(void)
unsigned
long
end_pfn
,
pages_avail
,
shift
;
unsigned
long
real_end
,
i
;
kern_base
=
(
prom_boot_mapping_phys_low
>>
22UL
)
<<
22UL
;
kern_size
=
(
unsigned
long
)
&
_end
-
(
unsigned
long
)
KERNBASE
;
if
(
tlb_type
==
cheetah_plus
||
tlb_type
==
hypervisor
)
tsb_phys_patch
();
if
(
tlb_type
==
hypervisor
)
if
(
tlb_type
==
hypervisor
)
{
sun4v_patch_tlb_handlers
();
sun4v_register_fault_status
();
}
/* Find available physical memory... */
read_obp_memory
(
"available"
,
&
pavail
[
0
],
&
pavail_ents
);
...
...
@@ -1112,9 +1136,6 @@ void __init paging_init(void)
pfn_base
=
phys_base
>>
PAGE_SHIFT
;
kern_base
=
(
prom_boot_mapping_phys_low
>>
22UL
)
<<
22UL
;
kern_size
=
(
unsigned
long
)
&
_end
-
(
unsigned
long
)
KERNBASE
;
set_bit
(
0
,
mmu_context_bmap
);
shift
=
kern_base
+
PAGE_OFFSET
-
((
unsigned
long
)
KERNBASE
);
...
...
include/asm-sparc64/pgtable.h
浏览文件 @
481295f9
...
...
@@ -437,6 +437,7 @@ extern unsigned long get_fb_unmapped_area(struct file *filp, unsigned long,
#define HAVE_ARCH_FB_UNMAPPED_AREA
extern
void
pgtable_cache_init
(
void
);
extern
void
sun4v_register_fault_status
(
void
);
#endif
/* !(__ASSEMBLY__) */
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录