qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC v2 14/34] cpu-defs: Allow multiple inclusions


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [RFC v2 14/34] cpu-defs: Allow multiple inclusions
Date: Mon, 01 Jun 2015 09:59:46 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0


On 31/05/2015 08:11, Peter Crosthwaite wrote:
> Allow subsequent inclusion of cpu-defs.h. This allows including
> multiple cpu.h's and each getting the right set of definitions for
> its env structure definition. All define symbols are undeffed and
> redeffed to the new values.
> 
> CPUTLBEntry and CPUIOTLBEntry need to be renamed via #define by
> the caller to avoid namespace collisions.

Please document these things (#undeffing of preprocessor symbols and
what needs to be renamed) in the header.

Also the same is true for include/exec/target-long.h---where
additionally I am not sure about how you'd deal with a redefined
typedef.  Some compilers flag it as an error even if the source type is
the same.

Paolo

> Signed-off-by: Peter Crosthwaite <address@hidden>
> ---
>  include/exec/cpu-defs.h | 14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/include/exec/cpu-defs.h b/include/exec/cpu-defs.h
> index a1c418f..6b59e58 100644
> --- a/include/exec/cpu-defs.h
> +++ b/include/exec/cpu-defs.h
> @@ -16,8 +16,10 @@
>   * You should have received a copy of the GNU Lesser General Public
>   * License along with this library; if not, see 
> <http://www.gnu.org/licenses/>.
>   */
> -#ifndef CPU_DEFS_H
> -#define CPU_DEFS_H
> +
> +/* No multiple include guard intended. Multi-arch setups may require multiple
> + * cpu.h's included which means this can be and should be reached twice.
> + */
>  
>  #ifndef NEED_CPU_H
>  #error cpu.h included from common code
> @@ -34,12 +36,19 @@
>  
>  #include "exec/target-long.h"
>  
> +#undef CPU_COMMON
> +#undef CPU_COMMON_TLB
> +
>  #if !defined(CONFIG_USER_ONLY)
> +#undef CPU_TLB_BITS
> +#undef CPU_TLB_SIZE
> +#undef CPU_VTLB_SIZE
>  #define CPU_TLB_BITS 8
>  #define CPU_TLB_SIZE (1 << CPU_TLB_BITS)
>  /* use a fully associative victim tlb of 8 entries */
>  #define CPU_VTLB_SIZE 8
>  
> +#undef CPU_TLB_ENTRY_BITS
>  #if HOST_LONG_BITS == 32 && TARGET_LONG_BITS == 32
>  #define CPU_TLB_ENTRY_BITS 4
>  #else
> @@ -100,4 +109,3 @@ typedef struct CPUIOTLBEntry {
>      /* soft mmu support */                                              \
>      CPU_COMMON_TLB                                                      \
>  
> -#endif
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]