blob: 21b08bb8053da405ea160ae70628b52f3303aee9 [file] [log] [blame]
Alek Dub7f7baf2008-05-13 16:23:15 +08001/* define bootstub constrains here, like memory map etc.
2 */
3
4#ifndef _BOOT_STUB_HEAD
5#define _BOOT_STUB_HEAD
6
Bin Gao8a13ab72013-03-30 00:11:07 -07007#define CPUID_MASK 0xffff0
Leonard Mai4c56e452011-10-06 12:27:46 -07008#define PENWELL_FAMILY 0x20670
9#define CLOVERVIEW_FAMILY 0x30650
Bin Gao8a13ab72013-03-30 00:11:07 -070010#define VALLEYVIEW2_FAMILY 0x30670
Mark F. Brown90847a82011-09-07 18:06:24 -040011#define TANGIER_FAMILY 0x406A0
12#define ANNIEDALE_FAMILY 0x506A0
Bin Gao8a13ab72013-03-30 00:11:07 -070013
Eric Ernstaecaba32013-04-02 12:02:59 -070014#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
Mark F. Brown90847a82011-09-07 18:06:24 -040018#define MID_CPU_CHIP_TANGIER 5
19#define MID_CPU_CHIP_ANNIEDALE 6
Eric Ernstaecaba32013-04-02 12:02:59 -070020#define MID_CPU_CHIP_OTHER 0xFF
Leonard Mai4c56e452011-10-06 12:27:46 -070021
Alek Du56ce5ad2008-08-27 12:43:56 +080022#define CMDLINE_OFFSET 0x1100000
Jeremy Compostella1a86f0a2011-10-24 16:45:08 +020023#define BZIMAGE_SIZE_OFFSET (CMDLINE_OFFSET + CMDLINE_SIZE)
24#define INITRD_SIZE_OFFSET (BZIMAGE_SIZE_OFFSET + 4)
25#define SPI_UART_SUPPRESSION (INITRD_SIZE_OFFSET + 4)
26#define SPI_TYPE (SPI_UART_SUPPRESSION + 4) /*0:SPI0 1:SPI1*/
Eric Ernstaecaba32013-04-02 12:02:59 -070027#define SPI_0 0
28#define SPI_1 1
Mark F. Brown90847a82011-09-07 18:06:24 -040029#define SPI_2 2
Eric Ernstaecaba32013-04-02 12:02:59 -070030
Alek Du56ce5ad2008-08-27 12:43:56 +080031#define STACK_OFFSET 0x1101000
32#define BZIMAGE_OFFSET 0x1102000
Alek Du0fdceca2008-05-14 17:36:34 +080033
Alek Dub7f7baf2008-05-13 16:23:15 +080034#define SETUP_HEADER_OFFSET (BZIMAGE_OFFSET + 0x1F1)
35#define SETUP_HEADER_SIZE (0x0202 + *(unsigned char*)(0x0201+BZIMAGE_OFFSET))
36#define BOOT_PARAMS_OFFSET 0x8000
37#define SETUP_SIGNATURE 0x5a5aaa55
38
39#define GDT_ENTRY_BOOT_CS 2
40#define __BOOT_CS (GDT_ENTRY_BOOT_CS * 8)
41
42#define GDT_ENTRY_BOOT_DS (GDT_ENTRY_BOOT_CS + 1)
43#define __BOOT_DS (GDT_ENTRY_BOOT_DS * 8)
44
Bin Gao923fa8d2013-03-30 00:27:10 -070045#ifdef __ASSEMBLY__
46#define GDT_ENTRY(flags, base, limit) \
47 ((((base) & 0xff000000) << (56-24)) | \
48 (((flags) & 0x0000f0ff) << 40) | \
49 (((limit) & 0x000f0000) << (48-16)) | \
50 (((base) & 0x00ffffff) << 16) | \
51 (((limit) & 0x0000ffff)))
52#else
Alek Dub7f7baf2008-05-13 16:23:15 +080053#define GDT_ENTRY(flags, base, limit) \
54 (((u64)(base & 0xff000000) << 32) | \
55 ((u64)flags << 40) | \
56 ((u64)(limit & 0x00ff0000) << 32) | \
57 ((u64)(base & 0x00ffffff) << 16) | \
58 ((u64)(limit & 0x0000ffff)))
Bin Gao923fa8d2013-03-30 00:27:10 -070059int get_e820_by_bios(void *e820_buf);
Eric Ernstaecaba32013-04-02 12:02:59 -070060int mid_identify_cpu(void);
Mark F. Brown90847a82011-09-07 18:06:24 -040061void bs_printk(const char *str);
Bin Gao923fa8d2013-03-30 00:27:10 -070062#endif
Alek Dub7f7baf2008-05-13 16:23:15 +080063
64#endif