|
@@ -217,6 +217,49 @@ extern char console_buffer[];
|
|
|
/* arch/$(ARCH)/lib/board.c */
|
|
|
void board_init_f(ulong);
|
|
|
void board_init_r(gd_t *, ulong) __attribute__ ((noreturn));
|
|
|
+
|
|
|
+/**
|
|
|
+ * board_init_f_mem() - Allocate global data and set stack position
|
|
|
+ *
|
|
|
+ * This function is called by each architecture very early in the start-up
|
|
|
+ * code to set up the environment for board_init_f(). It allocates space for
|
|
|
+ * global_data (see include/asm-generic/global_data.h) and places the stack
|
|
|
+ * below this.
|
|
|
+ *
|
|
|
+ * This function requires a stack[1] Normally this is at @top. The function
|
|
|
+ * starts allocating space from 64 bytes below @top. First it creates space
|
|
|
+ * for global_data. Then it calls arch_setup_gd() which sets gd to point to
|
|
|
+ * the global_data space and can reserve additional bytes of space if
|
|
|
+ * required). Finally it allocates early malloc() memory
|
|
|
+ * (CONFIG_SYS_MALLOC_F_LEN). The new top of the stack is just below this,
|
|
|
+ * and it returned by this function.
|
|
|
+ *
|
|
|
+ * [1] Strictly speaking it would be possible to implement this function
|
|
|
+ * in C on many archs such that it does not require a stack. However this
|
|
|
+ * does not seem hugely important as only 64 byte are wasted. The 64 bytes
|
|
|
+ * are used to handle the calling standard which generally requires pushing
|
|
|
+ * addresses or registers onto the stack. We should be able to get away with
|
|
|
+ * less if this becomes important.
|
|
|
+ *
|
|
|
+ * @top: Top of available memory, also normally the top of the stack
|
|
|
+ * @return: New stack location
|
|
|
+ */
|
|
|
+ulong board_init_f_mem(ulong top);
|
|
|
+
|
|
|
+/**
|
|
|
+ * arch_setup_gd() - Set up the global_data pointer
|
|
|
+ *
|
|
|
+ * This pointer is special in some architectures and cannot easily be assigned
|
|
|
+ * to. For example on x86 it is implemented by adding a specific record to its
|
|
|
+ * Global Descriptor Table! So we we provide a function to carry out this task.
|
|
|
+ * For most architectures this can simply be:
|
|
|
+ *
|
|
|
+ * gd = gd_ptr;
|
|
|
+ *
|
|
|
+ * @gd_ptr: Pointer to global data
|
|
|
+ */
|
|
|
+void arch_setup_gd(gd_t *gd_ptr);
|
|
|
+
|
|
|
int checkboard(void);
|
|
|
int show_board_info(void);
|
|
|
int checkflash(void);
|