Message ID | 20241212185341.2857-7-philmd@linaro.org |
---|---|
State | New |
Headers | show |
Series | accel/tcg: Extract user APIs out of 'exec/[cpu, exec]-all.h' | expand |
On 12/12/24 10:53, Philippe Mathieu-Daudé wrote: > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > accel/tcg/internal-target.h | 1 + > include/exec/translate-all.h | 5 ----- > include/user/page-protection.h | 20 ++++++++++++++++++++ > accel/tcg/user-exec.c | 2 +- > linux-user/elfload.c | 2 +- > 5 files changed, 23 insertions(+), 7 deletions(-) > create mode 100644 include/user/page-protection.h > > diff --git a/accel/tcg/internal-target.h b/accel/tcg/internal-target.h > index fe109724c68..a03c05315a4 100644 > --- a/accel/tcg/internal-target.h > +++ b/accel/tcg/internal-target.h > @@ -37,6 +37,7 @@ void page_table_config_init(void); > #endif > > #ifdef CONFIG_USER_ONLY > +#include "user/page-protection.h" > /* > * For user-only, page_protect sets the page read-only. > * Since most execution is already on read-only pages, and we'd need to > diff --git a/include/exec/translate-all.h b/include/exec/translate-all.h > index c50661a05d5..039668ff8ac 100644 > --- a/include/exec/translate-all.h > +++ b/include/exec/translate-all.h > @@ -25,9 +25,4 @@ > /* translate-all.c */ > void tb_check_watchpoint(CPUState *cpu, uintptr_t retaddr); > > -#ifdef CONFIG_USER_ONLY > -void page_protect(tb_page_addr_t page_addr); > -int page_unprotect(tb_page_addr_t address, uintptr_t pc); > -#endif > - > #endif /* TRANSLATE_ALL_H */ > diff --git a/include/user/page-protection.h b/include/user/page-protection.h > new file mode 100644 > index 00000000000..448c7a03449 > --- /dev/null > +++ b/include/user/page-protection.h > @@ -0,0 +1,20 @@ > +/* > + * QEMU page protection declarations. > + * > + * Copyright (c) 2003 Fabrice Bellard > + * > + * SPDX-License-Identifier: LGPL-2.1+ > + */ > +#ifndef USER_PAGE_PROTECTION_H > +#define USER_PAGE_PROTECTION_H > + > +#ifndef CONFIG_USER_ONLY > +#error Cannot include this header from system emulation > +#endif > + > +#include "exec/translation-block.h" > + > +void page_protect(tb_page_addr_t page_addr); > +int page_unprotect(tb_page_addr_t address, uintptr_t pc); > + > +#endif > diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c > index 4ed6dd19f30..636932303bb 100644 > --- a/accel/tcg/user-exec.c > +++ b/accel/tcg/user-exec.c > @@ -25,7 +25,7 @@ > #include "qemu/rcu.h" > #include "exec/cpu_ldst.h" > #include "qemu/main-loop.h" > -#include "exec/translate-all.h" > +#include "user/page-protection.h" > #include "exec/page-protection.h" > #include "exec/helper-proto.h" > #include "qemu/atomic128.h" > diff --git a/linux-user/elfload.c b/linux-user/elfload.c > index 471a384b222..521fdde0aa2 100644 > --- a/linux-user/elfload.c > +++ b/linux-user/elfload.c > @@ -3918,7 +3918,7 @@ int load_elf_binary(struct linux_binprm *bprm, struct image_info *info) > } > > #ifdef USE_ELF_CORE_DUMP > -#include "exec/translate-all.h" > +#include "user/page-protection.h" > > /* > * Definitions to generate Intel SVR4-like core files. Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
diff --git a/accel/tcg/internal-target.h b/accel/tcg/internal-target.h index fe109724c68..a03c05315a4 100644 --- a/accel/tcg/internal-target.h +++ b/accel/tcg/internal-target.h @@ -37,6 +37,7 @@ void page_table_config_init(void); #endif #ifdef CONFIG_USER_ONLY +#include "user/page-protection.h" /* * For user-only, page_protect sets the page read-only. * Since most execution is already on read-only pages, and we'd need to diff --git a/include/exec/translate-all.h b/include/exec/translate-all.h index c50661a05d5..039668ff8ac 100644 --- a/include/exec/translate-all.h +++ b/include/exec/translate-all.h @@ -25,9 +25,4 @@ /* translate-all.c */ void tb_check_watchpoint(CPUState *cpu, uintptr_t retaddr); -#ifdef CONFIG_USER_ONLY -void page_protect(tb_page_addr_t page_addr); -int page_unprotect(tb_page_addr_t address, uintptr_t pc); -#endif - #endif /* TRANSLATE_ALL_H */ diff --git a/include/user/page-protection.h b/include/user/page-protection.h new file mode 100644 index 00000000000..448c7a03449 --- /dev/null +++ b/include/user/page-protection.h @@ -0,0 +1,20 @@ +/* + * QEMU page protection declarations. + * + * Copyright (c) 2003 Fabrice Bellard + * + * SPDX-License-Identifier: LGPL-2.1+ + */ +#ifndef USER_PAGE_PROTECTION_H +#define USER_PAGE_PROTECTION_H + +#ifndef CONFIG_USER_ONLY +#error Cannot include this header from system emulation +#endif + +#include "exec/translation-block.h" + +void page_protect(tb_page_addr_t page_addr); +int page_unprotect(tb_page_addr_t address, uintptr_t pc); + +#endif diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c index 4ed6dd19f30..636932303bb 100644 --- a/accel/tcg/user-exec.c +++ b/accel/tcg/user-exec.c @@ -25,7 +25,7 @@ #include "qemu/rcu.h" #include "exec/cpu_ldst.h" #include "qemu/main-loop.h" -#include "exec/translate-all.h" +#include "user/page-protection.h" #include "exec/page-protection.h" #include "exec/helper-proto.h" #include "qemu/atomic128.h" diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 471a384b222..521fdde0aa2 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -3918,7 +3918,7 @@ int load_elf_binary(struct linux_binprm *bprm, struct image_info *info) } #ifdef USE_ELF_CORE_DUMP -#include "exec/translate-all.h" +#include "user/page-protection.h" /* * Definitions to generate Intel SVR4-like core files.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- accel/tcg/internal-target.h | 1 + include/exec/translate-all.h | 5 ----- include/user/page-protection.h | 20 ++++++++++++++++++++ accel/tcg/user-exec.c | 2 +- linux-user/elfload.c | 2 +- 5 files changed, 23 insertions(+), 7 deletions(-) create mode 100644 include/user/page-protection.h