404

[ Avaa Bypassed ]




Upload:

Command:

botdev@3.17.156.168: ~ $
/* MN10300 ELF constant and register definitions
 *
 * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
 * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
 * Written by David Howells (dhowells@redhat.com)
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public Licence
 * as published by the Free Software Foundation; either version
 * 2 of the Licence, or (at your option) any later version.
 */
#ifndef _ASM_ELF_H
#define _ASM_ELF_H

#include <linux/utsname.h>
#include <asm/ptrace.h>
#include <asm/user.h>

/*
 * AM33 relocations
 */
#define R_MN10300_NONE		0	/* No reloc.  */
#define R_MN10300_32		1	/* Direct 32 bit.  */
#define R_MN10300_16		2	/* Direct 16 bit.  */
#define R_MN10300_8		3	/* Direct 8 bit.  */
#define R_MN10300_PCREL32	4	/* PC-relative 32-bit.  */
#define R_MN10300_PCREL16	5	/* PC-relative 16-bit signed.  */
#define R_MN10300_PCREL8	6	/* PC-relative 8-bit signed.  */
#define R_MN10300_24		9	/* Direct 24 bit.  */
#define R_MN10300_RELATIVE	23	/* Adjust by program base.  */
#define R_MN10300_SYM_DIFF	33	/* Adjustment when relaxing. */
#define R_MN10300_ALIGN 	34	/* Alignment requirement. */

/*
 * AM33/AM34 HW Capabilities
 */
#define HWCAP_MN10300_ATOMIC_OP_UNIT	1	/* Has AM34 Atomic Operations */


/*
 * ELF register definitions..
 */
typedef unsigned long elf_greg_t;

#define ELF_NGREG ((sizeof(struct pt_regs) / sizeof(elf_greg_t)) - 1)
typedef elf_greg_t elf_gregset_t[ELF_NGREG];

#define ELF_NFPREG 32
typedef float elf_fpreg_t;

typedef struct {
	elf_fpreg_t	fpregs[ELF_NFPREG];
	u_int32_t	fpcr;
} elf_fpregset_t;

/*
 * This is used to ensure we don't load something for the wrong architecture
 */
#define elf_check_arch(x) \
	(((x)->e_machine == EM_CYGNUS_MN10300) ||	\
	 ((x)->e_machine == EM_MN10300))

/*
 * These are used to set parameters in the core dumps.
 */
#define ELF_CLASS	ELFCLASS32
#define ELF_DATA	ELFDATA2LSB
#define ELF_ARCH	EM_MN10300

/*
 * ELF process initialiser
 */
#define ELF_PLAT_INIT(_r, load_addr)					\
do {									\
	struct pt_regs *_ur = current->thread.uregs;			\
	_ur->a3   = 0;	_ur->a2   = 0;	_ur->d3   = 0;	_ur->d2   = 0;	\
	_ur->mcvf = 0;	_ur->mcrl = 0;	_ur->mcrh = 0;	_ur->mdrq = 0;	\
	_ur->e1   = 0;	_ur->e0   = 0;	_ur->e7   = 0;	_ur->e6   = 0;	\
	_ur->e5   = 0;	_ur->e4   = 0;	_ur->e3   = 0;	_ur->e2   = 0;	\
	_ur->lar  = 0;	_ur->lir  = 0;	_ur->mdr  = 0;			\
	_ur->a1   = 0;	_ur->a0   = 0;	_ur->d1   = 0;	_ur->d0   = 0;	\
} while (0)

#define CORE_DUMP_USE_REGSET
#define ELF_EXEC_PAGESIZE	4096

/*
 * This is the location that an ET_DYN program is loaded if exec'ed.  Typical
 * use of this is to invoke "./ld.so someprog" to test out a new version of
 * the loader.  We need to make sure that it is out of the way of the program
 * that it will "exec", and that there is sufficient room for the brk.
 * - must clear the VMALLOC area
 */
#define ELF_ET_DYN_BASE         0x04000000

/*
 * regs is struct pt_regs, pr_reg is elf_gregset_t (which is
 * now struct user_regs, they are different)
 * - ELF_CORE_COPY_REGS has been guessed, and may be wrong
 */
#define ELF_CORE_COPY_REGS(pr_reg, regs)	\
do {						\
	pr_reg[0]	= regs->a3;		\
	pr_reg[1]	= regs->a2;		\
	pr_reg[2]	= regs->d3;		\
	pr_reg[3]	= regs->d2;		\
	pr_reg[4]	= regs->mcvf;		\
	pr_reg[5]	= regs->mcrl;		\
	pr_reg[6]	= regs->mcrh;		\
	pr_reg[7]	= regs->mdrq;		\
	pr_reg[8]	= regs->e1;		\
	pr_reg[9]	= regs->e0;		\
	pr_reg[10]	= regs->e7;		\
	pr_reg[11]	= regs->e6;		\
	pr_reg[12]	= regs->e5;		\
	pr_reg[13]	= regs->e4;		\
	pr_reg[14]	= regs->e3;		\
	pr_reg[15]	= regs->e2;		\
	pr_reg[16]	= regs->sp;		\
	pr_reg[17]	= regs->lar;		\
	pr_reg[18]	= regs->lir;		\
	pr_reg[19]	= regs->mdr;		\
	pr_reg[20]	= regs->a1;		\
	pr_reg[21]	= regs->a0;		\
	pr_reg[22]	= regs->d1;		\
	pr_reg[23]	= regs->d0;		\
	pr_reg[24]	= regs->orig_d0;	\
	pr_reg[25]	= regs->epsw;		\
	pr_reg[26]	= regs->pc;		\
} while (0);

/*
 * This yields a mask that user programs can use to figure out what
 * instruction set this CPU supports.  This could be done in user space,
 * but it's not easy, and we've already done it here.
 */
#ifdef CONFIG_MN10300_HAS_ATOMIC_OPS_UNIT
#define ELF_HWCAP	(HWCAP_MN10300_ATOMIC_OP_UNIT)
#else
#define ELF_HWCAP	(0)
#endif

/*
 * This yields a string that ld.so will use to load implementation
 * specific libraries for optimization.  This is more specific in
 * intent than poking at uname or /proc/cpuinfo.
 *
 * For the moment, we have only optimizations for the Intel generations,
 * but that could change...
 */
#define ELF_PLATFORM  (NULL)

#endif /* _ASM_ELF_H */

Filemanager

Name Type Size Permission Actions
Kbuild File 314 B 0644
asm-offsets.h File 35 B 0644
atomic.h File 4.02 KB 0644
bitops.h File 5.42 KB 0644
bug.h File 864 B 0644
bugs.h File 561 B 0644
busctl-regs.h File 7.8 KB 0644
cache.h File 2.06 KB 0644
cacheflush.h File 7.6 KB 0644
checksum.h File 2.09 KB 0644
cmpxchg.h File 2.65 KB 0644
cpu-regs.h File 16.61 KB 0644
current.h File 922 B 0644
debugger.h File 1.2 KB 0644
delay.h File 597 B 0644
div64.h File 3.21 KB 0644
dma-mapping.h File 636 B 0644
dma.h File 3.09 KB 0644
dmactl-regs.h File 532 B 0644
elf.h File 4.49 KB 0644
emergency-restart.h File 43 B 0644
exceptions.h File 4.74 KB 0644
fpu.h File 3.57 KB 0644
frame.inc File 2.37 KB 0644
ftrace.h File 12 B 0644
futex.h File 31 B 0644
gdb-stub.h File 5.42 KB 0644
hardirq.h File 1.68 KB 0644
highmem.h File 3.01 KB 0644
hw_irq.h File 483 B 0644
intctl-regs.h File 2.26 KB 0644
io.h File 7.67 KB 0644
irq.h File 1.11 KB 0644
irq_regs.h File 751 B 0644
irqflags.h File 4.05 KB 0644
kdebug.h File 561 B 0644
kgdb.h File 1.7 KB 0644
kmap_types.h File 160 B 0644
kprobes.h File 1.59 KB 0644
linkage.h File 593 B 0644
local.h File 31 B 0644
local64.h File 33 B 0644
mc146818rtc.h File 26 B 0644
mmu.h File 434 B 0644
mmu_context.h File 4.44 KB 0644
module.h File 677 B 0644
nmi.h File 500 B 0644
page.h File 3.63 KB 0644
page_offset.h File 302 B 0644
pci.h File 2.17 KB 0644
percpu.h File 32 B 0644
pgalloc.h File 1.49 KB 0644
pgtable.h File 15.68 KB 0644
pio-regs.h File 7.53 KB 0644
processor.h File 4.12 KB 0644
ptrace.h File 805 B 0644
reset-regs.h File 1.8 KB 0644
rtc-regs.h File 3.57 KB 0644
rtc.h File 692 B 0644
rwlock.h File 2.98 KB 0644
serial-regs.h File 8.85 KB 0644
serial.h File 1.02 KB 0644
setup.h File 574 B 0644
shmparam.h File 182 B 0644
signal.h File 888 B 0644
smp.h File 3.06 KB 0644
smsc911x.h File 27 B 0644
spinlock.h File 3.84 KB 0644
spinlock_types.h File 445 B 0644
string.h File 1.03 KB 0644
switch_to.h File 1.49 KB 0644
syscall.h File 2.38 KB 0644
termios.h File 387 B 0644
thread_info.h File 4.36 KB 0644
timer-regs.h File 20.72 KB 0644
timex.h File 843 B 0644
tlb.h File 941 B 0644
tlbflush.h File 3.45 KB 0644
topology.h File 34 B 0644
types.h File 620 B 0644
uaccess.h File 7.78 KB 0644
ucontext.h File 673 B 0644
unaligned.h File 678 B 0644
unistd.h File 1.34 KB 0644
user.h File 1.91 KB 0644
vga.h File 471 B 0644
xor.h File 29 B 0644