xref: /openbmc/u-boot/arch/microblaze/cpu/spl.c (revision 5c8fd32b)
1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3  * (C) Copyright 2013 - 2014 Xilinx, Inc
4  *
5  * Michal Simek <michal.simek@xilinx.com>
6  */
7 
8 #include <common.h>
9 #include <image.h>
10 #include <spl.h>
11 #include <asm/io.h>
12 #include <asm/u-boot.h>
13 
14 bool boot_linux;
15 
16 u32 spl_boot_device(void)
17 {
18 	return BOOT_DEVICE_NOR;
19 }
20 
21 /* Board initialization after bss clearance */
22 void spl_board_init(void)
23 {
24 	/* enable console uart printing */
25 	preloader_console_init();
26 }
27 
28 #ifdef CONFIG_SPL_OS_BOOT
29 void __noreturn jump_to_image_linux(struct spl_image_info *spl_image)
30 {
31 	debug("Entering kernel arg pointer: 0x%p\n", spl_image->arg);
32 	typedef void (*image_entry_arg_t)(char *, ulong, ulong)
33 		__attribute__ ((noreturn));
34 	image_entry_arg_t image_entry =
35 		(image_entry_arg_t)spl_image->entry_point;
36 
37 	image_entry(NULL, 0, (ulong)spl_image->arg);
38 }
39 #endif /* CONFIG_SPL_OS_BOOT */
40 
41 int spl_start_uboot(void)
42 {
43 #ifdef CONFIG_SPL_OS_BOOT
44 	if (boot_linux)
45 		return 0;
46 #endif
47 
48 	return 1;
49 }
50 
51 int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
52 {
53 	__asm__ __volatile__ ("mts rmsr, r0;" \
54 			      "bra r0");
55 
56 	return 0;
57 }
58