RTEMS 6.1-rc5
Loading...
Searching...
No Matches
Macros | Variables
leon.h File Reference

LEON3 BSP data types and macros. More...

#include <rtems.h>
#include <amba.h>
#include <grlib/io.h>
#include <bsp/leon3.h>

Go to the source code of this file.

Macros

#define LEON_INTERRUPT_EXTERNAL_1   5
 
#define LEON_TRAP_TYPE(_source)   SPARC_INTERRUPT_SOURCE_TO_TRAP( _source )
 
#define LEON_TRAP_SOURCE(_trap)   SPARC_INTERRUPT_TRAP_TO_SOURCE( _trap )
 
#define LEON_INT_TRAP(_trap)   SPARC_IS_INTERRUPT_TRAP( _trap )
 
#define LEON_MEMORY_CONFIGURATION_PROM_SIZE_MASK   0x0003C000
 
#define LEON_MEMORY_CONFIGURATION_RAM_SIZE_MASK   0x00001E00
 
#define LEON_REG_TIMER_CONTROL_EN   0x00000001 /* 1 = enable counting */
 
#define LEON_REG_TIMER_CONTROL_RL   0x00000002 /* 1 = reload at 0 */
 
#define LEON_REG_TIMER_CONTROL_LD   0x00000004 /* 1 = load counter */
 
#define LEON_REG_UART_CONTROL_RTD   0x000000FF /* RX/TX data */
 
#define LEON_REG_UART_STATUS_DR   0x00000001 /* Data Ready */
 
#define LEON_REG_UART_STATUS_TSE   0x00000002 /* TX Send Register Empty */
 
#define LEON_REG_UART_STATUS_THE   0x00000004 /* TX Hold Register Empty */
 
#define LEON_REG_UART_STATUS_BR   0x00000008 /* Break Error */
 
#define LEON_REG_UART_STATUS_OE   0x00000010 /* RX Overrun Error */
 
#define LEON_REG_UART_STATUS_PE   0x00000020 /* RX Parity Error */
 
#define LEON_REG_UART_STATUS_FE   0x00000040 /* RX Framing Error */
 
#define LEON_REG_UART_STATUS_TF   0x00000200 /* FIFO Full */
 
#define LEON_REG_UART_STATUS_ERR   0x00000078 /* Error Mask */
 
#define LEON_REG_UART_CTRL_RE   0x00000001 /* Receiver enable */
 
#define LEON_REG_UART_CTRL_TE   0x00000002 /* Transmitter enable */
 
#define LEON_REG_UART_CTRL_RI   0x00000004 /* Receiver interrupt enable */
 
#define LEON_REG_UART_CTRL_TI   0x00000008 /* Transmitter interrupt enable */
 
#define LEON_REG_UART_CTRL_PS   0x00000010 /* Parity select */
 
#define LEON_REG_UART_CTRL_PE   0x00000020 /* Parity enable */
 
#define LEON_REG_UART_CTRL_FL   0x00000040 /* Flow control enable */
 
#define LEON_REG_UART_CTRL_LB   0x00000080 /* Loop Back enable */
 
#define LEON_REG_UART_CTRL_DB   0x00000800 /* Debug FIFO enable */
 
#define LEON_REG_UART_CTRL_SI   0x00004000 /* TX shift register empty IRQ enable */
 
#define LEON_REG_UART_CTRL_FA   0x80000000 /* FIFO Available */
 
#define LEON_REG_UART_CTRL_FA_BIT   31
 
#define LEON3_IRQMPSTATUS_CPUNR   28
 
#define LEON3_IRQMPSTATUS_BROADCAST   27
 
#define LEON_Clear_interrupt(_source)    grlib_store_32(&LEON3_IrqCtrl_Regs->iclear, 1U << (_source))
 
#define LEON_Force_interrupt(_source)    grlib_store_32(&LEON3_IrqCtrl_Regs->iforce0, 1U << (_source))
 
#define LEON_Enable_interrupt_broadcast(_source)
 
#define LEON_Disable_interrupt_broadcast(_source)
 
#define LEON_Is_interrupt_pending(_source)    (grlib_load_32(&LEON3_IrqCtrl_Regs->ipend) & (1U << (_source)))
 
#define LEON_Cpu_Is_interrupt_masked(_source, _cpu)    (!(grlib_load_32(&LEON3_IrqCtrl_Regs->pimask[_cpu]) & (1U << (_source))))
 
#define LEON_Cpu_Mask_interrupt(_source, _cpu)
 
#define LEON_Cpu_Unmask_interrupt(_source, _cpu)
 
#define LEON_Cpu_Disable_interrupt(_source, _previous, _cpu)
 
#define LEON_Cpu_Restore_interrupt(_source, _previous, _cpu)
 
#define LEON_Is_interrupt_masked(_source)    LEON_Cpu_Is_interrupt_masked(_source, _LEON3_Get_current_processor())
 
#define LEON_Mask_interrupt(_source)    LEON_Cpu_Mask_interrupt(_source, _LEON3_Get_current_processor())
 
#define LEON_Unmask_interrupt(_source)    LEON_Cpu_Unmask_interrupt(_source, _LEON3_Get_current_processor())
 
#define LEON_Disable_interrupt(_source, _previous)    LEON_Cpu_Disable_interrupt(_source, _previous, _LEON3_Get_current_processor())
 
#define LEON_Restore_interrupt(_source, _previous)    LEON_Cpu_Restore_interrupt(_source, _previous, _LEON3_Get_current_processor())
 
#define BSP_Clear_interrupt(_source)   LEON_Clear_interrupt(_source)
 
#define BSP_Force_interrupt(_source)   LEON_Force_interrupt(_source)
 
#define BSP_Is_interrupt_pending(_source)   LEON_Is_interrupt_pending(_source)
 
#define BSP_Is_interrupt_masked(_source)   LEON_Is_interrupt_masked(_source)
 
#define BSP_Unmask_interrupt(_source)   LEON_Unmask_interrupt(_source)
 
#define BSP_Mask_interrupt(_source)   LEON_Mask_interrupt(_source)
 
#define BSP_Disable_interrupt(_source, _previous)    LEON_Disable_interrupt(_source, _prev)
 
#define BSP_Restore_interrupt(_source, _previous)    LEON_Restore_interrupt(_source, _previous)
 
#define BSP_Cpu_Is_interrupt_masked(_source, _cpu)    LEON_Cpu_Is_interrupt_masked(_source, _cpu)
 
#define BSP_Cpu_Unmask_interrupt(_source, _cpu)    LEON_Cpu_Unmask_interrupt(_source, _cpu)
 
#define BSP_Cpu_Mask_interrupt(_source, _cpu)    LEON_Cpu_Mask_interrupt(_source, _cpu)
 
#define BSP_Cpu_Disable_interrupt(_source, _previous, _cpu)    LEON_Cpu_Disable_interrupt(_source, _prev, _cpu)
 
#define BSP_Cpu_Restore_interrupt(_source, _previous, _cpu)    LEON_Cpu_Restore_interrupt(_source, _previous, _cpu)
 
#define LEON_REG_TIMER_COUNTER_RELOAD_AT_ZERO   0x00000002
 
#define LEON_REG_TIMER_COUNTER_STOP_AT_ZERO   0x00000000
 
#define LEON_REG_TIMER_COUNTER_LOAD_COUNTER   0x00000004
 
#define LEON_REG_TIMER_COUNTER_ENABLE_COUNTING   0x00000001
 
#define LEON_REG_TIMER_COUNTER_DISABLE_COUNTING   0x00000000
 
#define LEON_REG_TIMER_COUNTER_RELOAD_MASK   0x00000002
 
#define LEON_REG_TIMER_COUNTER_ENABLE_MASK   0x00000001
 
#define LEON_REG_TIMER_COUNTER_DEFINED_MASK   0x00000003
 
#define LEON_REG_TIMER_COUNTER_CURRENT_MODE_MASK   0x00000003
 

Variables

int syscon_uart_index
 
int leon3_debug_uart_index
 

Detailed Description

LEON3 BSP data types and macros.

Macro Definition Documentation

◆ LEON_Cpu_Disable_interrupt

#define LEON_Cpu_Disable_interrupt (   _source,
  _previous,
  _cpu 
)
Value:
do { \
uint32_t _mask = 1U << (_source); \
LEON3_IRQCTRL_ACQUIRE( &_lock_context ); \
(_previous) = grlib_load_32(&LEON3_IrqCtrl_Regs->pimask[_cpu ]); \
grlib_store_32(&LEON3_IrqCtrl_Regs->pimask[_cpu ], (_previous) & ~_mask); \
LEON3_IRQCTRL_RELEASE( &_lock_context ); \
(_previous) &= _mask; \
} while (0)
irqamp * LEON3_IrqCtrl_Regs
This pointer provides the IRQ(A)MP register block address.
Definition: amba.c:121
Local ISR lock context for acquire and release pairs.
Definition: isrlock.h:94
uint32_t pimask[16]
See Processor n interrupt mask register (PIMASK).
Definition: irqamp-regs.h:836

◆ LEON_Cpu_Mask_interrupt

#define LEON_Cpu_Mask_interrupt (   _source,
  _cpu 
)
Value:
do { \
uint32_t _pimask; \
LEON3_IRQCTRL_ACQUIRE( &_lock_context ); \
_pimask = grlib_load_32(&LEON3_IrqCtrl_Regs->pimask[_cpu ]); \
_pimask &= ~(1U << (_source)); \
grlib_store_32(&LEON3_IrqCtrl_Regs->pimask[_cpu ], _pimask); \
LEON3_IRQCTRL_RELEASE( &_lock_context ); \
} while (0)

◆ LEON_Cpu_Restore_interrupt

#define LEON_Cpu_Restore_interrupt (   _source,
  _previous,
  _cpu 
)
Value:
do { \
uint32_t _pimask; \
LEON3_IRQCTRL_ACQUIRE( &_lock_context ); \
_pimask = grlib_load_32(&LEON3_IrqCtrl_Regs->pimask[_cpu ]); \
_pimask &= ~(1U << (_source)); \
_pimask |= _previous; \
grlib_store_32(&LEON3_IrqCtrl_Regs->pimask[_cpu ], _pimask); \
LEON3_IRQCTRL_RELEASE( &_lock_context ); \
} while (0)

◆ LEON_Cpu_Unmask_interrupt

#define LEON_Cpu_Unmask_interrupt (   _source,
  _cpu 
)
Value:
do { \
uint32_t _pimask; \
LEON3_IRQCTRL_ACQUIRE( &_lock_context ); \
_pimask = grlib_load_32(&LEON3_IrqCtrl_Regs->pimask[_cpu ]); \
_pimask |= 1U << (_source); \
grlib_store_32(&LEON3_IrqCtrl_Regs->pimask[_cpu ], _pimask); \
LEON3_IRQCTRL_RELEASE( &_lock_context ); \
} while (0)

◆ LEON_Disable_interrupt_broadcast

#define LEON_Disable_interrupt_broadcast (   _source)
Value:
do { \
uint32_t _mask = 1U << ( _source ); \
uint32_t _brdcst; \
LEON3_IRQCTRL_ACQUIRE( &_lock_context ); \
_brdcst = grlib_load_32(&LEON3_IrqCtrl_Regs->brdcst); \
_brdcst &= ~_mask; \
grlib_store_32(&LEON3_IrqCtrl_Regs->brdcst, _brdcst); \
LEON3_IRQCTRL_RELEASE( &_lock_context ); \
} while (0)
uint32_t brdcst
See Broadcast register (BRDCST).
Definition: irqamp-regs.h:809

◆ LEON_Enable_interrupt_broadcast

#define LEON_Enable_interrupt_broadcast (   _source)
Value:
do { \
uint32_t _mask = 1U << ( _source ); \
uint32_t _brdcst; \
LEON3_IRQCTRL_ACQUIRE( &_lock_context ); \
_brdcst = grlib_load_32(&LEON3_IrqCtrl_Regs->brdcst); \
_brdcst |= _mask; \
grlib_store_32(&LEON3_IrqCtrl_Regs->brdcst, _brdcst); \
LEON3_IRQCTRL_RELEASE( &_lock_context ); \
} while (0)