OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-2.0/] [packages/] [hal/] [powerpc/] [arch/] [v2_0/] [include/] [hal_mem.h] - Blame information for rev 27

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 27 unneback
#ifndef CYGONCE_HAL_MEM_H
2
#define CYGONCE_HAL_MEM_H
3
 
4
//=============================================================================
5
//
6
//      hal_mem.h
7
//
8
//      HAL memory control API
9
//
10
//=============================================================================
11
//####ECOSGPLCOPYRIGHTBEGIN####
12
// -------------------------------------------
13
// This file is part of eCos, the Embedded Configurable Operating System.
14
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
15
// Copyright (C) 2003 Gary Thomas
16
//
17
// eCos is free software; you can redistribute it and/or modify it under
18
// the terms of the GNU General Public License as published by the Free
19
// Software Foundation; either version 2 or (at your option) any later version.
20
//
21
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
22
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
23
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
24
// for more details.
25
//
26
// You should have received a copy of the GNU General Public License along
27
// with eCos; if not, write to the Free Software Foundation, Inc.,
28
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
29
//
30
// As a special exception, if other files instantiate templates or use macros
31
// or inline functions from this file, or you compile this file and link it
32
// with other works to produce a work based on this file, this file does not
33
// by itself cause the resulting work to be covered by the GNU General Public
34
// License. However the source code for this file must still be made available
35
// in accordance with section (3) of the GNU General Public License.
36
//
37
// This exception does not invalidate any other reasons why a work based on
38
// this file might be covered by the GNU General Public License.
39
//
40
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
41
// at http://sources.redhat.com/ecos/ecos-license/
42
// -------------------------------------------
43
//####ECOSGPLCOPYRIGHTEND####
44
//=============================================================================
45
//#####DESCRIPTIONBEGIN####
46
//
47
// Author(s):   nickg
48
// Contributors:nickg, jskov, hmt
49
// Date:        2000-02-11
50
// Purpose:     Memory control API
51
// Description: The macros defined here provide the HAL APIs for handling
52
//              simple memory management operations.
53
// Usage:
54
//              #include <cyg/hal/hal_mem.h>
55
//              ...
56
//              
57
//
58
//####DESCRIPTIONEND####
59
//
60
//=============================================================================
61
 
62
#include <pkgconf/hal.h>
63
#include <cyg/infra/cyg_type.h>
64
 
65
//=============================================================================
66
// Memory mapping
67
typedef struct {
68
    CYG_ADDRESS  virtual_addr;
69
    CYG_ADDRESS  physical_addr;
70
    cyg_int32    size;
71
    cyg_uint8    flags;
72
} cyg_memdesc_t;
73
 
74
// each variant HAL must provide these functions for mapping/clearing
75
// (simple BAT/TLB) memory mappings.
76
externC int
77
cyg_hal_map_memory (int id,CYG_ADDRESS virt, CYG_ADDRESS phys,
78
                    cyg_int32 size, cyg_uint8 flags);
79
externC void
80
cyg_hal_clear_MMU (void);
81
 
82
// each platform HAL must provide one of these to describe how memory
83
// should be mapped/cached, ideally weak aliased so that apps can override:
84
externC cyg_memdesc_t cyg_hal_mem_map[];
85
 
86
#define CYGARC_MEMDESC_CI       1       // cache inhibit
87
#define CYGARC_MEMDESC_GUARDED  2       // guarded
88
 
89
// these macros should ease that task, and ease any future extension of the
90
// structure (physical == virtual addresses):
91
#define CYGARC_MEMDESC_CACHE( _va_, _sz_ ) \
92
        { (_va_), (_va_), (_sz_), 0 }
93
 
94
#define CYGARC_MEMDESC_NOCACHE( _va_, _sz_ ) \
95
        { (_va_), (_va_), (_sz_), CYGARC_MEMDESC_CI }
96
 
97
#define CYGARC_MEMDESC_NOCACHE_PA( _va_, _pa_, _sz_ ) \
98
        { (_va_), (_pa_), (_sz_), CYGARC_MEMDESC_CI }
99
 
100
#define CYGARC_MEMDESC_CACHEGUARD( _va_, _sz_ ) \
101
        { (_va_), (_va_), (_sz_), CYGARC_MEMDESC_GUARDED }
102
 
103
#define CYGARC_MEMDESC_NOCACHEGUARD( _va_, _sz_ ) \
104
        { (_va_), (_va_), (_sz_), CYGARC_MEMDESC_GUARDED|CYGARC_MEMDESC_CI }
105
 
106
#define CYGARC_MEMDESC_TABLE_END      {0, 0, 0, 0}
107
#define CYGARC_MEMDESC_TABLE          cyg_memdesc_t cyg_hal_mem_map[]
108
#define CYGARC_MEMDESC_EMPTY_TABLE    { CYGARC_MEMDESC_TABLE_END }
109
 
110
//-----------------------------------------------------------------------------
111
#endif // ifndef CYGONCE_HAL_MEM_H
112
// End of hal_mem.h

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.