diff options
| author | Philippe Mathieu-Daudé <philmd@linaro.org> | 2023-12-07 10:41:27 +0100 |
|---|---|---|
| committer | Philippe Mathieu-Daudé <philmd@linaro.org> | 2024-04-26 15:28:11 +0200 |
| commit | 75bbe6a4d2bc9c3681ab71021645d655ad045a75 (patch) | |
| tree | 66bc852614d7ca0004ee157ed683cc98bdf5911a /page-target.c | |
| parent | 8501048b501aec0d2d422aafd713348c235d8b83 (diff) | |
| download | focaccia-qemu-75bbe6a4d2bc9c3681ab71021645d655ad045a75.tar.gz focaccia-qemu-75bbe6a4d2bc9c3681ab71021645d655ad045a75.zip | |
exec: Expose 'target_page.h' API to user emulation
User-only objects might benefit from the "exec/target_page.h" API, which allows to build some objects once for all targets. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Warner Losh <imp@bsdimp.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20231211212003.21686-3-philmd@linaro.org>
Diffstat (limited to 'page-target.c')
| -rw-r--r-- | page-target.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/page-target.c b/page-target.c new file mode 100644 index 0000000000..82211c8593 --- /dev/null +++ b/page-target.c @@ -0,0 +1,44 @@ +/* + * QEMU page values getters (target independent) + * + * Copyright (c) 2003 Fabrice Bellard + * + * SPDX-License-Identifier: LGPL-2.1-or-later + */ + +#include "qemu/osdep.h" +#include "exec/target_page.h" +#include "exec/cpu-defs.h" +#include "cpu.h" +#include "exec/cpu-all.h" + +size_t qemu_target_page_size(void) +{ + return TARGET_PAGE_SIZE; +} + +int qemu_target_page_mask(void) +{ + return TARGET_PAGE_MASK; +} + +int qemu_target_page_bits(void) +{ + return TARGET_PAGE_BITS; +} + +int qemu_target_page_bits_min(void) +{ + return TARGET_PAGE_BITS_MIN; +} + +/* Convert target pages to MiB (2**20). */ +size_t qemu_target_pages_to_MiB(size_t pages) +{ + int page_bits = TARGET_PAGE_BITS; + + /* So far, the largest (non-huge) page size is 64k, i.e. 16 bits. */ + g_assert(page_bits < 20); + + return pages >> (20 - page_bits); +} |