📄 var_regs.h
字号:
#ifndef CYGONCE_HAL_VAR_REGS_H
#define CYGONCE_HAL_VAR_REGS_H
//==========================================================================
//
// var_regs.h
//
// PowerPC 5xx variant CPU definitions
//
//==========================================================================
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// eCos is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 2 or (at your option) any later version.
//
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// for more details.
//
// You should have received a copy of the GNU General Public License along
// with eCos; if not, write to the Free Software Foundation, Inc.,
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
//
// As a special exception, if other files instantiate templates or use macros
// or inline functions from this file, or you compile this file and link it
// with other works to produce a work based on this file, this file does not
// by itself cause the resulting work to be covered by the GNU General Public
// License. However the source code for this file must still be made available
// in accordance with section (3) of the GNU General Public License.
//
// This exception does not invalidate any other reasons why a work based on
// this file might be covered by the GNU General Public License.
//
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
//==========================================================================
//#####DESCRIPTIONBEGIN####
//
// Author(s): Bob Koninckx
// Contributors: Bob Koninckx
// Date: 2001-09-12
// Purpose: Provide MPC5xx register definitions
// Description: Provide MPC5xx register definitions
// The short difinitions (sans CYGARC_REG_) are exported only
// if CYGARC_HAL_COMMON_EXPORT_CPU_MACROS is defined.
// Usage: Included via the acrhitecture register header:
// #include <cyg/hal/ppc_regs.h>
// ...
//
//
//####DESCRIPTIONEND####
//
//==========================================================================
//--------------------------------------------------------------------------
// Special purpose registers
//
#define CYGARC_REG_XER 1
#define CYGARC_REG_LR 8
#define CYGARC_REG_CTR 9
#define CYGARC_REG_EIE 80
#define CYGARC_REG_EID 81
#define CYGARC_REG_NRI 82
#define CYGARC_REG_CMPA 144
#define CYGARC_REG_CMPB 145
#define CYGARC_REG_CMPC 146
#define CYGARC_REG_CMPD 147
#define CYGARC_REG_ECR 148
#define CYGARC_REG_DER 149
#define CYGARC_REG_COUNTA 150
#define CYGARC_REG_COUNTB 151
#define CYGARC_REG_CMPE 152
#define CYGARC_REG_CMPF 153
#define CYGARC_REG_CMPG 154
#define CYGARC_REG_CMPH 155
#define CYGARC_REG_LCTRL1 156
#define CYGARC_REG_LCTRL2 157
#define CYGARC_REG_BAR 159
#define CYGARC_REG_MI_GRA 528
#define CYGARC_REG_L2U_GRA 536
#define CYGARC_REG_BBCMCR 560
#define CYGARC_REG_L2U_MCR 568
#define CYGARC_REG_DPDR 630
#define CYGARC_REG_IMMR 638
#define CYGARC_REG_MI_RBA0 784
#define CYGARC_REG_MI_RBA1 785
#define CYGARC_REG_MI_RBA2 786
#define CYGARC_REG_MI_RBA3 787
#define CYGARC_REG_L2U_RBA0 792
#define CYGARC_REG_L2U_RBA1 793
#define CYGARC_REG_L2U_RBA2 794
#define CYGARC_REG_L2U_RBA3 795
#define CYGARC_REG_MI_RA0 816
#define CYGARC_REG_MI_RA1 817
#define CYGARC_REG_MI_RA2 818
#define CYGARC_REG_MI_RA3 819
#define CYGARC_REG_L2U_RA0 824
#define CYGARC_REG_L2U_RA1 825
#define CYGARC_REG_L2U_RA2 826
#define CYGARC_REG_L2U_RA3 827
#define CYGARC_REG_FPECR 1022
#ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
//# define XER CYGARC_REG_XER // Leave these out, they conflict with GDB stubs
//# define LR CYGARC_REG_LR // are not used anyway
# define CTR CYGARC_REG_CTR
# define EIE CYGARC_REG_EIE
# define EID CYGARC_REG_EID
# define NRI CYGARC_REG_NRI
# define CMPA CYGARC_REG_CMPA
# define CMPB CYGARC_REG_CMPB
# define CMPC CYGARC_REG_CMPC
# define CMPD CYGARC_REG_CMPD
# define ECR CYGARC_REG_ECR
# define DER CYGARC_REG_DER
# define COUNTA CYGARC_REG_COUNTA
# define COUNTB CYGARC_REG_COUNTB
# define CMPE CYGARC_REG_CMPE
# define CMPF CYGARC_REG_CMPF
# define CMPG CYGARC_REG_CMPG
# define CMPH CYGARC_REG_CMPH
# define LCTRL1 CYGARC_REG_LCTRL1
# define LCTRL2 CYGARC_REG_LCTRL2
# define BAR CYGARC_REG_BAR
# define MI_GRA CYGARC_REG_MI_GRA
# define L2U_GRA CYGARC_REG_L2U_GRA
# define BBCMCR CYGARC_REG_BBCMCR
# define L2U_MCR CYGARC_REG_L2U_MCR
# define DPDR CYGARC_REG_DPDR
# define IMMR CYGARC_REG_IMMR
# define MI_RBA0 CYGARC_REG_MI_RBA0
# define MI_RBA1 CYGARC_REG_MI_RBA1
# define MI_RBA2 CYGARC_REG_MI_RBA2
# define MI_RBA3 CYGARC_REG_MI_RBA3
# define L2U_RBA0 CYGARC_REG_L2U_RBA0
# define L2U_RBA1 CYGARC_REG_L2U_RBA1
# define L2U_RBA2 CYGARC_REG_L2U_RBA2
# define L2U_RBA3 CYGARC_REG_L2U_RBA3
# define MI_RA0 CYGARC_REG_MI_RA0
# define MI_RA1 CYGARC_REG_MI_RA1
# define MI_RA2 CYGARC_REG_MI_RA2
# define MI_RA3 CYGARC_REG_MI_RA3
# define L2U_RA0 CYGARC_REG_L2U_RA0
# define L2U_RA1 CYGARC_REG_L2U_RA1
# define L2U_RA2 CYGARC_REG_L2U_RA2
# define L2U_RA3 CYGARC_REG_L2U_RA3
# define FPECR CYGARC_REG_FPECR
#endif //#ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
//-----------------------------------------------------------------------------
// Development Support.
#define CYGARC_REG_DER 149
#define CYGARC_REG_ICTRL 158 // instruction support control reg
#define CYGARC_REG_ICTRL_SERSHOW 0x00000000 // serialized, show cycles
#define CYGARC_REG_ICTRL_NOSERSHOW 0x00000007 //non-serialized&no show cycles
#ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
#define DER CYGARC_REG_DER
#define ICTRL CYGARC_REG_ICTRL
#define ICTRL_SERSHOW CYGARC_REG_ICTRL_SERSHOW
#define ICTRL_NOSERSHOW CYGARC_REG_ICTRL_NOSERSHOW
#endif // ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
//-----------------------------------------------------------------------------
// Bit definitions
//-----------------------------------------------------------------------------
// The internal memory map register (IMMR)
#define CYGARC_REG_IMM_IMMR_PARTNUM 0xff000000 // part number mask (ro)
#define CYGARC_REG_IMM_IMMR_MASKNUM 0x00ff0000 // mask number mask (ro)
#define CYGARC_REG_IMM_IMMR_ISB 0x0000000e // internal space base
#define CYGARC_REG_IMM_IMMR_CLES 0x00000100 // core little endian swap
#define CYGARC_REG_IMM_IMMR_FLEN 0x00000800 // flash enable
//-----------------------------------------------------------------------------
// System protection control (SYPCR)
#define CYGARC_REG_IMM_SYPR_SWTC_MASK 0xffff0000
#define CYGARC_REG_IMM_SYPR_BMT_MASK 0x0000ff00
#define CYGARC_REG_IMM_SYPR_BME 0x00000080
#define CYGARC_REG_IMM_SYPR_SWF 0x00000008
#define CYGARC_REG_IMM_SYPR_SWE 0x00000004
#define CYGARC_REG_IMM_SYPR_SWRI 0x00000002
#define CYGARC_REG_IMM_SYPR_SWP 0x00000001
//-----------------------------------------------------------------------------
// Interrupt pend register (SIPEND)
#define CYGARC_REG_IMM_SIPEND_IRQ0 0x80000000 // External interrupt priority 0
#define CYGARC_REG_IMM_SIPEND_LVL0 0x40000000 // Internal interrupt level 0
#define CYGARC_REG_IMM_SIPEND_IRQ1 0x20000000 // External interrupt priority 1
#define CYGARC_REG_IMM_SIPEND_LVL1 0x10000000 // Internal interrupt level 1
#define CYGARC_REG_IMM_SIPEND_IRQ2 0x08000000 // External interrupt priority 2
#define CYGARC_REG_IMM_SIPEND_LVL2 0x04000000 // Internal interrupt level 2
#define CYGARC_REG_IMM_SIPEND_IRQ3 0x02000000 // External interrupt priority 3
#define CYGARC_REG_IMM_SIPEND_LVL3 0x01000000 // Internal interrupt level 3
#define CYGARC_REG_IMM_SIPEND_IRQ4 0x00800000 // External interrupt prioeity 4
#define CYGARC_REG_IMM_SIPEND_LVL4 0x00400000 // Internal interrupt level 4
#define CYGARC_REG_IMM_SIPEND_IRQ5 0x00200000 // External interrupt priority 5
#define CYGARC_REG_IMM_SIPEND_LVL5 0x00100000 // Internal interrupt level 5
#define CYGARC_REG_IMM_SIPEND_IRQ6 0x00080000 // External interrupt priority 6
#define CYGARC_REG_IMM_SIPEND_LVL6 0x00040000 // Internal interrupt level 6
#define CYGARC_REG_IMM_SIPEND_IRQ7 0x00020000 // External interrupt priority 7
#define CYGARC_REG_IMM_SIPEND_LVL7 0x00010000 // Internal interrupt level 7
//-----------------------------------------------------------------------------
// Interrupt mask register (SIMASK)
#define CYGARC_REG_IMM_SIMASK_IRM0 0x80000000 // External interrupt priority 0
#define CYGARC_REG_IMM_SIMASK_LVM0 0x40000000 // Internal interrupt level 0
#define CYGARC_REG_IMM_SIMASK_IRM1 0x20000000 // External interrupt priority 1
#define CYGARC_REG_IMM_SIMASK_LVM1 0x10000000 // Internal interrupt level 1
#define CYGARC_REG_IMM_SIMASK_IRM2 0x08000000 // External interrupt priority 2
#define CYGARC_REG_IMM_SIMASK_LVM2 0x04000000 // Internal interrupt level 2
#define CYGARC_REG_IMM_SIMASK_IRM3 0x02000000 // External interrupt priority 3
#define CYGARC_REG_IMM_SIMASK_LVM3 0x01000000 // Internal interrupt level 3
#define CYGARC_REG_IMM_SIMASK_IRM4 0x00800000 // External interrupt priority 4
#define CYGARC_REG_IMM_SIMASK_LVM4 0x00400000 // Internal interrupt level 4
#define CYGARC_REG_IMM_SIMASK_IRM5 0x00200000 // External interrupt priority 5
#define CYGARC_REG_IMM_SIMASK_LVM5 0x00100000 // Internal interrupt level 5
#define CYGARC_REG_IMM_SIMASK_IRM6 0x00080000 // External interrupt priority 6
#define CYGARC_REG_IMM_SIMASK_LVM6 0x00040000 // Internal interrupt level 6
#define CYGARC_REG_IMM_SIMASK_IRM7 0x00020000 // External interrupt priority 7
#define CYGARC_REG_IMM_SIMASK_LVM7 0x00010000 // Internal interrupt level 7
//-----------------------------------------------------------------------------
// Interrupt edge level register (CIEL)
#define CYGARC_REG_IMM_SIEL_ED0 0x80000000 // Falling edge external interrupt priority 0
#define CYGARC_REG_IMM_SIEL_WM0 0x40000000 // Wake-up mask external interrupt priority 0
#define CYGARC_REG_IMM_SIEL_ED1 0x20000000 // Falling edge external interrupt priority 1
#define CYGARC_REG_IMM_SIEL_WM1 0x10000000 // Wake-up mask external interrupt priority 1
#define CYGARC_REG_IMM_SIEL_ED2 0x08000000 // Falling edge external interrupt priority 2
#define CYGARC_REG_IMM_SIEL_WM2 0x04000000 // Wake-up mask external interrupt priority 2
#define CYGARC_REG_IMM_SIEL_ED3 0x02000000 // Falling edge external interrupt priority 3
#define CYGARC_REG_IMM_SIEL_WM3 0x01000000 // Wake-up mask external interrupt priority 3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -