1 #ifndef CYGONCE_HAL_HALBOOT_SI /* -*-asm-*- */
2 #define CYGONCE_HAL_HALBOOT_SI
3 // ====================================================================
5 // <platform>/halboot.si
7 // HAL bootup platform-oriented code (assembler)
9 // ====================================================================
10 //####ECOSGPLCOPYRIGHTBEGIN####
11 // -------------------------------------------
12 // This file is part of eCos, the Embedded Configurable Operating System.
13 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
15 // eCos is free software; you can redistribute it and/or modify it under
16 // the terms of the GNU General Public License as published by the Free
17 // Software Foundation; either version 2 or (at your option) any later version.
19 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY
20 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
24 // You should have received a copy of the GNU General Public License along
25 // with eCos; if not, write to the Free Software Foundation, Inc.,
26 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
28 // As a special exception, if other files instantiate templates or use macros
29 // or inline functions from this file, or you compile this file and link it
30 // with other works to produce a work based on this file, this file does not
31 // by itself cause the resulting work to be covered by the GNU General Public
32 // License. However the source code for this file must still be made available
33 // in accordance with section (3) of the GNU General Public License.
35 // This exception does not invalidate any other reasons why a work based on
36 // this file might be covered by the GNU General Public License.
38 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
39 // at http://sources.redhat.com/ecos/ecos-license/
40 // -------------------------------------------
41 //####ECOSGPLCOPYRIGHTEND####
42 // ====================================================================
43 //#####DESCRIPTIONBEGIN####
48 // Purpose: Bootup code, platform oriented.
51 //####DESCRIPTIONEND####
53 // ====================================================================
55 // External Platform Initial Setup
57 // This should set up RAM and caches, and calm down any external
60 // It is just plain included in vectors.S
62 // RAM has not yet been touched at all; in fact all you have is a
63 // register window selected.
66 ! Empty macro for debugging vectors.S
71 set 0x01f80000, %l0 ! MEC register base address
72 ld [%l0], %l1 ! Check if MEC has been initialised
73 set 0xfe080000, %l2 ! by checking baud rate register
78 ! Set memory according to simulator config
80 st %g0, [%l0 + 0x64] ! Disable watchdog for now
83 st %g1, [%l0] ! Enable power down
84 st %g0, [%l0 + 0x18] ! No waitstates
85 ld [%l0 + 0xF8], %g1 ! load simulator rom size
87 srl %g1, 17, %g1 ! calculate appropriate MEC rom size
94 ld [%l0 + 0xF4], %g2 ! load simulator ram size
95 srl %g2, 18, %g1 ! calculate appropriate MEC ram size
102 st %l2, [%l0 + 0x10] ! program MEC memory config register
107 ! st %g0, [%sp] ! probe for FPU
111 st %l1, [%l0 + 0x84] ! RTC scaler = 13
114 set reset_vector, %g1
116 st %l1, [%g1 + 0x7c0] ! Store TCR mirror
117 st %l1, [%l0 + 0x98] ! Start RTC
122 ! then copy the branch instructions into the vector
124 andn %g1, 0xfff, %g1 ! clear non-address bits
125 sethi %hi(real_vector_instructions), %l0
126 or %l0, %lo(real_vector_instructions), %l0
128 st %l1, [ %g1 ] ! into the vector
130 st %l1, [ %g1 + 4 ] ! into the vector
132 #endif /* CYGONCE_HAL_HALBOOT_SI */