Commit | Line | Data |
---|---|---|
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 | ||
30 | class 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 |