diff -u reference.size tmp.size
rm tmp.size
-arm32.h: mkheader.py structs.py $(ROOT)/arch-arm.h
+arm32.h: mkheader.py structs.py $(ROOT)/arch-arm.h $(ROOT)/xen.h
$(PYTHON) $< $* $@ $(filter %.h,$^)
-arm64.h: mkheader.py structs.py $(ROOT)/arch-arm.h
+arm64.h: mkheader.py structs.py $(ROOT)/arch-arm.h $(ROOT)/xen.h
$(PYTHON) $< $* $@ $(filter %.h,$^)
x86_32.h: mkheader.py structs.py $(ROOT)/arch-x86/xen-x86_32.h $(ROOT)/arch-x86/xen.h $(ROOT)/xen.h
#arm
inttypes["arm32"] = {
- "unsigned long" : "uint32_t",
- "long" : "uint32_t",
+ "unsigned long" : "__danger_unsigned_long_on_arm32",
+ "long" : "__danger_long_on_arm32",
"xen_pfn_t" : "__align8__ uint64_t",
"xen_ulong_t" : "__align8__ uint64_t",
"uint64_t" : "__align8__ uint64_t",
output += header[arch];
output += "\n";
+defined = {}
+
# add defines to output
for line in re.findall("#define[^\n]+", input):
for define in defines:
match = re.search(regex, line);
if None == match:
continue;
+ defined[define] = 1
if define.upper()[0] == define[0]:
replace = define + "_" + arch.upper();
else:
# add structs to output
for struct in structs:
- regex = "struct\s+%s\s*\{(.*?)\n\};" % struct;
+ regex = "(?:#ifdef ([A-Z_]+))?\nstruct\s+%s\s*\{(.*?)\n\};" % struct;
match = re.search(regex, input, re.S)
- if None == match:
+ if None == match or \
+ (match.group(1) is not None and match.group(1) not in defined):
output += "#define %s_has_no_%s 1\n" % (arch, struct);
else:
- output += "struct %s_%s {%s\n};\n" % (struct, arch, match.group(1));
+ output += "struct %s_%s {%s\n};\n" % (struct, arch, match.group(2));
output += "typedef struct %s_%s %s_%s_t;\n" % (struct, arch, struct, arch);
output += "\n";
cpu_user_regs | - - 68 200
vcpu_guest_core_regs | 304 304 - -
vcpu_guest_context | 336 336 2800 5168
-arch_vcpu_info | - - 24 16
-vcpu_time_info | - - 32 32
-vcpu_info | - - 64 64
-arch_shared_info | - - 268 280
-shared_info | - - 2584 3368
+arch_vcpu_info | 0 0 24 16
+vcpu_time_info | 32 32 32 32
+vcpu_info | 48 48 64 64
+arch_shared_info | 0 0 268 280
+shared_info | 1088 1088 2584 3368
"__i386__",
"__x86_64__",
+ "XEN_HAVE_PV_GUEST_ENTRY",
+
# arm
# None
typedef struct vcpu_guest_context vcpu_guest_context_t;
DEFINE_XEN_GUEST_HANDLE(vcpu_guest_context_t);
-struct arch_vcpu_info { };
+struct arch_vcpu_info {
+};
typedef struct arch_vcpu_info arch_vcpu_info_t;
-struct arch_shared_info { };
+struct arch_shared_info {
+};
typedef struct arch_shared_info arch_shared_info_t;
typedef uint64_t xen_callback_t;
-#endif /* ifndef __ASSEMBLY __ */
+#endif
/* PSR bits (CPSR, SPSR)*/
* pages preceding pt_base and mark them as reserved/unused.
*/
#ifdef XEN_HAVE_PV_GUEST_ENTRY
-#define MAX_GUEST_CMDLINE 1024
struct start_info {
/* THE FOLLOWING ARE FILLED IN BOTH ON INITIAL BOOT AND ON RESUME. */
char magic[32]; /* "xen-<version>-<platform>". */
/* (PFN of pre-loaded module if */
/* SIF_MOD_START_PFN set in flags). */
unsigned long mod_len; /* Size (bytes) of pre-loaded module. */
+#define MAX_GUEST_CMDLINE 1024
int8_t cmd_line[MAX_GUEST_CMDLINE];
/* The pfn range here covers both page table and p->m table frames. */
unsigned long first_p2m_pfn;/* 1st pfn forming initial P->M table. */