Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / sam / cpus / vonk / ss / api / pli / src / SS_TimedTlb.h
CommitLineData
920dae64
AT
1/*
2* ========== Copyright Header Begin ==========================================
3*
4* OpenSPARC T2 Processor File: SS_TimedTlb.h
5* Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
6* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
7*
8* The above named program is free software; you can redistribute it and/or
9* modify it under the terms of the GNU General Public
10* License version 2 as published by the Free Software Foundation.
11*
12* The above named program is distributed in the hope that it will be
13* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
14* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15* General Public License for more details.
16*
17* You should have received a copy of the GNU General Public
18* License along with this work; if not, write to the Free Software
19* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
20*
21* ========== Copyright Header End ============================================
22*/
23#ifndef __SS_TimedTlb_h__
24#define __SS_TimedTlb_h__
25
26#include "SS_Tlb.h"
27#include <map>
28#include "SS_PliSocket.h"
29
30class SS_TimedTlb
31{
32 public:
33 SS_TimedTlb( SS_Tlb* _tlb, uint_t _upper_size=256 );
34
35 SS_Tlb* lookup( uint32_t time );
36 SS_Tlb* modify( uint32_t time );
37 SS_Tlb* latest() { return latest_tlb; }
38
39 // socket file descriptor to RTL testbench, used to report error
40 SS_PliSocket* socket;
41
42 private:
43 struct Cmp { bool operator()( uint32_t t1, uint32_t t2 ) const { return t1 > t2; } };
44
45 std::map<uint32_t,SS_Tlb*,Cmp> tlb;
46
47 uint32_t latest_time; // Last time modify was called
48 SS_Tlb* latest_tlb; // Point to the latest created tlb
49 uint_t upper_size; // Upper size limit for the TLB map.
50};
51
52#endif
53