diff mbox series

[06/18] accel/tcg: Move page_[un]protect() to 'user/page-protection.h'

Message ID 20241212185341.2857-7-philmd@linaro.org (mailing list archive)
State New
Headers show
Series accel/tcg: Extract user APIs out of 'exec/[cpu, exec]-all.h' | expand

Commit Message

Philippe Mathieu-Daudé Dec. 12, 2024, 6:53 p.m. UTC
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

Comments

Pierrick Bouvier Dec. 12, 2024, 7:24 p.m. UTC | #1
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 mbox series

Patch

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.