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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [rtos/] [ecos-2.0/] [packages/] [hal/] [synth/] [arch/] [v2_0/] [include/] [hal_arch.h] - Blame information for rev 174

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 27 unneback
#ifndef CYGONCE_HAL_HAL_ARCH_H
2
#define CYGONCE_HAL_HAL_ARCH_H
3
 
4
//=============================================================================
5
//
6
//      hal_arch.h
7
//
8
//      Architecture specific abstractions for synthetic target.
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
//
16
// eCos is free software; you can redistribute it and/or modify it under
17
// the terms of the GNU General Public License as published by the Free
18
// Software Foundation; either version 2 or (at your option) any later version.
19
//
20
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
21
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
22
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
23
// for more details.
24
//
25
// You should have received a copy of the GNU General Public License along
26
// with eCos; if not, write to the Free Software Foundation, Inc.,
27
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
28
//
29
// As a special exception, if other files instantiate templates or use macros
30
// or inline functions from this file, or you compile this file and link it
31
// with other works to produce a work based on this file, this file does not
32
// by itself cause the resulting work to be covered by the GNU General Public
33
// License. However the source code for this file must still be made available
34
// in accordance with section (3) of the GNU General Public License.
35
//
36
// This exception does not invalidate any other reasons why a work based on
37
// this file might be covered by the GNU General Public License.
38
//
39
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
40
// at http://sources.redhat.com/ecos/ecos-license/
41
// -------------------------------------------
42
//####ECOSGPLCOPYRIGHTEND####
43
//=============================================================================
44
//#####DESCRIPTIONBEGIN####
45
//
46
// Author(s):   proven
47
// Contributors:proven, pjo, nickg,bartv
48
// Date:        1998-10-05
49
// Purpose:     Define architecture abstractions
50
// Usage:       #include <cyg/hal/hal_arch.h>
51
//
52
//####DESCRIPTIONEND####
53
//
54
//=============================================================================
55
 
56
// ----------------------------------------------------------------------------
57
// Architectural definitions such as processor save state information.
58
// For the synthetic target most of this information has to be
59
// provided by the variant HALs.
60
 
61
#include <cyg/hal/var_arch.h>
62
 
63
//-----------------------------------------------------------------------------
64
// Exception handling function.
65
// This function is provided by either the kernel or the common HAL to
66
// deliver an exception to the current thread.
67
// NOTE: the declaration should move to a common package. 
68
externC void cyg_hal_deliver_exception( CYG_WORD code, CYG_ADDRWORD data );
69
 
70
//-----------------------------------------------------------------------------
71
// Execution reorder barrier.
72
// When optimizing the compiler can reorder code. In multithreaded systems
73
// where the order of actions is vital, this can sometimes cause problems.
74
// This macro may be inserted into places where reordering should not happen.
75
 
76
#define HAL_REORDER_BARRIER() asm volatile ( "" : : : "memory" )
77
 
78
//-----------------------------------------------------------------------------
79
// Idle thread code.
80
// This macro is called in the idle thread loop, and gives the HAL the
81
// chance to insert code. In the synthetic target it involves blocking
82
// until there is a signal.
83
 
84
externC void hal_idle_thread_action(cyg_uint32 loop_count);
85
 
86
#define HAL_IDLE_THREAD_ACTION(_count_) hal_idle_thread_action(_count_)
87
 
88
//--------------------------------------------------------------------------
89
#endif // CYGONCE_HAL_HAL_ARCH_H
90
// End of hal_arch.h

powered by: WebSVN 2.1.0

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