⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 binfmt_elfn32.c

📁 优龙2410linux2.6.8内核源代码
💻 C
字号:
/* * Support for n32 Linux/MIPS ELF binaries. * * Copyright (C) 1999, 2001 Ralf Baechle * Copyright (C) 1999, 2001 Silicon Graphics, Inc. * * Heavily inspired by the 32-bit Sparc compat code which is * Copyright (C) 1995, 1996, 1997, 1998 David S. Miller (davem@redhat.com) * Copyright (C) 1995, 1996, 1997, 1998 Jakub Jelinek   (jj@ultra.linux.cz) */#define ELF_ARCH		EM_MIPS#define ELF_CLASS		ELFCLASS32#ifdef __MIPSEB__#define ELF_DATA		ELFDATA2MSB;#else /* __MIPSEL__ */#define ELF_DATA		ELFDATA2LSB;#endif/* ELF register definitions */#define ELF_NGREG	45#define ELF_NFPREG	33typedef unsigned long elf_greg_t;typedef elf_greg_t elf_gregset_t[ELF_NGREG];typedef double elf_fpreg_t;typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];/* * This is used to ensure we don't load something for the wrong architecture. */#define elf_check_arch(hdr)						\({									\	int __res = 1;							\	struct elfhdr *__h = (hdr);					\									\	if (__h->e_machine != EM_MIPS)					\		__res = 0;						\	if (__h->e_ident[EI_CLASS] != ELFCLASS32)			\		__res = 0;						\	if (((__h->e_flags & EF_MIPS_ABI2) == 0) ||			\	    ((__h->e_flags & EF_MIPS_ABI) != 0))			\		__res = 0;						\									\	__res;								\})#define TASK32_SIZE		0x7fff8000UL#undef ELF_ET_DYN_BASE#define ELF_ET_DYN_BASE         (TASK32_SIZE / 3 * 2)#include <asm/processor.h>#include <linux/module.h>#include <linux/config.h>#include <linux/elfcore.h>#include <linux/compat.h>#define elf_prstatus elf_prstatus32struct elf_prstatus32{	struct elf_siginfo pr_info;	/* Info associated with signal */	short	pr_cursig;		/* Current signal */	unsigned int pr_sigpend;	/* Set of pending signals */	unsigned int pr_sighold;	/* Set of held signals */	pid_t	pr_pid;	pid_t	pr_ppid;	pid_t	pr_pgrp;	pid_t	pr_sid;	struct compat_timeval pr_utime;	/* User time */	struct compat_timeval pr_stime;	/* System time */	struct compat_timeval pr_cutime;/* Cumulative user time */	struct compat_timeval pr_cstime;/* Cumulative system time */	elf_gregset_t pr_reg;	/* GP registers */	int pr_fpvalid;		/* True if math co-processor being used.  */};#define elf_prpsinfo elf_prpsinfo32struct elf_prpsinfo32{	char	pr_state;	/* numeric process state */	char	pr_sname;	/* char for pr_state */	char	pr_zomb;	/* zombie */	char	pr_nice;	/* nice val */	unsigned int pr_flag;	/* flags */	__kernel_uid_t	pr_uid;	__kernel_gid_t	pr_gid;	pid_t	pr_pid, pr_ppid, pr_pgrp, pr_sid;	/* Lots missing */	char	pr_fname[16];	/* filename of executable */	char	pr_psargs[ELF_PRARGSZ];	/* initial part of arg list */};#define elf_addr_t	u32#define elf_caddr_t	u32#define init_elf_binfmt init_elfn32_binfmt#define jiffies_to_timeval jiffies_to_compat_timevalstatic __inline__ voidjiffies_to_compat_timeval(unsigned long jiffies, struct compat_timeval *value){	/*	 * Convert jiffies to nanoseconds and seperate with	 * one divide.	 */	u64 nsec = (u64)jiffies * TICK_NSEC; 	value->tv_sec = div_long_long_rem(nsec, NSEC_PER_SEC, &value->tv_usec);	value->tv_usec /= NSEC_PER_USEC;}#define ELF_CORE_EFLAGS EF_MIPS_ABI2MODULE_DESCRIPTION("Binary format loader for compatibility with n32 Linux/MIPS binaries");MODULE_AUTHOR("Ralf Baechle (ralf@linux-mips.org)");#undef MODULE_DESCRIPTION#undef MODULE_AUTHOR#include "../../../fs/binfmt_elf.c"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -