* ========== Copyright Header Begin ==========================================
* OpenSPARC T2 Processor File: SS_ValSync.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 ============================================
SS_ValSync( SS_Strand
* _strand
);
void ctr_read( SS_Registers::Index idx
, uint64_t data
);
void ctr_write( SS_Registers::Index idx
, uint64_t data
);
void asi_read( uint8_t asi
, SS_Vaddr va
, uint64_t data
);
void asi_write( uint8_t asi
, SS_Vaddr va
, uint64_t data
);
void csr_read( SS_Paddr pa
, uint64_t data
, bool little_endian
);
void csr_write( SS_Paddr pa
, uint64_t data
, bool little_endian
);
void set_multi_entry( uint8_t asi
) { multi_entry
[asi
] = true; }
std::map
<SS_Registers::Index
,uint64_t> ctr_rd
;
// ASI_READ follow-me is a multi-entry FIFO queue, so that we can have
// a command sequence like: ASI_READ, ASI_READ, ldxa, ldxa. If we use
// single-entry queue, then the command sequence must be: ASI_READ, ldxa,
// ASI_READ, ldxa, which is harder for testbench to line up the commands
// properly. But not all ASI_READ follow-me's need the multi-entry
// functionality, most will be happy with just keeping one entry (the
// latest one) in the queue.
std::map
<SS_Vaddr
,std::list
<uint64_t>*> asi_rd
[SS_Asi::MAX
];
std::map
<SS_Paddr
,uint64_t> csr_rd
;
// set true means a particular asi can have multi-entry ASI FOLLOW-ME
bool multi_entry
[SS_Asi::MAX
];