Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
3389742f
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
163
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看板
提交
3389742f
编写于
2月 07, 2008
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[SPARC64]: Use regsets for ELF core dumping.
Signed-off-by:
N
David S. Miller
<
davem@davemloft.net
>
上级
e72d71c4
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
9 addition
and
52 deletion
+9
-52
arch/sparc64/kernel/binfmt_elf32.c
arch/sparc64/kernel/binfmt_elf32.c
+4
-27
include/asm-sparc64/elf.h
include/asm-sparc64/elf.h
+5
-25
未找到文件。
arch/sparc64/kernel/binfmt_elf32.c
浏览文件 @
3389742f
/*
* binfmt_elf32.c: Support 32-bit Sparc ELF binaries on Ultra.
*
* Copyright (C) 1995, 1996, 1997, 1998
David S. Miller
(davem@davemloft.net)
* Copyright (C) 1995, 1996, 1997, 1998
, 2008 David S. Miller
(davem@davemloft.net)
* Copyright (C) 1995, 1996, 1997, 1998 Jakub Jelinek (jj@ultra.linux.cz)
*/
...
...
@@ -9,13 +9,6 @@
#define ELF_CLASS ELFCLASS32
#define ELF_DATA ELFDATA2MSB;
/* For the most part we present code dumps in the format
* Solaris does.
*/
typedef
unsigned
int
elf_greg_t
;
#define ELF_NGREG 38
typedef
elf_greg_t
elf_gregset_t
[
ELF_NGREG
];
/* Format is:
* G0 --> G7
* O0 --> O7
...
...
@@ -23,25 +16,9 @@ typedef elf_greg_t elf_gregset_t[ELF_NGREG];
* I0 --> I7
* PSR, PC, nPC, Y, WIM, TBR
*/
#include <asm/psrcompat.h>
#define ELF_CORE_COPY_REGS(__elf_regs, __pt_regs) \
do { unsigned int *dest = &(__elf_regs[0]); \
struct pt_regs *src = (__pt_regs); \
unsigned int __user *sp; \
int i; \
for(i = 0; i < 16; i++) \
dest[i] = (unsigned int) src->u_regs[i];\
/* Don't try this at home kids... */
\
sp = (unsigned int __user *) (src->u_regs[14] & \
0x00000000fffffffc); \
for(i = 0; i < 16; i++) \
__get_user(dest[i+16], &sp[i]); \
dest[32] = tstate_to_psr(src->tstate); \
dest[33] = (unsigned int) src->tpc; \
dest[34] = (unsigned int) src->tnpc; \
dest[35] = src->y; \
dest[36] = dest[37] = 0;
/* XXX */
\
} while(0);
typedef
unsigned
int
elf_greg_t
;
#define ELF_NGREG 38
typedef
elf_greg_t
elf_gregset_t
[
ELF_NGREG
];
typedef
struct
{
union
{
...
...
include/asm-sparc64/elf.h
浏览文件 @
3389742f
...
...
@@ -72,6 +72,8 @@
#define HWCAP_SPARC_BLKINIT 64
#define HWCAP_SPARC_N2 128
#define CORE_DUMP_USE_REGSET
/*
* These are used to set parameters in the core dumps.
*/
...
...
@@ -80,10 +82,6 @@
#define ELF_CLASS ELFCLASS64
#define ELF_DATA ELFDATA2MSB
typedef
unsigned
long
elf_greg_t
;
#define ELF_NGREG 36
typedef
elf_greg_t
elf_gregset_t
[
ELF_NGREG
];
/* Format of 64-bit elf_gregset_t is:
* G0 --> G7
* O0 --> O7
...
...
@@ -94,24 +92,9 @@ typedef elf_greg_t elf_gregset_t[ELF_NGREG];
* TNPC
* Y
*/
#define ELF_CORE_COPY_REGS(__elf_regs, __pt_regs) \
do { unsigned long *dest = &(__elf_regs[0]); \
struct pt_regs *src = (__pt_regs); \
unsigned long __user *sp; \
int i; \
for(i = 0; i < 16; i++) \
dest[i] = src->u_regs[i]; \
/* Don't try this at home kids... */
\
sp = (unsigned long __user *) \
((src->u_regs[14] + STACK_BIAS) \
& 0xfffffffffffffff8UL); \
for(i = 0; i < 16; i++) \
__get_user(dest[i+16], &sp[i]); \
dest[32] = src->tstate; \
dest[33] = src->tpc; \
dest[34] = src->tnpc; \
dest[35] = src->y; \
} while (0);
typedef
unsigned
long
elf_greg_t
;
#define ELF_NGREG 36
typedef
elf_greg_t
elf_gregset_t
[
ELF_NGREG
];
typedef
struct
{
unsigned
long
pr_regs
[
32
];
...
...
@@ -121,9 +104,6 @@ typedef struct {
}
elf_fpregset_t
;
#endif
#define ELF_CORE_COPY_TASK_REGS(__tsk, __elf_regs) \
({ ELF_CORE_COPY_REGS((*(__elf_regs)), task_pt_regs(__tsk)); 1; })
/*
* This is used to ensure we don't load something for the wrong architecture.
*/
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录