From patchwork Wed Aug 24 10:11:26 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juergen Gross X-Patchwork-Id: 9297413 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id DCD22607F0 for ; Wed, 24 Aug 2016 10:14:13 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CBE9D28E9A for ; Wed, 24 Aug 2016 10:14:13 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BA78428EE2; Wed, 24 Aug 2016 10:14:13 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 4037228E8E for ; Wed, 24 Aug 2016 10:14:13 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bcV9z-0001OT-De; Wed, 24 Aug 2016 10:11:51 +0000 Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bcV9y-0001JX-Au; Wed, 24 Aug 2016 10:11:50 +0000 Received: from [85.158.143.35] by server-9.bemta-6.messagelabs.com id 37/EB-28857-5E27DB75; Wed, 24 Aug 2016 10:11:49 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrJLMWRWlGSWpSXmKPExsVyuP0Ov+6Tor3 hBo0rTSzefl3CbPF9y2QmByaPwx+usAQwRrFm5iXlVySwZux+wF1wRLFi14GrLA2ME6S7GDk5 JASMJN5O/MfUxcjFISSwkFHi8aeL7CAJNgFViQ3XT7GC2CICbhJfvs9iA7GZBSIk5nw4xQJiC wskS7y/1M0IYrMA1Z9f9p0ZxOYVsJe4sn82K8QCOYnrM6czgdicAg4S0xY/AOsVAqrZ/3Yq6w RG7gWMDKsY1YtTi8pSi3Qt9JKKMtMzSnITM3N0DQ3M9HJTi4sT01NzEpOK9ZLzczcxAr3MAAQ 7GGdf9j/EKMnBpCTKe1N1b7gQX1J+SmVGYnFGfFFpTmrxIUYZDg4lCd4vhUA5waLU9NSKtMwc YLjBpCU4eJREeBeApHmLCxJzizPTIVKnGBWlxHmtgUEqJACSyCjNg2uDhfglRlkpYV5GoEOEe ApSi3IzS1DlXzGKczAqCfPuBRnPk5lXAjf9FdBiJqDFLfd3gywuSURISTUwajlcS19pvCDXuj q6dfmbG9e/P5l98vqNbRyvXfg8LDsPaLTNm5dSPc310CvT9c9Uk85mR96cYeLzUGn7contKk3 Sj3pLzZ91970RNyqP2cGobBoQsuZGSGvv/oT1QUpJqyRu3U1at6Zx4R6O1v3P9mWYxLvbF3U2 HOs9ohx6iDM3P5bz8x8LJZbijERDLeai4kQA+38ZhmwCAAA= X-Env-Sender: jgross@suse.com X-Msg-Ref: server-5.tower-21.messagelabs.com!1472033508!29876884!1 X-Originating-IP: [195.135.220.15] X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG, UPPERCASE_25_50 X-StarScan-Received: X-StarScan-Version: 8.84; banners=-,-,- X-VirusChecked: Checked Received: (qmail 48924 invoked from network); 24 Aug 2016 10:11:48 -0000 Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15) by server-5.tower-21.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted SMTP; 24 Aug 2016 10:11:48 -0000 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 65551AC1E; Wed, 24 Aug 2016 10:11:48 +0000 (UTC) From: Juergen Gross To: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org Date: Wed, 24 Aug 2016 12:11:26 +0200 Message-Id: <1472033504-23180-5-git-send-email-jgross@suse.com> X-Mailer: git-send-email 2.6.6 In-Reply-To: <1472033504-23180-1-git-send-email-jgross@suse.com> References: <1472033504-23180-1-git-send-email-jgross@suse.com> Cc: Juergen Gross , samuel.thibault@ens-lyon.org, wei.liu2@citrix.com Subject: [Xen-devel] [PATCH v2 04/22] mini-os: make some memory management related macros usable from assembler X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP 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 Reviewed-by: Samuel Thibault --- 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 #if defined(__i386__) #include +#define __CONST(x) x ## ULL #elif defined(__x86_64__) #include +#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_ */