source: rtems/bsps/powerpc/gen83xx/start/bsprestart.c @ fe8b4b6c

Last change on this file since fe8b4b6c was fe8b4b6c, checked in by Joel Sherrill <joel@…>, on 07/11/22 at 22:28:07

bsps/powerpc/83xx: Change license to BSD-2

Updates #3053.

  • Property mode set to 100644
File size: 2.2 KB
Line 
1/* SPDX-License-Identifier: BSD-2-Clause */
2
3/*
4 * Copyright (c) 2008-2013 embedded brains GmbH.  All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 *    notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 *    notice, this list of conditions and the following disclaimer in the
13 *    documentation and/or other materials provided with the distribution.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 * POSSIBILITY OF SUCH DAMAGE.
26 */
27
28#include <bsp.h>
29#include <bsp/u-boot.h>
30
31#include <libcpu/powerpc-utility.h>
32
33void bsp_restart(void *addr)
34{
35  rtems_interrupt_level level;
36  void (*start)(void) = addr;
37  #ifdef HAS_UBOOT
38    const void *mem_begin = (const void *) bsp_uboot_board_info.bi_memstart;
39    size_t mem_size = bsp_uboot_board_info.bi_memsize;
40  #else /* HAS_UBOOT */
41    const void *mem_begin = bsp_ram_start;
42    size_t mem_size = (size_t) bsp_ram_size;
43  #endif /* HAS_UBOOT */
44  uint32_t hid0;
45
46  rtems_interrupt_disable(level);
47  (void) level; /* avoid set but not used warning */
48
49  hid0 = PPC_SPECIAL_PURPOSE_REGISTER(HID0);
50
51  if ((hid0 & HID0_DCE) != 0) {
52    rtems_cache_flush_multiple_data_lines(mem_begin, mem_size);
53  }
54
55  hid0 &= ~(HID0_DCE | HID0_ICE);
56
57  PPC_SET_SPECIAL_PURPOSE_REGISTER(HID0, hid0);
58
59  (*start)();
60}
Note: See TracBrowser for help on using the repository browser.