Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / sam / cpus / vonk / ss / lib / cpu / src / SS_Asi.h
/*
* ========== Copyright Header Begin ==========================================
*
* OpenSPARC T2 Processor File: SS_Asi.h
* Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
*
* The above named program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
* License version 2 as published by the Free Software Foundation.
*
* The above named program 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 this work; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
*
* ========== Copyright Header End ============================================
*/
#ifndef __SS_Asi_h__
#define __SS_Asi_h__
#include "SS_Types.h"
class SS_Asi
{
public:
enum Limits
{
MAX = 256
};
enum
{
ASI_NUCLEUS = 0x04,
ASI_NUCLEUS_LITTLE = 0x0c,
ASI_AS_IF_USER_PRIMARY = 0x10,
ASI_AS_IF_USER_SECONDARY = 0x11,
ASI_REAL_MEM = 0x14,
ASI_REAL_IO = 0x15,
ASI_BLOCK_AS_IF_USER_PRIMARY = 0x16,
ASI_BLOCK_AS_IF_USER_SECONDARY = 0x17,
ASI_AS_IF_USER_PRIMARY_LITTLE = 0x18,
ASI_AS_IF_USER_SECONDARY_LITTLE = 0x19,
ASI_REAL_MEM_LITTLE = 0x1c,
ASI_REAL_IO_LITTLE = 0x1d,
ASI_BLOCK_AS_IF_USER_PRIMARY_LITTLE = 0x1e,
ASI_BLOCK_AS_IF_USER_SECONDARY_LITTLE = 0x1f,
ASI_QUAD_LDD = 0x24,
ASI_QUAD_LDD_REAL = 0x26,
ASI_QUAD_LDD_LITTLE = 0x2c,
ASI_QUAD_LDD_REAL_LITTLE = 0x2e,
ASI_AS_IF_PRIV_PRIMARY = 0x30,
ASI_AS_IF_PRIV_SECONDARY = 0x31,
ASI_AS_IF_PRIV_NUCLEUS = 0x36,
ASI_AS_IF_PRIV_PRIMARY_LITTLE = 0x38,
ASI_AS_IF_PRIV_SECONDARY_LITTLE = 0x39,
ASI_AS_IF_PRIV_NUCLEUS_LITTLE = 0x3e,
ASI_PRIMARY = 0x80,
ASI_SECONDARY = 0x81,
ASI_PRIMARY_NO_FAULT = 0x82,
ASI_SECONDARY_NO_FAULT = 0x83,
ASI_PRIMARY_LITTLE = 0x88,
ASI_SECONDARY_LITTLE = 0x89,
ASI_PRIMARY_NO_FAULT_LITTLE = 0x8a,
ASI_SECONDARY_NO_FAULT_LITTLE = 0x8b,
ASI_PST8_PRIMARY = 0xc0,
ASI_PST8_SECONDARY = 0xc1,
ASI_PST16_PRIMARY = 0xc2,
ASI_PST16_SECONDARY = 0xc3,
ASI_PST32_PRIMARY = 0xc4,
ASI_PST32_SECONDARY = 0xc5,
ASI_PST8_PRIMARY_LITTLE = 0xc8,
ASI_PST8_SECONDARY_LITTLE = 0xc9,
ASI_PST16_PRIMARY_LITTLE = 0xca,
ASI_PST16_SECONDARY_LITTLE = 0xcb,
ASI_PST32_PRIMARY_LITTLE = 0xcc,
ASI_PST32_SECONDARY_LITTLE = 0xcd,
ASI_FL8_PRIMARY = 0xd0,
ASI_FL8_SECONDARY = 0xd1,
ASI_FL16_PRIMARY = 0xd2,
ASI_FL16_SECONDARY = 0xd3,
ASI_FL8_PRIMARY_LITTLE = 0xd8,
ASI_FL8_SECONDARY_LITTLE = 0xd9,
ASI_FL16_PRIMARY_LITTLE = 0xda,
ASI_FL16_SECONDARY_LITTLE = 0xdb,
ASI_BLOCK_COMMIT_PRIMARY = 0xe0,
ASI_BLOCK_COMMIT_SECONDARY = 0xe1,
ASI_BLOCK_PRIMARY = 0xf0,
ASI_BLOCK_SECONDARY = 0xf1,
ASI_BLOCK_PRIMARY_LITTLE = 0xf8,
ASI_BLOCK_SECONDARY_LITTLE = 0xf9,
ASI_SCRATCHPAD = 0x20,
ASI_HYP_SCRATCHPAD = 0x4f,
ASI_CMP = 0x41,
ASI_CMP_CORE = 0x63
};
SS_Asi( uint8_t a ) : asi(a) {}
uint8_t operator()() { return asi; }
SS_Asi& operator=( uint8_t v ) { asi = v; return *this; }
SS_Asi& operator=( SS_Asi& a ) { asi = a.asi; return *this; }
protected:
uint8_t asi;
};
#endif