arch/powerpc/boot/rs6000.h

Source file repositories/reference/linux-study-clean/arch/powerpc/boot/rs6000.h

File Facts

System
Linux kernel
Corpus path
arch/powerpc/boot/rs6000.h
Extension
.h
Size
6887 bytes
Lines
237
Domain
Architecture Layer
Bucket
arch/powerpc
Inferred role
Architecture Layer: implementation source
Status
source implementation candidate

Why This File Exists

CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.

Dependency Surface

Detected Declarations

Annotated Snippet

struct external_filehdr {
	char f_magic[2];	/* magic number			*/
	char f_nscns[2];	/* number of sections		*/
	char f_timdat[4];	/* time & date stamp		*/
	char f_symptr[4];	/* file pointer to symtab	*/
	char f_nsyms[4];	/* number of symtab entries	*/
	char f_opthdr[2];	/* sizeof(optional hdr)		*/
	char f_flags[2];	/* flags			*/
};

        /* IBM RS/6000 */
#define U802WRMAGIC     0730    /* writeable text segments **chh**      */
#define U802ROMAGIC     0735    /* readonly sharable text segments      */
#define U802TOCMAGIC    0737    /* readonly text segments and TOC       */

#define BADMAG(x)	\
	((x).f_magic != U802ROMAGIC && (x).f_magic != U802WRMAGIC && \
	 (x).f_magic != U802TOCMAGIC)

#define	FILHDR	struct external_filehdr
#define	FILHSZ	20


/********************** AOUT "OPTIONAL HEADER" **********************/


struct aouthdr {
	unsigned char	magic[2];	/* type of file			*/
	unsigned char	vstamp[2];	/* version stamp		*/
	unsigned char	tsize[4];	/* text size in bytes, padded to FW bdry */
	unsigned char	dsize[4];	/* initialized data "  "	*/
	unsigned char	bsize[4];	/* uninitialized data "   "	*/
	unsigned char	entry[4];	/* entry pt.			*/
	unsigned char	text_start[4];	/* base of text used for this file */
	unsigned char	data_start[4];	/* base of data used for this file */
	unsigned char	o_toc[4];	/* address of TOC */
	unsigned char	o_snentry[2];	/* section number of entry point */
	unsigned char	o_sntext[2];	/* section number of .text section */
	unsigned char	o_sndata[2];	/* section number of .data section */
	unsigned char	o_sntoc[2];	/* section number of TOC */
	unsigned char	o_snloader[2];	/* section number of .loader section */
	unsigned char	o_snbss[2];	/* section number of .bss section */
	unsigned char	o_algntext[2];	/* .text alignment */
	unsigned char	o_algndata[2];	/* .data alignment */
	unsigned char	o_modtype[2];	/* module type (??) */
	unsigned char	o_cputype[2];	/* cpu type */
	unsigned char	o_maxstack[4];	/* max stack size (??) */
	unsigned char	o_maxdata[4];	/* max data size (??) */
	unsigned char	o_resv2[12];	/* reserved */
};

#define AOUTSZ 72
#define SMALL_AOUTSZ (28)
#define AOUTHDRSZ 72

#define	RS6K_AOUTHDR_OMAGIC	0x0107	/* old: text & data writeable */
#define	RS6K_AOUTHDR_NMAGIC	0x0108	/* new: text r/o, data r/w */
#define	RS6K_AOUTHDR_ZMAGIC	0x010B	/* paged: text r/o, both page-aligned */


/********************** SECTION HEADER **********************/


struct external_scnhdr {
	char		s_name[8];	/* section name			*/
	char		s_paddr[4];	/* physical address, aliased s_nlib */
	char		s_vaddr[4];	/* virtual address		*/
	char		s_size[4];	/* section size			*/
	char		s_scnptr[4];	/* file ptr to raw data for section */
	char		s_relptr[4];	/* file ptr to relocation	*/
	char		s_lnnoptr[4];	/* file ptr to line numbers	*/
	char		s_nreloc[2];	/* number of relocation entries	*/
	char		s_nlnno[2];	/* number of line number entries*/
	char		s_flags[4];	/* flags			*/
};

/*
 * names of "special" sections
 */
#define _TEXT	".text"
#define _DATA	".data"
#define _BSS	".bss"
#define _PAD	".pad"
#define _LOADER	".loader"

#define	SCNHDR	struct external_scnhdr
#define	SCNHSZ	40

/* XCOFF uses a special .loader section with type STYP_LOADER.  */
#define STYP_LOADER 0x1000

Annotation

Implementation Notes