forked from S2E/libcpu
-
Notifications
You must be signed in to change notification settings - Fork 0
/
exec-phystb.h
42 lines (34 loc) · 1.43 KB
/
exec-phystb.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/// Copyright (C) 2003 Fabrice Bellard
/// Copyright (C) 2010 Dependable Systems Laboratory, EPFL
/// Copyright (C) 2016 Cyberhaven
/// Copyrights of all contributions belong to their respective owners.
///
/// This library is free software; you can redistribute it and/or
/// modify it under the terms of the GNU Library General Public
/// License as published by the Free Software Foundation; either
/// version 2 of the License, or (at your option) any later version.
///
/// This library 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
/// Library General Public License for more details.
///
/// You should have received a copy of the GNU Library General Public
/// License along with this library; if not, see <http://www.gnu.org/licenses/>.
#ifndef __EXEC_PHYS_TB__H
#define __EXEC_PHYS_TB__H
#include <inttypes.h>
#include "exec.h"
struct TranslationBlock;
typedef struct PageDesc {
/* list of TBs intersecting this ram page */
TranslationBlock *first_tb;
/* in order to optimize self modifying code, we count the number
of lookups we do to a given page to use a bitmap */
unsigned int code_write_count;
uint8_t *code_bitmap;
} PageDesc;
extern void *l1_map[V_L1_SIZE];
PageDesc *page_find(tb_page_addr_t index);
PageDesc *page_find_alloc(tb_page_addr_t index, int alloc);
#endif