blob: bc7641a8081f07a6a8778a493ccaa7a5835bb58a [file] [log] [blame]
Simon Glass4b0730d2011-09-26 14:10:39 +00001/*
2 * Copyright (c) 2011 The Chromium OS Authors.
Wolfgang Denk1a459662013-07-08 09:37:19 +02003 * SPDX-License-Identifier: GPL-2.0+
Simon Glass4b0730d2011-09-26 14:10:39 +00004 */
5
6#include <common.h>
Simon Glass7a9219c2011-10-03 19:26:44 +00007#include <os.h>
Simon Glass4b0730d2011-09-26 14:10:39 +00008
9DECLARE_GLOBAL_DATA_PTR;
10
Simon Glass88bd0e92013-11-10 10:27:00 -070011void reset_cpu(ulong ignored)
Simon Glass4b0730d2011-09-26 14:10:39 +000012{
Simon Glass7a9219c2011-10-03 19:26:44 +000013 /* This is considered normal termination for now */
14 os_exit(0);
Simon Glass88bd0e92013-11-10 10:27:00 -070015}
16
17int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
18{
19 reset_cpu(0);
20
Simon Glass4b0730d2011-09-26 14:10:39 +000021 return 0;
22}
23
24/* delay x useconds */
25void __udelay(unsigned long usec)
26{
Matthias Weisserd99a6872011-11-29 12:16:40 +010027 os_usleep(usec);
Simon Glass4b0730d2011-09-26 14:10:39 +000028}
29
Simon Glasse2ee1002013-06-11 11:14:44 -070030unsigned long __attribute__((no_instrument_function)) timer_get_us(void)
Simon Glass4b0730d2011-09-26 14:10:39 +000031{
Matthias Weisserd99a6872011-11-29 12:16:40 +010032 return os_get_nsec() / 1000;
Simon Glass4b0730d2011-09-26 14:10:39 +000033}
34
35int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
36{
Simon Glass88bd0e92013-11-10 10:27:00 -070037 if (flag & (BOOTM_STATE_OS_GO | BOOTM_STATE_OS_FAKE_GO)) {
38 bootstage_mark(BOOTSTAGE_ID_RUN_OS);
39 printf("## Transferring control to Linux (at address %08lx)...\n",
40 images->ep);
41 reset_cpu(0);
42 }
43
44 return 0;
Simon Glass4b0730d2011-09-26 14:10:39 +000045}
46
47int cleanup_before_linux(void)
48{
49 return 0;
50}
51
52void *map_physmem(phys_addr_t paddr, unsigned long len, unsigned long flags)
53{
Simon Glass8ee666a2012-12-13 20:49:11 +000054 return (void *)(gd->arch.ram_buf + paddr);
Simon Glass4b0730d2011-09-26 14:10:39 +000055}
56
Simon Glass781adb52013-04-20 08:42:37 +000057phys_addr_t map_to_sysmem(void *ptr)
58{
59 return (u8 *)ptr - gd->arch.ram_buf;
60}
61
Simon Glass4b0730d2011-09-26 14:10:39 +000062void flush_dcache_range(unsigned long start, unsigned long stop)
63{
64}