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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-3.0/] [packages/] [hal/] [openrisc/] [arch/] [current/] [include/] [openrisc_stub.h] - Blame information for rev 791

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

Line No. Rev Author Line
1 786 skrzyp
//========================================================================
2
//
3
//      openrisc_stub.h
4
//
5
//      OpenRISC-specific definitions for remote debugging via gdb
6
//
7
//========================================================================
8
// ####ECOSGPLCOPYRIGHTBEGIN####                                            
9
// -------------------------------------------                              
10
// This file is part of eCos, the Embedded Configurable Operating System.   
11
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
12
//
13
// eCos is free software; you can redistribute it and/or modify it under    
14
// the terms of the GNU General Public License as published by the Free     
15
// Software Foundation; either version 2 or (at your option) any later      
16
// version.                                                                 
17
//
18
// eCos is distributed in the hope that it will be useful, but WITHOUT      
19
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or    
20
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License    
21
// for more details.                                                        
22
//
23
// You should have received a copy of the GNU General Public License        
24
// along with eCos; if not, write to the Free Software Foundation, Inc.,    
25
// 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.            
26
//
27
// As a special exception, if other files instantiate templates or use      
28
// macros or inline functions from this file, or you compile this file      
29
// and link it with other works to produce a work based on this file,       
30
// this file does not by itself cause the resulting work to be covered by   
31
// the GNU General Public License. However the source code for this file    
32
// must still be made available in accordance with section (3) of the GNU   
33
// General Public License v2.                                               
34
//
35
// This exception does not invalidate any other reasons why a work based    
36
// on this file might be covered by the GNU General Public License.         
37
// -------------------------------------------                              
38
// ####ECOSGPLCOPYRIGHTEND####                                              
39
//========================================================================
40
//#####DESCRIPTIONBEGIN####
41
//
42
// Author(s):   sfurman
43
// Contributors:Red Hat, nickg, dmoseley
44
// Date:        2003-02-18
45
// Purpose:     OpenRISC-specific definitions for gdb stubs support
46
//              
47
//
48
//####DESCRIPTIONEND####
49
//
50
//=============================================================================
51
 
52
#ifndef CYGONCE_HAL_OPENRISC_STUB_H
53
#define CYGONCE_HAL_OPENRISC_STUB_H
54
 
55
#include <pkgconf/system.h>
56
#include <pkgconf/hal.h>
57
 
58
#ifdef CYGPKG_IO_SERIAL
59
#include <pkgconf/io_serial.h>
60
#endif
61
 
62
#include <cyg/hal/hal_diag.h>
63
 
64
#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
65
 
66
#include <cyg/infra/cyg_type.h>         // CYG_UNUSED_PARAM, externC
67
 
68
#define HAL_STUB_PLATFORM_INIT_SERIAL()       HAL_DIAG_INIT()
69
 
70
#define HAL_STUB_PLATFORM_GET_CHAR()                                        \
71
((cyg_int8)({                                                               \
72
    cyg_int8 _ch_;                                                          \
73
    HAL_DIAG_READ_CHAR(_ch_);                                               \
74
    _ch_;                                                                   \
75
}))
76
 
77
#define HAL_STUB_PLATFORM_PUT_CHAR(c)         HAL_DIAG_WRITE_CHAR((c))
78
 
79
#define HAL_STUB_PLATFORM_SET_BAUD_RATE(baud) CYG_UNUSED_PARAM(int,(baud))
80
 
81
#define HAL_STUB_PLATFORM_RESET()             HAL_DIAG_INIT()
82
 
83
#define HAL_STUB_PLATFORM_INIT()              HAL_DIAG_INIT()
84
 
85
#endif // ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
86
 
87
// 32 GPRs + 32 VFRs + PC reg + SR reg
88
#define NUMREGS 66
89
 
90
// VFR regs are unimplemented so they are 0 bytes in length
91
#define REGSIZE( _x_ ) ((((_x_) <= R31) || ((_x_) > VFR31)) ? 4 : 0)
92
 
93
typedef unsigned long target_register_t;
94
 
95
enum regnames {
96
     R0,   SP,   R2,   R3,   R4,   R5,   R6,   R7,
97
     R8,   R9,  R10,  R11,  R12,  R13,  R14,  R15,
98
    R16,  R17,  R18,  R19,  R20,  R21,  R22,  R23,
99
    R24,  R25,  R26,  R27,  R28,  R29,  R30,  R31,
100
 
101
 
102
     // Vector/Float registers, which are as yet unimplemented,
103
     // but defined in the or32 gdb back-end.
104
 
105
    VFR0,  VFR1,  VFR2,  VFR3,  VFR4,  VFR5,  VFR6,  VFR7,
106
    VFR8,  VFR9, VFR10, VFR11, VFR12, VFR13, VFR14, VFR15,
107
   VFR16, VFR17, VFR18, VFR19, VFR20, VFR21, VFR22, VFR23,
108
   VFR24, VFR25, VFR26, VFR27, VFR28, VFR29, VFR30, VFR31,
109
 
110
     // Special-purpose registers
111
      PC,    SR
112
};
113
 
114
typedef enum regnames regnames_t;
115
 
116
// Override generic stubs get_register() and use arch-specific version
117
#define CYGARC_STUB_REGISTER_ACCESS_DEFINED
118
 
119
#if defined(CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT) || defined(CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT)
120
#define HAL_GET_PROFILE_INFO( _thepc_, _thesp_ )                \
121
    CYG_MACRO_START                                             \
122
    extern HAL_SavedRegisters *hal_saved_interrupt_state;       \
123
    if ( hal_saved_interrupt_state ) {                          \
124
        (_thepc_) = (char *)(hal_saved_interrupt_state->pc);    \
125
        (_thesp_) = (char *)(hal_saved_interrupt_state->sp);    \
126
    }                                                           \
127
    CYG_MACRO_END
128
#endif
129
 
130
/* Given a trap value TRAP, return the corresponding signal. */
131
externC int __computeSignal (unsigned int trap_number);
132
 
133
/* Return the trap number corresponding to the last-taken trap. */
134
externC int __get_trap_number (void);
135
 
136
/* Return the currently-saved value corresponding to register REG. */
137
externC target_register_t get_register (regnames_t reg);
138
 
139
/* Store VALUE in the register corresponding to WHICH. */
140
externC void put_register (regnames_t which, target_register_t value);
141
 
142
/* Set the currently-saved pc register value to PC. This also updates NPC
143
   as needed. */
144
externC void set_pc (target_register_t pc);
145
 
146
/* Set things up so that the next user resume will execute one instruction.
147
   This may be done by setting breakpoints or setting a single step flag
148
   in the saved user registers, for example. */
149
externC void __single_step (void);
150
 
151
/* Clear the single-step state. */
152
externC void __clear_single_step (void);
153
 
154
/* If the breakpoint we hit is in the breakpoint() instruction, return a
155
   non-zero value. */
156
externC int __is_breakpoint_function (void);
157
 
158
/* Skip the current instruction. */
159
externC void __skipinst (void);
160
 
161
externC void __install_breakpoints (void);
162
 
163
externC void __clear_breakpoints (void);
164
 
165
#endif // ifndef CYGONCE_HAL_OPENRISC_STUB_H
166
 
167
// EOF openrisc_stub.h

powered by: WebSVN 2.1.0

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