var_arch.h

来自「eCos操作系统源码」· C头文件 代码 · 共 375 行 · 第 1/2 页

H
375
字号
#ifndef CYGONCE_HAL_VAR_ARCH_H#define CYGONCE_HAL_VAR_ARCH_H//==========================================================================////      var_arch.h////      Architecture specific abstractions////==========================================================================//####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):    hmt, nickg// Contributors: nickg// Date:         2001-05-24// Purpose:      Define architecture abstractions// Description:  This file contains any extra or modified definitions for//               this variant of the architecture.// Usage:        #include <cyg/hal/var_arch.h>//              //####DESCRIPTIONEND####////==========================================================================// -------------------------------------------------------------------------// Although the VR4100 is really a 64 bit CPU, we have defined// target_register_t elsewhere to be 32-bits because we only support// 32-bit mode. Registers will still be sent to GDB as 64-bit, but that's// not relevant for CYG_HAL_GDB_REG.#define CYG_HAL_GDB_REG CYG_WORD32//--------------------------------------------------------------------------// Now defines for all the system controller registers// // These all exist at base 0x1000_0000 in physical memory.#define MIPS_KSEG0_BASE      (0x80000000u)#define MIPS_KSEG1_BASE      (0xA0000000u)#define UPD985XX_SYSTEM_BASE (0x10000000u)#define MIPS_IO_BASE         (MIPS_KSEG1_BASE + UPD985XX_SYSTEM_BASE)#define UPD985XX_SYSCTL_OFF  (0x0000u)#define UPD985XX_SYSUSB_OFF  (0x1000u)#define UPD985XX_SYSETH_OFF  (0x2000u)#define UPD985XX_SYSCTL_REG( n ) ((volatile unsigned int *)\   (MIPS_IO_BASE + UPD985XX_SYSCTL_OFF + (unsigned)(n)))#define UPD985XX_SYSUSB_REG( n ) ((volatile unsigned int *)\   (MIPS_IO_BASE + UPD985XX_SYSUSB_OFF + (unsigned)(n)))#define UPD985XX_SYSETH_REG( n ) ((volatile unsigned int *)\   (MIPS_IO_BASE + UPD985XX_SYSETH_OFF + (unsigned)(n)))// This for the few that we need in assembly#define UPD985XX_SYSCTL_ADDR( n ) (0xb0000000 + (n))// (the noise at the end of these lines is the default value)#define S_GMR     UPD985XX_SYSCTL_REG( 0x00)   // General Mode Register    00000000H#define S_GSR     UPD985XX_SYSCTL_REG( 0x04)   // General Status Register    unknown#define S_ISR     UPD985XX_SYSCTL_REG( 0x08)   // Interrupt Status Register    00000000H#define S_IMR     UPD985XX_SYSCTL_REG( 0x0C)   // Interrupt Mask Register    00000000H#define S_NSR     UPD985XX_SYSCTL_REG( 0x10)   // NMI Status Register    00000000H#define S_NMR     UPD985XX_SYSCTL_REG( 0x14)   // NMI Mask Register    00000000H#define S_VER     UPD985XX_SYSCTL_REG( 0x18)   // Version Register    00000301H//         N/A      UPD985XX_SYSCTL_REG( 0x1C)    reserved    00000000H#define S_GIOER   UPD985XX_SYSCTL_REG( 0x20)   // GPIO Output Enable Register    00000000H#define S_GOPR    UPD985XX_SYSCTL_REG( 0x24)   // GPIO Output (Write) Register    00000000H#define S_GIPR    UPD985XX_SYSCTL_REG( 0x28)   // GPIO Input (Read) Register    00000000H//         N/A      UPD985XX_SYSCTL_REG( 0x2C)   // Reserved    unknown#define S_WRCR    UPD985XX_SYSCTL_REG( 0x30)   // Warm Reset Control Register    00000000H#define S_WRSR    UPD985XX_SYSCTL_REG( 0x34)   // Warm Reset Status Register    00000000H#define S_PWCR    UPD985XX_SYSCTL_REG( 0x38)   // Power Control Register    00000000H#define S_PWSR    UPD985XX_SYSCTL_REG( 0x3C)   // Power Control Status Register    00000000H//         N/A      UPD985XX_SYSCTL_REG( 0x40)    Reserved    unknown#define ITCNTR    UPD985XX_SYSCTL_REG( 0x4C)   // IBUS Timeout Timer Control Register    00000000H#define ITSETR    UPD985XX_SYSCTL_REG( 0x50)   // IBUS Timeout Timer Set Register    80000000H//         N/A      UPD985XX_SYSCTL_REG( 0x54)    Reserved    unknown//                  UPD985XX_SYSCTL_REG( 0x7F)    #define UARTRBR   UPD985XX_SYSCTL_REG( 0x80)   // UART, Receiver Buffer Register [DLAB=0,READ]    unknown#define UARTTHR   UPD985XX_SYSCTL_REG( 0x80)   // UART, Transmitter Holding Register [DLAB=0,WRITE]    unknown#define UARTDLL   UPD985XX_SYSCTL_REG( 0x80)   // UART, Divisor Latch LSB Register [DLAB=1]    unknown#define UARTIER   UPD985XX_SYSCTL_REG( 0x84)   // UART, Interrupt Enable Register [DLAB=0]    unknown#define UARTDLM   UPD985XX_SYSCTL_REG( 0x84)   // UART, Divisor Latch MSB Register [DLAB=1]    unknown#define UARTIIR   UPD985XX_SYSCTL_REG( 0x88)   // UART, Interrupt ID Register [READ]    unknown// The uPD985xx devices do not support UART FIFOs.#define UARTFCR   UPD985XX_SYSCTL_REG( 0x88)   // UART, FIFO control Register [WRITE]#define UARTLCR   UPD985XX_SYSCTL_REG( 0x8C)   // UART, Line control Register    unknown#define UARTMCR   UPD985XX_SYSCTL_REG( 0x90)   // UART, Modem Control Register    unknown#define UARTLSR   UPD985XX_SYSCTL_REG( 0x94)   // UART, Line status Register    unknown#define UARTMSR   UPD985XX_SYSCTL_REG( 0x98)   // UART, Modem Status Register    unknown#define UARTSCR   UPD985XX_SYSCTL_REG( 0x9C)   // UART, Scratch Register    unknown#define DSUCNTR   UPD985XX_SYSCTL_REG( 0xA0)   // DSU Control Register    00000000H#define DSUSETR   UPD985XX_SYSCTL_REG( 0xA4)   // DSU Dead Time Set Register    80000000H#define DSUCLRR   UPD985XX_SYSCTL_REG( 0xA8)   // DSU Clear Register    00000000H#define DSUTIMR   UPD985XX_SYSCTL_REG( 0xAC)   // DSU Elapsed Time Register    00000000H#define TMMR      UPD985XX_SYSCTL_REG( 0xB0)   // Timer Mode Register    00000000H#define TM0CSR    UPD985XX_SYSCTL_REG( 0xB4)   // Timer CH0 Count Set Register    00000000H#define TM1CSR    UPD985XX_SYSCTL_REG( 0xB8)   // Timer CH1 Count Set Register    00000000H#define TM0CCR    UPD985XX_SYSCTL_REG( 0xBC)   // Timer CH0 Current Count Register    FFFFFFFFH#define TM1CCR    UPD985XX_SYSCTL_REG( 0xC0)   // Timer CH1 Current Count Register    FFFFFFFFH//         N/A      UPD985XX_SYSCTL_REG( 0xC4)    Reserved    unknown//                  UPD985XX_SYSCTL_REG( 0xCF)    #define ECCR      UPD985XX_SYSCTL_REG( 0xD0)   // EEPROM Command Control Register    00000000H#define ERDR      UPD985XX_SYSCTL_REG( 0xD4)   // EEPROM Read Data Register    80000000H#define MACAR1    UPD985XX_SYSCTL_REG( 0xD8)   // MAC Address Register 1    00000000H#define MACAR2    UPD985XX_SYSCTL_REG( 0xDC)   // MAC Address Register 2    00000000H#define MACAR3    UPD985XX_SYSCTL_REG( 0xE0)   // MAC Address Register 3    00000000H//         N/A      UPD985XX_SYSCTL_REG( 0xE4)    Reserved    unknown//                  UPD985XX_SYSCTL_REG( 0xFF)    #define RMMDR     UPD985XX_SYSCTL_REG(0x100)   // Boot ROM Mode Register    00000000H#define RMATR     UPD985XX_SYSCTL_REG(0x104)   // Boot ROM Access Timing Register    00000000H#define SDMDR     UPD985XX_SYSCTL_REG(0x108)   // SDRAM Mode Register    00000330H#define SDTSR     UPD985XX_SYSCTL_REG(0x10C)   // SDRAM Type Selection Register    00000000H#define SDPTR     UPD985XX_SYSCTL_REG(0x110)   // SDRAM Precharge Timing Register    00000142H//         N/A      UPD985XX_SYSCTL_REG(0x114)    ----    ----    Reserved    unknown//                  UPD985XX_SYSCTL_REG(0x11B)    #define SDRMR     UPD985XX_SYSCTL_REG(0x11C)   // SDRAM Refresh Mode Register    00000200H#define SDRCR     UPD985XX_SYSCTL_REG(0x120)   // SDRAM Refresh Timer Count Register    00000200H#define MBCR      UPD985XX_SYSCTL_REG(0x124)   // Memory Bus Control Register    00000000H#define MESR      UPD985XX_SYSCTL_REG(0x128)   // Memory Error Status Register    00000000H#define MEAR      UPD985XX_SYSCTL_REG(0x12C)   // Memory Error Address Register    00000000H// The few that we need from assembly#define S_ISR_ADR UPD985XX_SYSCTL_ADDR( 0x08)   // Interrupt Status Register    00000000H#define S_IMR_ADR UPD985XX_SYSCTL_ADDR( 0x0C)   // Interrupt Mask Register    00000000H#define RMMDR_ADR UPD985XX_SYSCTL_ADDR(0x100)   // Boot ROM Mode Register    00000000H#define RMATR_ADR UPD985XX_SYSCTL_ADDR(0x104)   // Boot ROM Access Timing Register    00000000H#define SDMDR_ADR UPD985XX_SYSCTL_ADDR(0x108)   // SDRAM Mode Register    00000330H#define SDTSR_ADR UPD985XX_SYSCTL_ADDR(0x10C)   // SDRAM Type Selection Register    00000000H#define SDPTR_ADR UPD985XX_SYSCTL_ADDR(0x110)   // SDRAM Precharge Timing Register    00000142H#define SDRMR_ADR UPD985XX_SYSCTL_ADDR(0x11C)   // SDRAM Refresh Mode Register    00000200H#define SDRCR_ADR UPD985XX_SYSCTL_ADDR(0x120)   // SDRAM Refresh Timer Count Register    00000200H#define  MBCR_ADR UPD985XX_SYSCTL_ADDR(0x124)   // Memory Bus Control Register    00000000H#define  MESR_ADR UPD985XX_SYSCTL_ADDR(0x128)   // Memory Error Status Register    00000000H#define  MEAR_ADR UPD985XX_SYSCTL_ADDR(0x12C)   // Memory Error Address Register    00000000H// ---------------------------------------------------------------------------// Contents of all these glorious registers:// --------- general ---------// S_GMR     General Mode Register    00000000H#define S_GMR_CRST    1     // Cold Reset#define S_GMR_IAEN    2     // IBUS Arbiter Enable#define S_GMR_MPFD    4     // Memory-to-CPU Prefetch FIFO disable#define S_GMR_UCSEL   8     // UART Source Clock Selection (0 = CPU, 1 = ext)#define S_GMR_HSWP   (1<<8) // HIF Block Data swap function disable#define S_GMR_MSWP   (1<<9) // MIF Block Data swap function disable // S_GSR     General Status Register#define S_GSR_ENDCEN  1#define S_GSR_CCLKSEL 2

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?