1 /* 2 * Copyright (c) 2011 The Chromium OS Authors. 3 * SPDX-License-Identifier: GPL-2.0+ 4 */ 5 6 #include <common.h> 7 #include <dm/root.h> 8 #include <os.h> 9 #include <asm/state.h> 10 11 DECLARE_GLOBAL_DATA_PTR; 12 13 void reset_cpu(ulong ignored) 14 { 15 if (state_uninit()) 16 os_exit(2); 17 18 if (dm_uninit()) 19 os_exit(2); 20 21 /* This is considered normal termination for now */ 22 os_exit(0); 23 } 24 25 int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) 26 { 27 reset_cpu(0); 28 29 return 0; 30 } 31 32 /* delay x useconds */ 33 void __udelay(unsigned long usec) 34 { 35 os_usleep(usec); 36 } 37 38 unsigned long __attribute__((no_instrument_function)) timer_get_us(void) 39 { 40 return os_get_nsec() / 1000; 41 } 42 43 int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images) 44 { 45 if (flag & (BOOTM_STATE_OS_GO | BOOTM_STATE_OS_FAKE_GO)) { 46 bootstage_mark(BOOTSTAGE_ID_RUN_OS); 47 printf("## Transferring control to Linux (at address %08lx)...\n", 48 images->ep); 49 reset_cpu(0); 50 } 51 52 return 0; 53 } 54 55 int cleanup_before_linux(void) 56 { 57 return 0; 58 } 59 60 void *map_physmem(phys_addr_t paddr, unsigned long len, unsigned long flags) 61 { 62 return (void *)(gd->arch.ram_buf + paddr); 63 } 64 65 phys_addr_t map_to_sysmem(const void *ptr) 66 { 67 return (u8 *)ptr - gd->arch.ram_buf; 68 } 69 70 void flush_dcache_range(unsigned long start, unsigned long stop) 71 { 72 } 73