1#ifndef __ASM_SH64_USER_H 2#define __ASM_SH64_USER_H 3 4/* 5 * This file is subject to the terms and conditions of the GNU General Public 6 * License. See the file "COPYING" in the main directory of this archive 7 * for more details. 8 * 9 * include/asm-sh64/user.h 10 * 11 * Copyright (C) 2000, 2001 Paolo Alberelli 12 * 13 */ 14 15#include <linux/types.h> 16#include <asm/ptrace.h> 17#include <asm/page.h> 18 19/* 20 * Core file format: The core file is written in such a way that gdb 21 * can understand it and provide useful information to the user (under 22 * linux we use the `trad-core' bfd). The file contents are as follows: 23 * 24 * upage: 1 page consisting of a user struct that tells gdb 25 * what is present in the file. Directly after this is a 26 * copy of the task_struct, which is currently not used by gdb, 27 * but it may come in handy at some point. All of the registers 28 * are stored as part of the upage. The upage should always be 29 * only one page long. 30 * data: The data segment follows next. We use current->end_text to 31 * current->brk to pick up all of the user variables, plus any memory 32 * that may have been sbrk'ed. No attempt is made to determine if a 33 * page is demand-zero or if a page is totally unused, we just cover 34 * the entire range. All of the addresses are rounded in such a way 35 * that an integral number of pages is written. 36 * stack: We need the stack information in order to get a meaningful 37 * backtrace. We need to write the data from usp to 38 * current->start_stack, so we round each of these in order to be able 39 * to write an integer number of pages. 40 */ 41 42struct user_fpu_struct { 43 unsigned long long fp_regs[32]; 44 unsigned int fpscr; 45}; 46 47struct user { 48 struct pt_regs regs; /* entire machine state */ 49 struct user_fpu_struct fpu; /* Math Co-processor registers */ 50 int u_fpvalid; /* True if math co-processor being used */ 51 size_t u_tsize; /* text size (pages) */ 52 size_t u_dsize; /* data size (pages) */ 53 size_t u_ssize; /* stack size (pages) */ 54 unsigned long start_code; /* text starting address */ 55 unsigned long start_data; /* data starting address */ 56 unsigned long start_stack; /* stack starting address */ 57 long int signal; /* signal causing core dump */ 58 struct regs * u_ar0; /* help gdb find registers */ 59 struct user_fpu_struct* u_fpstate; /* Math Co-processor pointer */ 60 unsigned long magic; /* identifies a core file */ 61 char u_comm[32]; /* user command name */ 62}; 63 64#define NBPG PAGE_SIZE 65#define UPAGES 1 66#define HOST_TEXT_START_ADDR (u.start_code) 67#define HOST_DATA_START_ADDR (u.start_data) 68#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG) 69 70#endif /* __ASM_SH64_USER_H */ 71