1 /* a.out coredump register dumper
3 * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
4 * Written by David Howells (dhowells@redhat.com)
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public Licence
8 * as published by the Free Software Foundation; either version
9 * 2 of the Licence, or (at your option) any later version.
12 #ifndef _ASM_X86_A_OUT_CORE_H
13 #define _ASM_X86_A_OUT_CORE_H
18 #include <linux/user.h>
19 #include <linux/elfcore.h>
20 #include <asm/debugreg.h>
23 * fill in the user structure for an a.out core dump
25 static inline void aout_dump_thread(struct pt_regs
*regs
, struct user
*dump
)
27 /* changed the size calculations - should hopefully work better. lbt */
30 dump
->start_stack
= regs
->sp
& ~(PAGE_SIZE
- 1);
31 dump
->u_tsize
= ((unsigned long)current
->mm
->end_code
) >> PAGE_SHIFT
;
32 dump
->u_dsize
= ((unsigned long)(current
->mm
->brk
+ (PAGE_SIZE
- 1)))
34 dump
->u_dsize
-= dump
->u_tsize
;
36 aout_dump_debugregs(dump
);
38 if (dump
->start_stack
< TASK_SIZE
)
39 dump
->u_ssize
= ((unsigned long)(TASK_SIZE
- dump
->start_stack
))
42 dump
->regs
.bx
= regs
->bx
;
43 dump
->regs
.cx
= regs
->cx
;
44 dump
->regs
.dx
= regs
->dx
;
45 dump
->regs
.si
= regs
->si
;
46 dump
->regs
.di
= regs
->di
;
47 dump
->regs
.bp
= regs
->bp
;
48 dump
->regs
.ax
= regs
->ax
;
49 dump
->regs
.ds
= (u16
)regs
->ds
;
50 dump
->regs
.es
= (u16
)regs
->es
;
51 dump
->regs
.fs
= (u16
)regs
->fs
;
52 dump
->regs
.gs
= get_user_gs(regs
);
53 dump
->regs
.orig_ax
= regs
->orig_ax
;
54 dump
->regs
.ip
= regs
->ip
;
55 dump
->regs
.cs
= (u16
)regs
->cs
;
56 dump
->regs
.flags
= regs
->flags
;
57 dump
->regs
.sp
= regs
->sp
;
58 dump
->regs
.ss
= (u16
)regs
->ss
;
60 dump
->u_fpvalid
= dump_fpu(regs
, &dump
->i387
);
63 #endif /* CONFIG_X86_32 */
64 #endif /* __KERNEL__ */
65 #endif /* _ASM_X86_A_OUT_CORE_H */