]> git.ipfire.org Git - people/ms/u-boot.git/blobdiff - include/vxworks.h
efi_loader: fix building crt0 on arm
[people/ms/u-boot.git] / include / vxworks.h
index c5d1577f9cb51bfdcde210ae8a328efb5791089f..f69b0084ff9feba21f310e22fb2945c564c1d41b 100644 (file)
@@ -8,28 +8,38 @@
 #ifndef _VXWORKS_H_
 #define _VXWORKS_H_
 
-int do_bootvx(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
-
 /*
- * Use bootaddr to find the location in memory that VxWorks
- * will look for the bootline string. The default value for
- * PowerPC is LOCAL_MEM_LOCAL_ADRS + BOOT_LINE_OFFSET which
- * defaults to 0x4200
+ * VxWorks x86 E820 related stuff
+ *
+ * VxWorks on x86 gets E820 information from pre-defined address @
+ * 0x4a00 and 0x4000. At 0x4a00 it's an information table defined
+ * by VxWorks and the actual E820 table entries starts from 0x4000.
+ * As defined by the BIOS E820 spec, the maximum number of E820 table
+ * entries is 128 and each entry occupies 20 bytes, so it's 128 * 20
+ * = 2560 (0xa00) bytes in total. That's where VxWorks stores some
+ * information that is retrieved from the BIOS E820 call and saved
+ * later for sanity test during the kernel boot-up.
  */
-#ifndef CONFIG_SYS_VXWORKS_BOOT_ADDR
-#define CONFIG_SYS_VXWORKS_BOOT_ADDR 0x4200
-#endif
+#define VXWORKS_E820_DATA_ADDR 0x4000
+#define VXWORKS_E820_INFO_ADDR 0x4a00
 
-#ifndef CONFIG_SYS_VXWORKS_BOOT_DEVICE
-#if defined(CONFIG_4xx)
-#define                CONFIG_SYS_VXWORKS_BOOT_DEVICE "emac(0,0)"
-#else
-#define                CONFIG_SYS_VXWORKS_BOOT_DEVICE "eth(0,0)"
-#endif
-#endif
+/* E820 info signatiure "SMAP" - System MAP */
+#define E820_SIGNATURE 0x534d4150
 
-#ifndef CONFIG_SYS_VXWORKS_SERVERNAME
-#define CONFIG_SYS_VXWORKS_SERVERNAME  "srv"
-#endif
+struct e820info {
+       u32 sign;       /* "SMAP" signature */
+       u32 x0;         /* don't care, used by VxWorks */
+       u32 x1;         /* don't care, used by VxWorks */
+       u32 x2;         /* don't care, used by VxWorks */
+       u32 addr;       /* last e820 table entry addr */
+       u32 x3;         /* don't care, used by VxWorks */
+       u32 entries;    /* e820 table entry count */
+       u32 error;      /* must be zero */
+};
+
+int do_bootvx(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
+void boot_prep_vxworks(bootm_headers_t *images);
+void boot_jump_vxworks(bootm_headers_t *images);
+void do_bootvx_fdt(bootm_headers_t *images);
 
 #endif