1/* define bootstub constrains here, like memory map etc. 2 */ 3 4#ifndef _BOOT_STUB_HEAD 5#define _BOOT_STUB_HEAD 6 7#define CPUID_MASK 0xffff0 8#define PENWELL_FAMILY 0x20670 9#define CLOVERVIEW_FAMILY 0x30650 10#define VALLEYVIEW2_FAMILY 0x30670 11#define TANGIER_FAMILY 0x406A0 12#define ANNIEDALE_FAMILY 0x506A0 13 14#define MID_CPU_CHIP_LINCROFT 1 15#define MID_CPU_CHIP_PENWELL 2 16#define MID_CPU_CHIP_CLOVERVIEW 3 17#define MID_CPU_CHIP_VALLEYVIEW2 4 18#define MID_CPU_CHIP_TANGIER 5 19#define MID_CPU_CHIP_ANNIEDALE 6 20#define MID_CPU_CHIP_OTHER 0xFF 21 22#define BASE_ADDRESS 0x01100000 23 24#define CMDLINE_OFFSET BASE_ADDRESS 25#define BZIMAGE_SIZE_OFFSET (CMDLINE_OFFSET + CMDLINE_SIZE) 26#define INITRD_SIZE_OFFSET (BZIMAGE_SIZE_OFFSET + 4) 27#define SPI_UART_SUPPRESSION (INITRD_SIZE_OFFSET + 4) 28 29#define SPI_TYPE (SPI_UART_SUPPRESSION + 4) /*0:SPI0 1:SPI1*/ 30#define SPI_0 0 31#define SPI_1 1 32#define SPI_2 2 33 34#define FLAGS_RESERVED_0 (SPI_TYPE + 4) 35#define FLAGS_RESERVED_1 (FLAGS_RESERVED_0 + 4) 36#define VXE_FW_SIZE_OFFSET (FLAGS_RESERVED_1 + 4) 37#define SEC_PLAT_SVCS_SIZE_OFFSET (VXE_FW_SIZE_OFFSET + 4) 38#define XEN_SIZE_OFFSET (SEC_PLAT_SVCS_SIZE_OFFSET + 4) 39 40#define BOOTSTUB_OFFSET (BASE_ADDRESS + 0x1000) 41 42#define BZIMAGE_OFFSET (BASE_ADDRESS + 0x3000) 43 44#define SETUP_HEADER_OFFSET (BZIMAGE_OFFSET + 0x1F1) 45#define SETUP_HEADER_SIZE (0x0202 + *(unsigned char*)(0x0201+BZIMAGE_OFFSET)) 46#define BOOT_PARAMS_OFFSET 0x8000 47#define BOOT_CMDLINE_OFFSET 0x10000 48#define SETUP_SIGNATURE 0x5a5aaa55 49 50#define GDT_ENTRY_BOOT_CS 2 51#define __BOOT_CS (GDT_ENTRY_BOOT_CS * 8) 52 53#define GDT_ENTRY_BOOT_DS (GDT_ENTRY_BOOT_CS + 1) 54#define __BOOT_DS (GDT_ENTRY_BOOT_DS * 8) 55 56#ifdef __ASSEMBLY__ 57#define GDT_ENTRY(flags, base, limit) \ 58 ((((base) & 0xff000000) << (56-24)) | \ 59 (((flags) & 0x0000f0ff) << 40) | \ 60 (((limit) & 0x000f0000) << (48-16)) | \ 61 (((base) & 0x00ffffff) << 16) | \ 62 (((limit) & 0x0000ffff))) 63#else 64#define GDT_ENTRY(flags, base, limit) \ 65 (((u64)(base & 0xff000000) << 32) | \ 66 ((u64)flags << 40) | \ 67 ((u64)(limit & 0x00ff0000) << 32) | \ 68 ((u64)(base & 0x00ffffff) << 16) | \ 69 ((u64)(limit & 0x0000ffff))) 70int get_e820_by_bios(void *e820_buf); 71int mid_identify_cpu(void); 72void bs_printk(const char *str); 73#endif 74 75#endif 76