2 * firmwar.h: Firmware build logic head file
4 * Copyright (c) 2007, Intel Corporation.
5 * Zhang Xiantao <xiantao.zhang@intel.com>
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms and conditions of the GNU General Public License,
9 * version 2, as published by the Free Software Foundation.
11 * This program is distributed in the hope it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
16 * You should have received a copy of the GNU General Public License along with
17 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
18 * Place - Suite 330, Boston, MA 02111-1307 USA.
24 #include <sys/types.h>
30 #define GFW_SIZE (16UL<<20)
31 #define GFW_START ((4UL<<30) - GFW_SIZE)
33 #define HOB_SIGNATURE 0x3436474953424f48 // "HOBSIG64"
34 #define GFW_HOB_START ((4UL<<30) - (14UL<<20)) // 4G - 14M
35 #define GFW_HOB_SIZE (1UL<<20) // 1M
36 #define HOB_OFFSET (GFW_HOB_START-GFW_START)
38 #define Hob_Output(s) fprintf(stderr, s)
40 #define NVRAM_START (GFW_START + NVRAM_OFFSET)
41 #define NVRAM_OFFSET (10 * (1UL << 20))
42 #define NVRAM_SIZE (64 * (1UL << 10))
43 #define NVRAM_VALID_SIG 0x4650494e45584948 /* "HIXENIPF" */
44 #define VALIDATE_NVRAM_FD(x) ((1UL<<(sizeof(x)*8 - 1)) | x)
45 #define IS_VALID_NVRAM_FD(x) ((uint64_t)x >> (sizeof(x)*8 - 1))
46 #define READ_FROM_NVRAM 0
47 #define WRITE_TO_NVRAM 1
49 struct nvram_save_addr
{
51 unsigned long signature
;
54 extern const char *nvram
;
55 extern uint8_t *g_fw_start
;
56 extern int kvm_ia64_build_hob(unsigned long memsize
, unsigned long vcpus
,
57 uint8_t *fw_start
, unsigned long nvram_addr
);
58 extern char *read_image(const char *filename
, unsigned long *size
);
60 extern int kvm_ia64_copy_from_GFW_to_nvram();
61 extern int kvm_ia64_nvram_init(unsigned long type
);
62 extern int kvm_ia64_copy_from_nvram_to_GFW(unsigned long nvram_fd
,
63 const uint8_t *fw_start
);