source: rtems/bsps/powerpc/mvme3100/start/start.S @ fbcd7c8f

Last change on this file since fbcd7c8f was fbcd7c8f, checked in by Sebastian Huber <sebastian.huber@…>, on Apr 20, 2018 at 8:19:28 AM

bsps: Move start files to bsps

This patch is a part of the BSP source reorganization.

Update #3285.

  • Property mode set to 100644
File size: 2.3 KB
Line 
1/*
2 *  start.S :     RTEMS entry point
3 *
4 *  Copyright (C) 1999 Eric Valette. valette@crf.canon.fr
5 *
6 *  The license and distribution terms for this file may be
7 *  found in the file LICENSE in this distribution or at
8 *  http://www.rtems.org/license/LICENSE.
9 *
10 *  Modified for mvme3100 by T. Straumann, 2007.
11 *
12 */
13
14#include <rtems/asm.h>
15#include <rtems/score/cpu.h>
16#include <rtems/powerpc/powerpc.h>
17
18#include <bspopts.h>
19
20#define SYNC \
21        sync; \
22        isync
23
24#define KERNELBASE      0x0
25
26/* cannot include <bsp.h> from assembly :-( */
27#ifndef BSP_8540_CCSR_BASE
28#define BSP_8540_CCSR_BASE 0xe1000000
29#endif
30
31#define ERR_DISABLE_REG (BSP_8540_CCSR_BASE + 0x2e44)
32
33        .text
34        .globl  __rtems_entry_point
35        .type   __rtems_entry_point,@function
36__rtems_entry_point:
37        mr      r31,r3
38        mr      r30,r4
39        mr      r29,r5
40        mr      r28,r6
41        mr      r27,r7
42        /* disable checking for memory-select errors; motload has all TLBs
43         * mapping a possible larger area as memory (not-guarded, caching-enabled)
44         * than actual physical memory is available.
45         * In case of speculative loads this may cause 'memory-select' errors
46         * which seem to raise 'core_fault_in' (found no description in
47         * the manual but I experienced this problem).
48         * Such errors (if HID1[RFXE] is clear) may *stall* execution
49         * leading to mysterious 'hangs'.
50         * Note: enabling HID1[RFXE] at this point makes no sense since
51         *       exceptions are not configured yet. Therefore we disable
52         *       memory-select errors.
53         * Eventually (bspstart.c) we want to delete TLB entries for
54         * which no physical memory is present.
55         */
56        lis r3, ERR_DISABLE_REG@ha
57        lwz r4, ERR_DISABLE_REG@l(r3)
58        /* disable memory-select errors */
59        ori r4, r4, 1
60        stw r4, ERR_DISABLE_REG@l(r3)
61
62        /* Use MotLoad's TLB setup for now; caches are on already */
63        bl  __eabi      /* setup EABI and SYSV environment */
64        bl      zero_bss
65        /*
66         * restore original args
67         */
68        mr      r3,r31
69        mr      r4,r30
70        mr      r5,r29
71        mr      r6,r28
72        mr      r7,r27
73        bl      save_boot_params
74        addis   r9,r0, (__stack-PPC_MINIMUM_STACK_FRAME_SIZE)@ha
75        addi    r9,r9, (__stack-PPC_MINIMUM_STACK_FRAME_SIZE)@l
76        /* align down to 16-bytes */
77        li  r5, (CPU_STACK_ALIGNMENT - 1)
78        andc r1, r9, r5
79
80        /* NULL ptr to back chain */
81        li  r0, 0
82        stw r0, 0(r1)
83
84        /*
85         * We are now in a environment that is totally independent from
86         * bootloader setup.
87         */
88    /* pass result of 'save_boot_params' to 'boot_card' in R3 */
89        bl      boot_card
90        /* point of no return: reset board here ? */
Note: See TracBrowser for help on using the repository browser.