0001
0002
0003 #ifndef __ASM_IMAGE_H
0004 #define __ASM_IMAGE_H
0005
0006 #define ARM64_IMAGE_MAGIC "ARM\x64"
0007
0008 #define ARM64_IMAGE_FLAG_BE_SHIFT 0
0009 #define ARM64_IMAGE_FLAG_PAGE_SIZE_SHIFT (ARM64_IMAGE_FLAG_BE_SHIFT + 1)
0010 #define ARM64_IMAGE_FLAG_PHYS_BASE_SHIFT \
0011 (ARM64_IMAGE_FLAG_PAGE_SIZE_SHIFT + 2)
0012 #define ARM64_IMAGE_FLAG_BE_MASK 0x1
0013 #define ARM64_IMAGE_FLAG_PAGE_SIZE_MASK 0x3
0014 #define ARM64_IMAGE_FLAG_PHYS_BASE_MASK 0x1
0015
0016 #define ARM64_IMAGE_FLAG_LE 0
0017 #define ARM64_IMAGE_FLAG_BE 1
0018 #define ARM64_IMAGE_FLAG_PAGE_SIZE_4K 1
0019 #define ARM64_IMAGE_FLAG_PAGE_SIZE_16K 2
0020 #define ARM64_IMAGE_FLAG_PAGE_SIZE_64K 3
0021 #define ARM64_IMAGE_FLAG_PHYS_BASE 1
0022
0023 #ifndef __ASSEMBLY__
0024
0025 #define arm64_image_flag_field(flags, field) \
0026 (((flags) >> field##_SHIFT) & field##_MASK)
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044 struct arm64_image_header {
0045 __le32 code0;
0046 __le32 code1;
0047 __le64 text_offset;
0048 __le64 image_size;
0049 __le64 flags;
0050 __le64 res2;
0051 __le64 res3;
0052 __le64 res4;
0053 __le32 magic;
0054 __le32 res5;
0055 };
0056
0057 #endif
0058
0059 #endif