]> git.proxmox.com Git - mirror_qemu.git/blame - include/exec/page-vary.h
exec-all: Widen tb_page_addr_t for user-only
[mirror_qemu.git] / include / exec / page-vary.h
CommitLineData
27eb9d65
RH
1/*
2 * Definitions for cpus with variable page sizes.
3 *
4 * Copyright (c) 2003 Fabrice Bellard
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
18 */
19
20#ifndef EXEC_PAGE_VARY_H
21#define EXEC_PAGE_VARY_H
22
23typedef struct {
24 bool decided;
25 int bits;
26 uint64_t mask;
27} TargetPageBits;
28
44b99a6d
RH
29#ifdef IN_PAGE_VARY
30extern bool set_preferred_target_page_bits_common(int bits);
31extern void finalize_target_page_bits_common(int min);
32#endif
33
ec5f7ca8
MAL
34/**
35 * set_preferred_target_page_bits:
36 * @bits: number of bits needed to represent an address within the page
37 *
38 * Set the preferred target page size (the actual target page
39 * size may be smaller than any given CPU's preference).
40 * Returns true on success, false on failure (which can only happen
41 * if this is called after the system has already finalized its
42 * choice of page size and the requested page size is smaller than that).
43 */
44bool set_preferred_target_page_bits(int bits);
45
46/**
47 * finalize_target_page_bits:
48 * Commit the final value set by set_preferred_target_page_bits.
49 */
50void finalize_target_page_bits(void);
51
27eb9d65 52#endif /* EXEC_PAGE_VARY_H */