summaryrefslogtreecommitdiffstats
path: root/cpukit/score/cpu/sparc64/rtems/score/sparc64.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/score/cpu/sparc64/rtems/score/sparc64.h')
-rw-r--r--cpukit/score/cpu/sparc64/rtems/score/sparc64.h342
1 files changed, 0 insertions, 342 deletions
diff --git a/cpukit/score/cpu/sparc64/rtems/score/sparc64.h b/cpukit/score/cpu/sparc64/rtems/score/sparc64.h
deleted file mode 100644
index d20c2ff509..0000000000
--- a/cpukit/score/cpu/sparc64/rtems/score/sparc64.h
+++ /dev/null
@@ -1,342 +0,0 @@
-/**
- * @file
- *
- * @brief Information Required to Build RTEMS for a Particular Member
- * of the SPARC Family
- *
- * This include file contains information pertaining to the SPARC
- * processor family.
- */
-
-/*
- * COPYRIGHT (c) 1989-1999. On-Line Applications Research Corporation (OAR).
- *
- * This file is based on the SPARC sparc.h file. Modifications are made
- * to support the SPARC64 processor.
- * COPYRIGHT (c) 2010. Gedare Bloom.
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_SCORE_SPARC_H
-#define _RTEMS_SCORE_SPARC_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * This file contains the information required to build
- * RTEMS for a particular member of the "sparc" family. It does
- * this by setting variables to indicate which implementation
- * dependent features are present in a particular member
- * of the family.
- *
- * Currently recognized feature flags:
- *
- * + SPARC_HAS_FPU
- * 0 - no HW FPU
- * 1 - has HW FPU (assumed to be compatible w/90C602)
- *
- * + SPARC_HAS_BITSCAN
- * 0 - does not have scan instructions
- * 1 - has scan instruction (not currently implemented)
- *
- * + SPARC_NUMBER_OF_REGISTER_WINDOWS
- * 8 is the most common number supported by SPARC implementations.
- * SPARC_PSR_CWP_MASK is derived from this value.
- */
-
-/*
- * Some higher end SPARCs have a bitscan instructions. It would
- * be nice to take advantage of them. Right now, there is no
- * port to a CPU model with this feature and no (untested) code
- * that is based on this feature flag.
- */
-
-#define SPARC_HAS_BITSCAN 0
-
-/*
- * This should be OK until a port to a higher end SPARC processor
- * is made that has more than 8 register windows. If this cannot
- * be determined based on multilib settings (v7/v8/v9), then the
- * cpu_asm.S code that depends on this will have to move to libcpu.
- *
- * SPARC v9 supports from 3 to 32 register windows.
- * N_REG_WINDOWS = 8 on UltraSPARC T1 (impl. dep. #2-V8).
- */
-
-#define SPARC_NUMBER_OF_REGISTER_WINDOWS 8
-
-/*
- * This should be determined based on some soft float derived
- * cpp predefine but gcc does not currently give us that information.
- */
-
-
-#if defined(_SOFT_FLOAT)
-#define SPARC_HAS_FPU 0
-#else
-#define SPARC_HAS_FPU 1
-#endif
-
-#if SPARC_HAS_FPU
-#define CPU_MODEL_NAME "w/FPU"
-#else
-#define CPU_MODEL_NAME "w/soft-float"
-#endif
-
-/*
- * Define the name of the CPU family.
- */
-
-#define CPU_NAME "SPARC"
-
-/*
- * Miscellaneous constants
- */
-
-/*
- * The PSR is deprecated and deleted.
- *
- * The following registers represent fields of the PSR:
- * PIL - Processor Interrupt Level register
- * CWP - Current Window Pointer register
- * VER - Version register
- * CCR - Condition Codes Register
- * PSTATE - Processor State register
- */
-
-/*
- * PSTATE masks and starting bit positions
- *
- * NOTE: Reserved bits are ignored.
- */
-
-#define SPARC_PSTATE_AG_MASK 0x00000001 /* bit 0 */
-#define SPARC_PSTATE_IE_MASK 0x00000002 /* bit 1 */
-#define SPARC_PSTATE_PRIV_MASK 0x00000004 /* bit 2 */
-#define SPARC_PSTATE_AM_MASK 0x00000008 /* bit 3 */
-#define SPARC_PSTATE_PEF_MASK 0x00000010 /* bit 4 */
-#define SPARC_PSTATE_MM_MASK 0x00000040 /* bit 6 */
-#define SPARC_PSTATE_TLE_MASK 0x00000100 /* bit 8 */
-#define SPARC_PSTATE_CLE_MASK 0x00000200 /* bit 9 */
-
-#define SPARC_PSTATE_AG_BIT_POSITION 0 /* bit 0 */
-#define SPARC_PSTATE_IE_BIT_POSITION 1 /* bit 1 */
-#define SPARC_PSTATE_PRIV_BIT_POSITION 2 /* bit 2 */
-#define SPARC_PSTATE_AM_BIT_POSITION 3 /* bit 3 */
-#define SPARC_PSTATE_PEF_BIT_POSITION 4 /* bit 4 */
-#define SPARC_PSTATE_MM_BIT_POSITION 6 /* bit 6 */
-#define SPARC_PSTATE_TLE_BIT_POSITION 8 /* bit 8 */
-#define SPARC_PSTATE_CLE_BIT_POSITION 9 /* bit 9 */
-
-#define SPARC_FPRS_FEF_MASK 0x0100 /* bit 2 */
-#define SPARC_FPRS_FEF_BIT_POSITION 2 /* bit 2 */
-
-#define SPARC_TSTATE_IE_MASK 0x00000200 /* bit 9 */
-
-#define SPARC_SOFTINT_TM_MASK 0x00000001 /* bit 0 */
-#define SPARC_SOFTINT_SM_MASK 0x00010000 /* bit 16 */
-#define SPARC_SOFTINT_TM_BIT_POSITION 1 /* bit 0 */
-#define SPARC_SOFTINT_SM_BIT_POSITION 17 /* bit 16 */
-
-#define STACK_BIAS (2047)
-
-#ifdef ASM
-
-/*
- * To enable the FPU we need to set both PSTATE.pef and FPRS.fef
- */
-
-#define sparc64_enable_FPU(rtmp1) \
- rdpr %pstate, rtmp1; \
- or rtmp1, SPARC_PSTATE_PEF_MASK, rtmp1; \
- wrpr %g0, rtmp1, %pstate; \
- rd %fprs, rtmp1; \
- or rtmp1, SPARC_FPRS_FEF_MASK, rtmp1; \
- wr %g0, rtmp1, %fprs
-
-
-#endif
-
-#ifndef ASM
-
-/*
- * Standard nop
- */
-
-#define nop() \
- do { \
- __asm__ volatile ( "nop" ); \
- } while ( 0 )
-
-/*
- * Get and set the pstate
- */
-
-#define sparc64_get_pstate( _pstate ) \
- do { \
- (_pstate) = 0; \
- __asm__ volatile( "rdpr %%pstate, %0" : "=r" (_pstate) : "0" (_pstate) ); \
- } while ( 0 )
-
-#define sparc64_set_pstate( _pstate ) \
- do { \
- __asm__ volatile ( \
- "wrpr %%g0, %0, %%pstate " : "=r" ((_pstate)) : "0" ((_pstate)) ); \
- } while ( 0 )
-
-/*
- * Get and set the PIL
- */
-
-#define sparc64_get_pil( _pil ) \
- do { \
- (_pil) = 0; \
- __asm__ volatile( "rdpr %%pil, %0" : "=r" (_pil) : "0" (_pil) ); \
- } while ( 0 )
-
-#define sparc64_set_pil( _pil ) \
- do { \
- __asm__ volatile ( "wrpr %%g0, %0, %%pil " : "=r" ((_pil)) : "0" ((_pil)) ); \
- } while ( 0 )
-
-
-/*
- * Get and set the TBA
- */
-
-#define sparc64_get_tba( _tba ) \
- do { \
- (_tba) = 0; /* to avoid unitialized warnings */ \
- __asm__ volatile( "rdpr %%tba, %0" : "=r" (_tba) : "0" (_tba) ); \
- } while ( 0 )
-
-#define sparc64_set_tba( _tba ) \
- do { \
- __asm__ volatile( "wrpr %%g0, %0, %%tba" : "=r" (_tba) : "0" (_tba) ); \
- } while ( 0 )
-
-/*
- * Get and set the TL (trap level)
- */
-
-#define sparc64_get_tl( _tl ) \
- do { \
- (_tl) = 0; /* to avoid unitialized warnings */ \
- __asm__ volatile( "rdpr %%tl, %0" : "=r" (_tl) : "0" (_tl) ); \
- } while ( 0 )
-
-#define sparc64_set_tl( _tl ) \
- do { \
- __asm__ volatile( "wrpr %%g0, %0, %%tl" : "=r" (_tl) : "0" (_tl) ); \
- } while ( 0 )
-
-
-/*
- * read the stick register
- *
- * Note:
- * stick asr=24, mnemonic=stick
- * Note: stick does not appear to be a valid ASR for US3, although it is
- * implemented in US3i.
- */
-#define sparc64_read_stick( _stick ) \
- do { \
- (_stick) = 0; \
- __asm__ volatile( "rd %%stick, %0" : "=r" (_stick) : "0" (_stick) ); \
- } while ( 0 )
-
-/*
- * write the stick_cmpr register
- *
- * Note:
- * stick_cmpr asr=25, mnemonic=stick_cmpr
- * Note: stick_cmpr does not appear to be a valid ASR for US3, although it is
- * implemented in US3i.
- */
-#define sparc64_write_stick_cmpr( _stick_cmpr ) \
- do { \
- __asm__ volatile( "wr %%g0, %0, %%stick_cmpr" : "=r" (_stick_cmpr) \
- : "0" (_stick_cmpr) ); \
- } while ( 0 )
-
-/*
- * read the Tick register
- */
-#define sparc64_read_tick( _tick ) \
- do { \
- (_tick) = 0; \
- __asm__ volatile( "rd %%tick, %0" : "=r" (_tick) : "0" (_tick) ); \
- } while ( 0 )
-
-/*
- * write the tick_cmpr register
- */
-#define sparc64_write_tick_cmpr( _tick_cmpr ) \
- do { \
- __asm__ volatile( "wr %%g0, %0, %%tick_cmpr" : "=r" (_tick_cmpr) \
- : "0" (_tick_cmpr) ); \
- } while ( 0 )
-
-/*
- * Clear the softint register.
- *
- * sun4u and sun4v: softint_clr asr = 21, with mnemonic clear_softint
- */
-#define sparc64_clear_interrupt_bits( _bit_mask ) \
- do { \
- __asm__ volatile( "wr %%g0, %0, %%clear_softint" : "=r" (_bit_mask) \
- : "0" (_bit_mask)); \
- } while ( 0 )
-
-/************* DEPRECATED ****************/
-/* Note: Although the y register is deprecated, gcc still uses it */
-/*
- * Get and set the Y
- */
-
-#define sparc_get_y( _y ) \
- do { \
- __asm__ volatile( "rd %%y, %0" : "=r" (_y) : "0" (_y) ); \
- } while ( 0 )
-
-#define sparc_set_y( _y ) \
- do { \
- __asm__ volatile( "wr %0, %%y" : "=r" (_y) : "0" (_y) ); \
- } while ( 0 )
-
-/************* /DEPRECATED ****************/
-
-/*
- * Manipulate the interrupt level in the pstate
- */
-
-uint32_t sparc_disable_interrupts(void);
-void sparc_enable_interrupts(uint32_t);
-
-#define sparc_flash_interrupts( _level ) \
- do { \
- uint32_t _ignored; \
- \
- sparc_enable_interrupts( (_level) ); \
- _ignored = sparc_disable_interrupts(); \
- (void) _ignored; \
- } while ( 0 )
-
-#define sparc64_get_interrupt_level( _level ) \
- do { \
- _level = 0; \
- sparc64_get_pil( _level ); \
- } while ( 0 )
-
-#endif /* !ASM */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RTEMS_SCORE_SPARC_H */