📄 linux_setup.h
字号:
/* * linux/include/asm/setup.h * * Copyright (C) 1997-1999 Russell King * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * Structure passed to kernel to tell it about the * hardware it's running on. See linux/Documentation/arm/Setup * for more info. * * NOTE: * This file contains two ways to pass information from the boot * loader to the kernel. The old struct param_struct is deprecated, * but it will be kept in the kernel for 5 years from now * (2001). This will allow boot loaders to convert to the new struct * tag way. */#ifndef __ASMARM_SETUP_H#define __ASMARM_SETUP_H/* * Usage: * - do not go blindly adding fields, add them at the end * - when adding fields, don't rely on the address until * a patch from me has been released * - unused fields should be zero (for future expansion) * - this structure is relatively short-lived - only * guaranteed to contain useful data in setup_arch() */#define COMMAND_LINE_SIZE 1024/* This is the old deprecated way to pass parameters to the kernel */struct param_struct { union { struct { unsigned long page_size; /* 0 */ unsigned long nr_pages; /* 4 */ unsigned long ramdisk_size; /* 8 */ unsigned long flags; /* 12 */#define FLAG_READONLY 1#define FLAG_RDLOAD 4#define FLAG_RDPROMPT 8 unsigned long rootdev; /* 16 */ unsigned long video_num_cols; /* 20 */ unsigned long video_num_rows; /* 24 */ unsigned long video_x; /* 28 */ unsigned long video_y; /* 32 */ unsigned long memc_control_reg; /* 36 */ unsigned char sounddefault; /* 40 */ unsigned char adfsdrives; /* 41 */ unsigned char bytes_per_char_h; /* 42 */ unsigned char bytes_per_char_v; /* 43 */ unsigned long pages_in_bank[4]; /* 44 */ unsigned long pages_in_vram; /* 60 */ unsigned long initrd_start; /* 64 */ unsigned long initrd_size; /* 68 */ unsigned long rd_start; /* 72 */ unsigned long system_rev; /* 76 */ unsigned long system_serial_low; /* 80 */ unsigned long system_serial_high; /* 84 */ unsigned long mem_fclk_21285; /* 88 */ } s; char unused[256]; } u1; union { char paths[8][128]; struct { unsigned long magic; char n[1024 - sizeof(unsigned long)]; } s; } u2; char commandline[COMMAND_LINE_SIZE];};/* * The new way of passing information: a list of tagged entries *//* The list ends with an ATAG_NONE node. */#define ATAG_NONE 0x00000000struct tag_header { __u32 size; __u32 tag;};/* The list must start with an ATAG_CORE node */#define ATAG_CORE 0x54410001struct tag_core { __u32 flags; /* bit 0 = read-only */ __u32 pagesize; __u32 rootdev;};/* it is allowed to have multiple ATAG_MEM nodes */#define ATAG_MEM 0x54410002struct tag_mem32 { __u32 size; __u32 start; /* physical start address */};/* VGA text type displays */#define ATAG_VIDEOTEXT 0x54410003struct tag_videotext { __u8 x; __u8 y; __u16 video_page; __u8 video_mode; __u8 video_cols; __u16 video_ega_bx; __u8 video_lines; __u8 video_isvga; __u16 video_points;};/* describes how the ramdisk will be used in kernel */#define ATAG_RAMDISK 0x54410004struct tag_ramdisk { __u32 flags; /* bit 0 = load, bit 1 = prompt */ __u32 size; /* decompressed ramdisk size in _kilo_ bytes */ __u32 start; /* starting block of floppy-based RAM disk image */};/* describes where the compressed ramdisk image lives (virtual address) *//* * this one accidentally used virtual addresses - as such, * its depreciated. */#define ATAG_INITRD 0x54410005/* describes where the compressed ramdisk image lives (physical address) */#define ATAG_INITRD2 0x54420005struct tag_initrd { __u32 start; /* physical start address */ __u32 size; /* size of compressed ramdisk image in bytes */};/* board serial number. "64 bits should be enough for everybody" */#define ATAG_SERIAL 0x54410006struct tag_serialnr { __u32 low; __u32 high;};/* board revision */#define ATAG_REVISION 0x54410007struct tag_revision { __u32 rev;};/* initial values for vesafb-type framebuffers. see struct screen_info * in include/linux/tty.h */#define ATAG_VIDEOLFB 0x54410008struct tag_videolfb { __u16 lfb_width; __u16 lfb_height; __u16 lfb_depth; __u16 lfb_linelength; __u32 lfb_base; __u32 lfb_size; __u8 red_size; __u8 red_pos; __u8 green_size; __u8 green_pos; __u8 blue_size; __u8 blue_pos; __u8 rsvd_size; __u8 rsvd_pos;};/* command line: \0 terminated string */#define ATAG_CMDLINE 0x54410009struct tag_cmdline { char cmdline[1]; /* this is the minimum size */};/* acorn RiscPC specific information */#define ATAG_ACORN 0x41000101struct tag_acorn { __u32 memc_control_reg; __u32 vram_pages; __u8 sounddefault; __u8 adfsdrives;};/* footbridge memory clock, see arch/arm/mach-footbridge/arch.c */#define ATAG_MEMCLK 0x41000402struct tag_memclk { __u32 fmemclk;};/* PiKRON specific operations */#define ATAG_MEMDATA 0x70690101struct tag_memdata { __u32 dst; __u32 size; char data[];};#define ATAG_MEMCPY 0x70690102struct tag_memcpy { __u32 dst; __u32 src; __u32 size; };#define ATAG_JUMP 0x70690103struct tag_jump { __u32 addr; __u32 r0; __u32 r1; __u32 r2;};struct tag { struct tag_header hdr; union { struct tag_core core; struct tag_mem32 mem; struct tag_videotext videotext; struct tag_ramdisk ramdisk; struct tag_initrd initrd; struct tag_serialnr serialnr; struct tag_revision revision; struct tag_videolfb videolfb; struct tag_cmdline cmdline; /* * Acorn specific */ struct tag_acorn acorn; /* * DC21285 specific */ struct tag_memclk memclk; /* * PiKRON specific */ struct tag_memdata memdata; struct tag_memcpy memcpy; struct tag_jump jump; } u;};struct tagtable { __u32 tag; int (*parse)(const struct tag *);};#define __tag __attribute__((unused, __section__(".taglist")))#define __tagtable(tag, fn) \static struct tagtable __tagtable_##fn __tag = { tag, fn }#define tag_member_present(tag,member) \ ((unsigned long)(&((struct tag *)0L)->member + 1) \ <= (tag)->hdr.size * 4)#define tag_next(t) ((struct tag *)((__u32 *)(t) + (t)->hdr.size))#define tag_size(type) ((sizeof(struct tag_header) + sizeof(struct type)) >> 2)#define for_each_tag(t,base) \ for (t = base; t->hdr.size; t = tag_next(t))/* * Memory map description */#define NR_BANKS 8struct meminfo { int nr_banks; unsigned long end; struct { unsigned long start; unsigned long size; int node; } bank[NR_BANKS];};extern struct meminfo meminfo;#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -