File indexing completed on 2025-05-11 08:24:08
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 #ifndef LIBBSP_SPARC_LEON3_BSP_H
0029 #define LIBBSP_SPARC_LEON3_BSP_H
0030
0031 #include <bspopts.h>
0032 #include <bsp/default-initial-extension.h>
0033
0034 #include <rtems.h>
0035 #include <rtems/irq-extension.h>
0036
0037 #ifdef __cplusplus
0038 extern "C" {
0039 #endif
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052 #define LEON3 1
0053
0054 #define BSP_FEATURE_IRQ_EXTENSION
0055
0056
0057
0058
0059 void *bsp_idle_thread( uintptr_t ignored );
0060 #define BSP_IDLE_TASK_BODY bsp_idle_thread
0061
0062
0063 #define BSP_NUMBER_OF_TERMIOS_PORTS 8
0064
0065
0066
0067
0068 struct rtems_bsdnet_ifconfig;
0069 extern int rtems_leon_open_eth_driver_attach(
0070 struct rtems_bsdnet_ifconfig *config,
0071 int attach
0072 );
0073 extern int rtems_smc91111_driver_attach_leon3(
0074 struct rtems_bsdnet_ifconfig *config,
0075 int attach
0076 );
0077 extern int rtems_leon_greth_driver_attach(
0078 struct rtems_bsdnet_ifconfig *config,
0079 int attach
0080 );
0081
0082 #define RTEMS_BSP_NETWORK_DRIVER_NAME_OPENETH "open_eth1"
0083 #define RTEMS_BSP_NETWORK_DRIVER_ATTACH_OPENETH \
0084 rtems_leon_open_eth_driver_attach
0085 #define RTEMS_BSP_NETWORK_DRIVER_NAME_SMC91111 "smc_eth1"
0086 #define RTEMS_BSP_NETWORK_DRIVER_ATTACH_SMC91111 \
0087 rtems_smc91111_driver_attach_leon3
0088 #define RTEMS_BSP_NETWORK_DRIVER_NAME_GRETH "gr_eth1"
0089 #define RTEMS_BSP_NETWORK_DRIVER_ATTACH_GRETH \
0090 rtems_leon_greth_driver_attach
0091
0092 #ifndef RTEMS_BSP_NETWORK_DRIVER_NAME
0093 #define RTEMS_BSP_NETWORK_DRIVER_NAME RTEMS_BSP_NETWORK_DRIVER_NAME_GRETH
0094 #define RTEMS_BSP_NETWORK_DRIVER_ATTACH RTEMS_BSP_NETWORK_DRIVER_ATTACH_GRETH
0095 #endif
0096
0097 #define HAS_SMC91111
0098
0099
0100 #define GRETH_SUPPORTED
0101 #define GRETH_MEM_LOAD(addr) leon_r32_no_cache((uintptr_t)addr)
0102
0103 extern int CPU_SPARC_HAS_SNOOPING;
0104
0105
0106
0107
0108
0109
0110
0111 extern int RAM_START;
0112 extern int RAM_END;
0113 extern int RAM_SIZE;
0114
0115 extern int PROM_START;
0116 extern int PROM_END;
0117 extern int PROM_SIZE;
0118
0119 extern int CLOCK_SPEED;
0120
0121 extern int end;
0122
0123
0124
0125 rtems_isr_entry set_vector(
0126 rtems_isr_entry handler,
0127 rtems_vector_number vector,
0128 int type
0129 );
0130
0131 void BSP_fatal_exit(uint32_t error);
0132
0133
0134
0135
0136 void rtems_bsp_delay(int usecs);
0137
0138
0139 typedef void (*bsp_shared_isr)(void *arg);
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149
0150
0151 RTEMS_DEPRECATED static inline int BSP_shared_interrupt_register
0152 (
0153 int irq,
0154 const char *info,
0155 bsp_shared_isr isr,
0156 void *arg
0157 )
0158 {
0159 return rtems_interrupt_handler_install(irq, info,
0160 RTEMS_INTERRUPT_SHARED, isr, arg);
0161 }
0162
0163
0164
0165
0166
0167
0168
0169
0170 RTEMS_DEPRECATED static inline int BSP_shared_interrupt_unregister
0171 (
0172 int irq,
0173 bsp_shared_isr isr,
0174 void *arg
0175 )
0176 {
0177 return rtems_interrupt_handler_remove(irq, isr, arg);
0178 }
0179
0180
0181
0182
0183
0184
0185
0186
0187
0188 RTEMS_DEPRECATED static inline void BSP_shared_interrupt_clear( int irq )
0189 {
0190 (void) rtems_interrupt_clear( (rtems_vector_number) irq );
0191 }
0192
0193
0194
0195
0196
0197
0198
0199
0200 RTEMS_DEPRECATED static inline void BSP_shared_interrupt_unmask( int irq )
0201 {
0202 (void) rtems_interrupt_vector_enable( (rtems_vector_number) irq );
0203 }
0204
0205
0206
0207
0208
0209
0210
0211
0212 RTEMS_DEPRECATED static inline void BSP_shared_interrupt_mask( int irq )
0213 {
0214 (void) rtems_interrupt_vector_disable( (rtems_vector_number) irq );
0215 }
0216
0217 #if defined(RTEMS_SMP) || defined(RTEMS_MULTIPROCESSING)
0218
0219
0220
0221
0222 extern const unsigned char LEON3_mp_irq;
0223 #endif
0224
0225
0226
0227
0228
0229
0230 #define AMBAPPBUS_INFO_AVAIL
0231 #define APBUART_INFO_AVAIL
0232 #define GPTIMER_INFO_AVAIL
0233 #define GRETH_INFO_AVAIL
0234
0235 #ifdef __cplusplus
0236 }
0237 #endif
0238
0239
0240
0241 #endif