xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>
Cc: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org, wei.liu2@citrix.com
Subject: Re: [PATCH 04/22] mini-os: make some memory management related macros usable from assembler
Date: Tue, 23 Aug 2016 21:46:33 +0200	[thread overview]
Message-ID: <20160823194633.GP4401@var.home> (raw)
In-Reply-To: <1471965368-6159-5-git-send-email-jgross@suse.com>

Juergen Gross, on Tue 23 Aug 2016 17:15:50 +0200, wrote:
> Especially page table entry definitions are currently not usable from
> assembler sources on x86 as the constants are defined with ULL suffix.
> Change this by adding the suffix only when the header is included from
> a C source.
> 
> Hide some C prototypes when in assembler environment.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

> ---
>  include/x86/arch_mm.h | 56 +++++++++++++++++++++++++++++++--------------------
>  1 file changed, 34 insertions(+), 22 deletions(-)
> 
> diff --git a/include/x86/arch_mm.h b/include/x86/arch_mm.h
> index 690a919..2b18b34 100644
> --- a/include/x86/arch_mm.h
> +++ b/include/x86/arch_mm.h
> @@ -29,11 +29,16 @@
>  #include <xen/xen.h>
>  #if defined(__i386__)
>  #include <xen/arch-x86_32.h>
> +#define __CONST(x) x ## ULL
>  #elif defined(__x86_64__)
>  #include <xen/arch-x86_64.h>
> +#define __CONST(x) x ## UL
>  #else
>  #error "Unsupported architecture"
>  #endif
> +#define CONST(x) __CONST(x)
> +#else
> +#define CONST(x) x
>  #endif
>  
>  /*
> @@ -81,14 +86,16 @@
>  #define PRIpte "016llx"
>  #ifndef __ASSEMBLY__
>  typedef uint64_t pgentry_t;
> +#else
> +#define PTE(val) .long val; .long 0
>  #endif
>  
> -#define MAX_MEM_SIZE            0x3f000000UL
> -#define VIRT_KERNEL_AREA        0x3f000000UL
> -#define VIRT_DEMAND_AREA        0x40000000UL
> -#define VIRT_HEAP_AREA          0xb0000000UL
> +#define MAX_MEM_SIZE            CONST(0x3f000000)
> +#define VIRT_KERNEL_AREA        CONST(0x3f000000)
> +#define VIRT_DEMAND_AREA        CONST(0x40000000)
> +#define VIRT_HEAP_AREA          CONST(0xb0000000)
>  
> -#define DEMAND_MAP_PAGES        0x6ffffUL
> +#define DEMAND_MAP_PAGES        CONST(0x6ffff)
>  #define HEAP_PAGES_MAX          ((HYPERVISOR_VIRT_START - VIRT_HEAP_AREA) / \
>                                   PAGE_SIZE - 1)
>  
> @@ -115,15 +122,17 @@ typedef uint64_t pgentry_t;
>  #define PRIpte "016lx"
>  #ifndef __ASSEMBLY__
>  typedef unsigned long pgentry_t;
> +#else
> +#define PTE(val) .quad val
>  #endif
>  
> -#define MAX_MEM_SIZE            (512ULL << 30)
> -#define VIRT_KERNEL_AREA        0x0000008000000000UL
> -#define VIRT_DEMAND_AREA        0x0000100000000000UL
> -#define VIRT_HEAP_AREA          0x0000200000000000UL
> +#define MAX_MEM_SIZE            (CONST(512) << 30)
> +#define VIRT_KERNEL_AREA        CONST(0x0000008000000000)
> +#define VIRT_DEMAND_AREA        CONST(0x0000100000000000)
> +#define VIRT_HEAP_AREA          CONST(0x0000200000000000)
>  
> -#define DEMAND_MAP_PAGES        0x8000000UL
> -#define HEAP_PAGES_MAX          0x8000000UL
> +#define DEMAND_MAP_PAGES        CONST(0x8000000)
> +#define HEAP_PAGES_MAX          CONST(0x8000000)
>  
>  #endif
>  
> @@ -147,16 +156,16 @@ typedef unsigned long pgentry_t;
>    (((_a) >> L4_PAGETABLE_SHIFT) & (L4_PAGETABLE_ENTRIES - 1))
>  #endif
>  
> -#define _PAGE_PRESENT  0x001ULL
> -#define _PAGE_RW       0x002ULL
> -#define _PAGE_USER     0x004ULL
> -#define _PAGE_PWT      0x008ULL
> -#define _PAGE_PCD      0x010ULL
> -#define _PAGE_ACCESSED 0x020ULL
> -#define _PAGE_DIRTY    0x040ULL
> -#define _PAGE_PAT      0x080ULL
> -#define _PAGE_PSE      0x080ULL
> -#define _PAGE_GLOBAL   0x100ULL
> +#define _PAGE_PRESENT  CONST(0x001)
> +#define _PAGE_RW       CONST(0x002)
> +#define _PAGE_USER     CONST(0x004)
> +#define _PAGE_PWT      CONST(0x008)
> +#define _PAGE_PCD      CONST(0x010)
> +#define _PAGE_ACCESSED CONST(0x020)
> +#define _PAGE_DIRTY    CONST(0x040)
> +#define _PAGE_PAT      CONST(0x080)
> +#define _PAGE_PSE      CONST(0x080)
> +#define _PAGE_GLOBAL   CONST(0x100)
>  
>  #if defined(__i386__)
>  #define L1_PROT (_PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED)
> @@ -191,12 +200,14 @@ typedef unsigned long pgentry_t;
>  #define L3_P2M_IDX(pfn) (((pfn) >> L2_P2M_SHIFT) & P2M_MASK)
>  #define INVALID_P2M_ENTRY (~0UL)
>  
> +#ifndef __ASSEMBLY__
>  void p2m_chk_pfn(unsigned long pfn);
>  
>  static inline unsigned long p2m_pages(unsigned long pages)
>  {
>      return (pages + P2M_ENTRIES - 1) >> L1_P2M_SHIFT;
>  }
> +#endif
>  
>  #include "arch_limits.h"
>  #define PAGE_SIZE       __PAGE_SIZE
> @@ -239,7 +250,6 @@ static __inline__ paddr_t machine_to_phys(maddr_t machine)
>  	phys = (phys << PAGE_SHIFT) | (machine & ~PAGE_MASK);
>  	return phys;
>  }
> -#endif
>  
>  #define VIRT_START                 ((unsigned long)&_text)
>  
> @@ -288,4 +298,6 @@ static __inline__ paddr_t machine_to_phys(maddr_t machine)
>  
>  pgentry_t *need_pgt(unsigned long addr);
>  
> +#endif
> +
>  #endif /* _ARCH_MM_H_ */
> -- 
> 2.6.6
> 

-- 
Samuel
I am the "ILOVEGNU" signature virus. Just copy me to your signature.
This email was infected under the terms of the GNU General Public License.

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

  reply	other threads:[~2016-08-23 19:46 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-23 15:15 [PATCH 00/22] mini-os: support HVMlite mode Juergen Gross
2016-08-23 15:15 ` [PATCH 01/22] mini-os: resync xen headers Juergen Gross
2016-08-23 19:44   ` Samuel Thibault
2016-08-23 15:15 ` [PATCH 02/22] mini-os: make dump_regs() work in early boot Juergen Gross
2016-08-23 19:44   ` Samuel Thibault
2016-08-23 15:15 ` [PATCH 03/22] mini-os: add CONFIG_PARAVIRT Juergen Gross
2016-08-23 19:54   ` Samuel Thibault
2016-08-23 15:15 ` [PATCH 04/22] mini-os: make some memory management related macros usable from assembler Juergen Gross
2016-08-23 19:46   ` Samuel Thibault [this message]
2016-08-23 15:15 ` [PATCH 05/22] mini-os: add boot code for HVMlite support Juergen Gross
2016-08-23 20:51   ` Samuel Thibault
2016-08-24  5:13     ` Juergen Gross
2016-08-23 15:15 ` [PATCH 06/22] mini-os: setup hypercall page for HVMlite Juergen Gross
2016-08-23 21:03   ` Samuel Thibault
2016-08-24  5:10     ` Juergen Gross
2016-08-23 15:15 ` [PATCH 07/22] mini-os: support hvm_op hypercall Juergen Gross
2016-08-23 22:00   ` Samuel Thibault
2016-08-23 15:15 ` [PATCH 08/22] mini-os: initialize trap handling for HVMlite Juergen Gross
2016-08-23 22:05   ` Samuel Thibault
2016-08-23 15:15 ` [PATCH 09/22] mini-os: support HVMlite traps Juergen Gross
2016-08-23 22:10   ` Samuel Thibault
2016-08-23 15:15 ` [PATCH 10/22] mini-os: make p2m related code depend on CONFIG_PARAVIRT Juergen Gross
2016-08-23 22:20   ` Samuel Thibault
2016-08-23 15:15 ` [PATCH 11/22] mini-os: add static page tables for virtual kernel area for HVMlite Juergen Gross
2016-08-23 22:27   ` Samuel Thibault
2016-08-23 15:15 ` [PATCH 12/22] mini-os: add x86 native page table handling Juergen Gross
2016-08-23 22:40   ` Samuel Thibault
2016-08-23 15:15 ` [PATCH 13/22] mini-os: correct wrong calculation of alloc bitmap size Juergen Gross
2016-08-23 19:49   ` Samuel Thibault
2016-08-23 15:16 ` [PATCH 14/22] mini-os: add map_frame_virt() function Juergen Gross
2016-08-23 22:42   ` Samuel Thibault
2016-08-23 15:16 ` [PATCH 15/22] mini-os: setup console interface parameters Juergen Gross
2016-08-23 22:44   ` Samuel Thibault
2016-08-23 15:16 ` [PATCH 16/22] mini-os: setup xenbus " Juergen Gross
2016-08-23 22:45   ` Samuel Thibault
2016-08-23 15:16 ` [PATCH 17/22] mini-os: add get_cmdline() function Juergen Gross
2016-08-23 23:03   ` [Minios-devel] " Samuel Thibault
2016-08-23 15:16 ` [PATCH 18/22] mini-os: map shared info page for HVMlite Juergen Gross
2016-08-23 22:47   ` Samuel Thibault
2016-08-23 15:16 ` [PATCH 19/22] mini-os: remove using start_info in architecture independent code Juergen Gross
2016-08-23 22:48   ` Samuel Thibault
2016-08-23 15:16 ` [PATCH 20/22] mini-os: print start of day messages depending on domain type Juergen Gross
2016-08-23 22:51   ` Samuel Thibault
2016-08-24  5:09     ` Juergen Gross
2016-08-23 15:16 ` [PATCH 21/22] mini-os: get physical memory map Juergen Gross
2016-08-23 22:58   ` Samuel Thibault
2016-08-23 15:16 ` [PATCH 22/22] mini-os: support idle for HVMlite Juergen Gross
2016-08-23 23:01   ` Samuel Thibault

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160823194633.GP4401@var.home \
    --to=samuel.thibault@ens-lyon.org \
    --cc=jgross@suse.com \
    --cc=minios-devel@lists.xenproject.org \
    --cc=wei.liu2@citrix.com \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).