22a9835c35
Just about every architecture defines some macros to do operations on pfns. They're all virtually identical. This patch consolidates all of them. One minor glitch is that at least i386 uses them in a very skeletal header file. To keep away from #include dependency hell, I stuck the new definitions in a new, isolated header. Of all of the implementations, sh64 is the only one that varied by a bit. It used some masks to ensure that any sign-extension got ripped away before the arithmetic is done. This has been posted to that sh64 maintainers and the development list. Compiles on x86, x86_64, ia64 and ppc64. Signed-off-by: Dave Hansen <haveblue@us.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
64 lines
2.4 KiB
C
64 lines
2.4 KiB
C
/*
|
|
* Just a place holder. We don't want to have to test x86 before
|
|
* we include stuff
|
|
*/
|
|
|
|
#ifndef _i386_SETUP_H
|
|
#define _i386_SETUP_H
|
|
|
|
#include <linux/pfn.h>
|
|
|
|
/*
|
|
* Reserved space for vmalloc and iomap - defined in asm/page.h
|
|
*/
|
|
#define MAXMEM_PFN PFN_DOWN(MAXMEM)
|
|
#define MAX_NONPAE_PFN (1 << 20)
|
|
|
|
#define PARAM_SIZE 4096
|
|
#define COMMAND_LINE_SIZE 256
|
|
|
|
#define OLD_CL_MAGIC_ADDR 0x90020
|
|
#define OLD_CL_MAGIC 0xA33F
|
|
#define OLD_CL_BASE_ADDR 0x90000
|
|
#define OLD_CL_OFFSET 0x90022
|
|
#define NEW_CL_POINTER 0x228 /* Relative to real mode data */
|
|
|
|
#ifndef __ASSEMBLY__
|
|
/*
|
|
* This is set up by the setup-routine at boot-time
|
|
*/
|
|
extern unsigned char boot_params[PARAM_SIZE];
|
|
|
|
#define PARAM (boot_params)
|
|
#define SCREEN_INFO (*(struct screen_info *) (PARAM+0))
|
|
#define EXT_MEM_K (*(unsigned short *) (PARAM+2))
|
|
#define ALT_MEM_K (*(unsigned long *) (PARAM+0x1e0))
|
|
#define E820_MAP_NR (*(char*) (PARAM+E820NR))
|
|
#define E820_MAP ((struct e820entry *) (PARAM+E820MAP))
|
|
#define APM_BIOS_INFO (*(struct apm_bios_info *) (PARAM+0x40))
|
|
#define IST_INFO (*(struct ist_info *) (PARAM+0x60))
|
|
#define DRIVE_INFO (*(struct drive_info_struct *) (PARAM+0x80))
|
|
#define SYS_DESC_TABLE (*(struct sys_desc_table_struct*)(PARAM+0xa0))
|
|
#define EFI_SYSTAB ((efi_system_table_t *) *((unsigned long *)(PARAM+0x1c4)))
|
|
#define EFI_MEMDESC_SIZE (*((unsigned long *) (PARAM+0x1c8)))
|
|
#define EFI_MEMDESC_VERSION (*((unsigned long *) (PARAM+0x1cc)))
|
|
#define EFI_MEMMAP ((void *) *((unsigned long *)(PARAM+0x1d0)))
|
|
#define EFI_MEMMAP_SIZE (*((unsigned long *) (PARAM+0x1d4)))
|
|
#define MOUNT_ROOT_RDONLY (*(unsigned short *) (PARAM+0x1F2))
|
|
#define RAMDISK_FLAGS (*(unsigned short *) (PARAM+0x1F8))
|
|
#define VIDEO_MODE (*(unsigned short *) (PARAM+0x1FA))
|
|
#define ORIG_ROOT_DEV (*(unsigned short *) (PARAM+0x1FC))
|
|
#define AUX_DEVICE_INFO (*(unsigned char *) (PARAM+0x1FF))
|
|
#define LOADER_TYPE (*(unsigned char *) (PARAM+0x210))
|
|
#define KERNEL_START (*(unsigned long *) (PARAM+0x214))
|
|
#define INITRD_START (*(unsigned long *) (PARAM+0x218))
|
|
#define INITRD_SIZE (*(unsigned long *) (PARAM+0x21c))
|
|
#define EDID_INFO (*(struct edid_info *) (PARAM+0x140))
|
|
#define EDD_NR (*(unsigned char *) (PARAM+EDDNR))
|
|
#define EDD_MBR_SIG_NR (*(unsigned char *) (PARAM+EDD_MBR_SIG_NR_BUF))
|
|
#define EDD_MBR_SIGNATURE ((unsigned int *) (PARAM+EDD_MBR_SIG_BUF))
|
|
#define EDD_BUF ((struct edd_info *) (PARAM+EDDBUF))
|
|
|
|
#endif /* __ASSEMBLY__ */
|
|
|
|
#endif /* _i386_SETUP_H */
|