annotate packages/hal/powerpc/mpc8xx/current/src/var_misc.c @ 3292:7f8e529b4d82 default tip

Fix FREESCALE_EDMA_NBYTES_MLOFFYES_MLOFF() so it works with negative offsets.
author vae
date Wed, 29 Apr 2015 23:31:48 +0000
parents 74dbf4c3f2e1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
70
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
1 //==========================================================================
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
2 //
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
3 // var_misc.c
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
4 //
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
5 // HAL implementation miscellaneous functions
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
6 //
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
7 //==========================================================================
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
8 // ####ECOSGPLCOPYRIGHTBEGIN####
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
9 // -------------------------------------------
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
10 // This file is part of eCos, the Embedded Configurable Operating System.
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 103
diff changeset
12 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
13 // eCos is free software; you can redistribute it and/or modify it under
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
14 // the terms of the GNU General Public License as published by the Free
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
15 // Software Foundation; either version 2 or (at your option) any later
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
16 // version.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 103
diff changeset
17 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
18 // eCos is distributed in the hope that it will be useful, but WITHOUT
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
19 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
20 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
21 // for more details.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 103
diff changeset
22 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
23 // You should have received a copy of the GNU General Public License
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
24 // along with eCos; if not, write to the Free Software Foundation, Inc.,
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
25 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 103
diff changeset
26 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
27 // As a special exception, if other files instantiate templates or use
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
28 // macros or inline functions from this file, or you compile this file
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
29 // and link it with other works to produce a work based on this file,
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
30 // this file does not by itself cause the resulting work to be covered by
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
31 // the GNU General Public License. However the source code for this file
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
32 // must still be made available in accordance with section (3) of the GNU
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
33 // General Public License v2.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 103
diff changeset
34 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
35 // This exception does not invalidate any other reasons why a work based
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
36 // on this file might be covered by the GNU General Public License.
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
37 // -------------------------------------------
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1914
diff changeset
38 // ####ECOSGPLCOPYRIGHTEND####
70
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
39 //==========================================================================
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
40 //#####DESCRIPTIONBEGIN####
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
41 //
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
42 // Author(s): jskov
420
d35f86833a7c Fix copyright.
gthomas
parents: 210
diff changeset
43 // Contributors: jskov, gthomas
70
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
44 // Date: 2000-02-04
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
45 // Purpose: HAL miscellaneous functions
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
46 // Description: This file contains miscellaneous functions provided by the
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
47 // HAL.
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
48 //
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
49 //####DESCRIPTIONEND####
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
50 //
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
51 //==========================================================================
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
52
72
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
53 #include <pkgconf/hal.h>
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
54
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
55 #define CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
56 #include <cyg/hal/ppc_regs.h>
948
83ca3aef4a92 Adjust configuration for MPC852T platforms
gthomas
parents: 860
diff changeset
57 #include <cyg/hal/quicc/ppc8xx.h>
82
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
58 #include <cyg/infra/cyg_type.h> // types
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
59 #include <cyg/infra/diag.h> // diag_printf
72
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
60
82
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
61 #include <cyg/hal/hal_mem.h> // some of the functions defined here
72
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
62
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
63 //--------------------------------------------------------------------------
82
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
64 void
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
65 hal_variant_init(void)
70
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
66 {
82
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
67 // Disable serialization
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
68 {
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
69 cyg_uint32 ictrl;
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
70 CYGARC_MFSPR (ICTRL, ictrl);
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
71 ictrl |= ICTRL_NOSERSHOW;
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
72 CYGARC_MTSPR (ICTRL, ictrl);
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
73 }
806
561295f7b8e7 Always reset CPM.
gthomas
parents: 804
diff changeset
74
812
515a36c8eb9d Improve handling of CPM/DPRAM aloocation.
gthomas
parents: 806
diff changeset
75 #ifndef CYGSEM_HAL_USE_ROM_MONITOR
804
c309f36b6de9 Better CPM/DPRAM handling. Fix minor bug in hal_diag_putc().
gthomas
parents: 426
diff changeset
76 // Reset CPM
c309f36b6de9 Better CPM/DPRAM handling. Fix minor bug in hal_diag_putc().
gthomas
parents: 426
diff changeset
77 _mpc8xx_reset_cpm();
812
515a36c8eb9d Improve handling of CPM/DPRAM aloocation.
gthomas
parents: 806
diff changeset
78 #endif
82
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
79 }
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
80
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
81 //--------------------------------------------------------------------------
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
82 // Variant specific idle thread action.
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
83 bool
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
84 hal_variant_idle_thread_action( cyg_uint32 count )
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
85 {
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
86 #if 0
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
87 cyg_uint32 *psivec = (cyg_uint32*)CYGARC_REG_IMM_SIVEC ;
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
88 cyg_uint32 *psimask = (cyg_uint32*)CYGARC_REG_IMM_SIMASK;
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
89 cyg_uint32 *psipend = (cyg_uint32*)CYGARC_REG_IMM_SIPEND;
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
90 cyg_uint16 *ptbscr = (cyg_uint16*)CYGARC_REG_IMM_TBSCR;
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
91
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
92 diag_printf( "TBSCR %04x, vec %d: sivec %08x, simask %08x, sipend %08x\n",
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
93 (cyg_uint32)(*ptbscr), (*psivec)>>26, *psivec,
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
94 *psimask, *psipend );
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
95 #endif
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
96
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
97 // Let architecture idle thread action run
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 72
diff changeset
98 return true;
70
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
99 }
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
100
72
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
101 //---------------------------------------------------------------------------
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
102 // Use MMU resources to map memory regions.
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
103 // Takes and returns an int used to ID the MMU resource to use. This ID
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
104 // is increased as resources are used and should be used for subsequent
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
105 // invocations.
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
106 //
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
107 // The MPC8xx CPUs do not have BATs. Fortunately we don't currently
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
108 // use the MMU, so we can simulate BATs by using the TLBs.
860
8e23fe1ac05e Improve processor type support. Add baud rate generator allocation.
gthomas
parents: 812
diff changeset
109
8e23fe1ac05e Improve processor type support. Add baud rate generator allocation.
gthomas
parents: 812
diff changeset
110 #if defined(CYGHWR_HAL_POWERPC_MPC8XX_860) || \
8e23fe1ac05e Improve processor type support. Add baud rate generator allocation.
gthomas
parents: 812
diff changeset
111 defined(CYGHWR_HAL_POWERPC_MPC8XX_860T) || \
8e23fe1ac05e Improve processor type support. Add baud rate generator allocation.
gthomas
parents: 812
diff changeset
112 defined(CYGHWR_HAL_POWERPC_MPC8XX_852T) || \
8e23fe1ac05e Improve processor type support. Add baud rate generator allocation.
gthomas
parents: 812
diff changeset
113 defined(CYGHWR_HAL_POWERPC_MPC8XX_855T) || \
8e23fe1ac05e Improve processor type support. Add baud rate generator allocation.
gthomas
parents: 812
diff changeset
114 defined(CYGHWR_HAL_POWERPC_MPC8XX_862T) || \
1171
02b328ea4e09 New platform and variant support for A&M Rattler (MPC8250)
gthomas
parents: 948
diff changeset
115 defined(CYGHWR_HAL_POWERPC_MPC8XX_866T) || \
860
8e23fe1ac05e Improve processor type support. Add baud rate generator allocation.
gthomas
parents: 812
diff changeset
116 defined(CYGHWR_HAL_POWERPC_MPC8XX_862P)
8e23fe1ac05e Improve processor type support. Add baud rate generator allocation.
gthomas
parents: 812
diff changeset
117 #define NUM_TLBS 32
8e23fe1ac05e Improve processor type support. Add baud rate generator allocation.
gthomas
parents: 812
diff changeset
118 #elif defined(CYGHWR_HAL_POWERPC_MPC8XX_823) || defined(CYGHWR_HAL_POWERPC_MPC8XX_850)
8e23fe1ac05e Improve processor type support. Add baud rate generator allocation.
gthomas
parents: 812
diff changeset
119 #define NUM_TLBS 8
8e23fe1ac05e Improve processor type support. Add baud rate generator allocation.
gthomas
parents: 812
diff changeset
120 #else
8e23fe1ac05e Improve processor type support. Add baud rate generator allocation.
gthomas
parents: 812
diff changeset
121 #error Missing TLB information for this platform
8e23fe1ac05e Improve processor type support. Add baud rate generator allocation.
gthomas
parents: 812
diff changeset
122 #endif
8e23fe1ac05e Improve processor type support. Add baud rate generator allocation.
gthomas
parents: 812
diff changeset
123
72
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
124 int
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
125 cyg_hal_map_memory (int id,CYG_ADDRESS virt, CYG_ADDRESS phys,
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
126 cyg_int32 size, cyg_uint8 flags)
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
127 {
103
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 82
diff changeset
128 cyg_uint32 epn, rpn, twc, ctr = 0;
72
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
129
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
130 epn = (virt & MI_EPN_EPNMASK) | MI_EPN_EV;
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
131 rpn = ((phys & MI_RPN_RPNMASK)
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
132 | MI_RPN_PPRWRW | MI_RPN_LPS | MI_RPN_SH | MI_RPN_V);
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
133 if (flags & CYGARC_MEMDESC_CI)
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
134 rpn |= MI_RPN_CI;
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
135
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
136 twc = MI_TWC_PS8MB | MI_TWC_V;
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
137 if (flags & CYGARC_MEMDESC_GUARDED)
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
138 twc |= MI_TWC_G;
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
139
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
140 // Ignore attempts to use more than max_tlbs.
860
8e23fe1ac05e Improve processor type support. Add baud rate generator allocation.
gthomas
parents: 812
diff changeset
141 while (id < NUM_TLBS && size > 0) {
72
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
142 ctr = id << MI_CTR_INDX_SHIFT;
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
143
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
144 // Instruction TLB.
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
145 CYGARC_MTSPR (MI_TWC, twc);
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
146 CYGARC_MTSPR (MI_CTR, ctr);
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
147 CYGARC_MTSPR (MI_EPN, epn);
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
148 CYGARC_MTSPR (MI_RPN, rpn);
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
149
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
150 // Data TLB.
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
151 {
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
152 cyg_uint32 drpn;
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
153
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
154 // Need to mark data page as changed or an exception
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
155 // will be generated on first write to the page.
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
156 drpn = rpn | MD_RPN_CHANGED;
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
157
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
158 CYGARC_MTSPR (MD_TWC, twc);
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
159 CYGARC_MTSPR (MD_CTR, ctr);
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
160 CYGARC_MTSPR (MD_EPN, epn);
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
161 CYGARC_MTSPR (MD_RPN, drpn);
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
162 }
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
163
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
164 // Move to next 8MB block.
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
165 size -= 8*1024*1024;
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
166 epn += 8*1024*1024;
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
167 rpn += 8*1024*1024;
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
168 id++;
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
169 }
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
170
103
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 82
diff changeset
171 // Make caches default disabled when MMU is disabled.
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 82
diff changeset
172 CYGARC_MTSPR (MI_CTR, ctr | CYGARC_REG_MI_CTR_CIDEF);
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 82
diff changeset
173 CYGARC_MTSPR (MD_CTR, ctr | CYGARC_REG_MD_CTR_CIDEF);
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 82
diff changeset
174
72
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
175 return id;
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
176 }
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
177
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
178 // Initialize MMU to a sane (NOP) state.
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
179 //
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
180 // Initialize TLBs with 0, Valid bits unset.
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
181 void
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
182 cyg_hal_clear_MMU (void)
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
183 {
103
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 82
diff changeset
184 cyg_uint32 ctr = 0;
72
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
185 int id;
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
186
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
187 CYGARC_MTSPR (M_CASID, 0);
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
188
860
8e23fe1ac05e Improve processor type support. Add baud rate generator allocation.
gthomas
parents: 812
diff changeset
189 for (id = 0; id < NUM_TLBS; id++) {
72
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
190 ctr = id << MI_CTR_INDX_SHIFT;
103
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 82
diff changeset
191
72
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
192 // Instruction TLBs.
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
193 CYGARC_MTSPR (MI_TWC, 0);
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
194 CYGARC_MTSPR (MI_CTR, ctr);
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
195 CYGARC_MTSPR (MI_EPN, 0);
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
196 CYGARC_MTSPR (MI_RPN, 0);
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
197 // Data TLBs.
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
198 CYGARC_MTSPR (MD_TWC, 0);
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
199 CYGARC_MTSPR (MD_CTR, ctr);
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
200 CYGARC_MTSPR (MD_EPN, 0);
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
201 CYGARC_MTSPR (MD_RPN, 0);
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
202 }
103
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 82
diff changeset
203
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 82
diff changeset
204 // Make caches default disabled when MMU is disabled.
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 82
diff changeset
205 CYGARC_MTSPR (MI_CTR, ctr | CYGARC_REG_MI_CTR_CIDEF);
95f3e12a6327 Merge from eCos master repository on 2000-06-23-16:41:10-BST
jlarmour
parents: 82
diff changeset
206 CYGARC_MTSPR (MD_CTR, ctr | CYGARC_REG_MD_CTR_CIDEF);
72
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
207 }
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 70
diff changeset
208
425
cd7e3413ad01 Rework profile package to more closely follow standards
gthomas
parents: 423
diff changeset
209 #ifdef CYGPKG_PROFILE_GPROF
423
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
210 //--------------------------------------------------------------------------
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
211 //
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
212 // Profiling support - uses a separate high-speed timer
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
213 //
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
214
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
215 #include <cyg/hal/hal_arch.h>
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
216 #include <cyg/hal/hal_intr.h>
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
217 #include <cyg/hal/quicc/ppc8xx.h>
425
cd7e3413ad01 Rework profile package to more closely follow standards
gthomas
parents: 423
diff changeset
218 #include <cyg/profile/profile.h>
423
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
219
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
220 // Can't rely on Cyg_Interrupt class being defined.
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
221 #define Cyg_InterruptHANDLED 1
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
222
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
223 #define PIT_IRQ_LEVEL 4
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
224 #define PIT_IRQ CYGNUM_HAL_INTERRUPT_SIU_LVL4
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
225 #define ID_PIT 34512
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
226
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
227
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
228 // Periodic timer ISR.
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
229 static cyg_uint32
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
230 isr_pit(CYG_ADDRWORD vector, CYG_ADDRWORD data, HAL_SavedRegisters *regs)
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
231 {
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
232
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
233 HAL_INTERRUPT_ACKNOWLEDGE (CYGNUM_HAL_INTERRUPT_SIU_PIT);
426
adaa3da3f4e7 Changes in profiling API.
gthomas
parents: 425
diff changeset
234 __profile_hit(regs->pc);
423
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
235
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
236 return Cyg_InterruptHANDLED;
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
237 }
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
238
1914
d485b9fe6131 Adjust HALs to match the updated gprof support
bartv
parents: 1755
diff changeset
239 int
423
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
240 hal_enable_profile_timer(int resolution)
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
241 {
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
242 // Run periodic timer interrupt for profile
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
243 cyg_uint16 piscr;
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
244 int period = resolution / 100;
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
245
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
246 // Attach pit arbiter.
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
247 HAL_INTERRUPT_ATTACH (PIT_IRQ,
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
248 &hal_arbitration_isr_pit, ID_PIT, 0);
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
249 HAL_INTERRUPT_UNMASK (PIT_IRQ);
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
250
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
251 // Attach pit isr.
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
252 HAL_INTERRUPT_ATTACH (CYGNUM_HAL_INTERRUPT_SIU_PIT, &isr_pit,
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
253 ID_PIT, 0);
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
254 HAL_INTERRUPT_SET_LEVEL (CYGNUM_HAL_INTERRUPT_SIU_PIT, PIT_IRQ_LEVEL);
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
255 HAL_INTERRUPT_UNMASK (CYGNUM_HAL_INTERRUPT_SIU_PIT);
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
256
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
257
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
258 // Set period.
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
259 HAL_WRITE_UINT32 (CYGARC_REG_IMM_PITC,
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
260 (2*period) << CYGARC_REG_IMM_PITC_COUNT_SHIFT);
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
261
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
262 // Enable.
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
263 HAL_READ_UINT16 (CYGARC_REG_IMM_PISCR, piscr);
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
264 piscr |= CYGARC_REG_IMM_PISCR_PTE;
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
265 HAL_WRITE_UINT16 (CYGARC_REG_IMM_PISCR, piscr);
1914
d485b9fe6131 Adjust HALs to match the updated gprof support
bartv
parents: 1755
diff changeset
266
d485b9fe6131 Adjust HALs to match the updated gprof support
bartv
parents: 1755
diff changeset
267 return resolution;
423
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
268 }
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
269 #endif
d175f4be3ab6 Support for application profiling.
gthomas
parents: 420
diff changeset
270
70
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
271 //--------------------------------------------------------------------------
c5536bad4c24 Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff changeset
272 // End of var_misc.c