VirtualBox

Changeset 100318 in vbox


Ignore:
Timestamp:
Jun 28, 2023 10:36:46 AM (23 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
158033
Message:

include/iprt/{param.h,zero.h,asm.h}: Make the use of PAGE_SIZE/PAGE_SHIFT/PAGE_OFFSET_MASK in linux.arm64 userspace code result in a build error due to unknown page size, for the kerne side the page size is derived from the kernel config bits, bugref:10476

Location:
trunk/include/iprt
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/asm.h

    r100197 r100318  
    55675567#else
    55685568# define RT_ASM_PAGE_SIZE   0x1000
    5569 # if defined(PAGE_SIZE) && !defined(NT_INCLUDED)
     5569# if defined(PAGE_SIZE) && !defined(NT_INCLUDED) && !defined(RT_OS_LINUX) && !defined(RT_ARCH_ARM64)
    55705570#  if PAGE_SIZE != 0x1000
    55715571#   error "PAGE_SIZE is not 0x1000!"
  • trunk/include/iprt/param.h

    r98103 r100318  
    6565# define PAGE_SIZE          8192
    6666#elif defined(RT_ARCH_ARM64)
    67 # define PAGE_SIZE          16384
     67# if defined(RT_OS_DARWIN)
     68#  define PAGE_SIZE         16384
     69# elif defined(RT_OS_LINUX)
     70#  ifdef IN_RING0
     71#   define PAGE_SIZE        (1 << CONFIG_ARM64_PAGE_SHIFT)
     72#  else
     73#   define PAGE_SIZE        RT_DONT_USE_PAGE_SIZE_ON_LINUX_ARM64_IN_USERSPACE_DUE_TO_VARIABLE_PAGE_SIZE
     74#  endif
     75# else
     76#  error "This needs porting"
     77# endif
    6878#else
    6979# define PAGE_SIZE          4096
     
    7787# define PAGE_SHIFT         13
    7888#elif defined(RT_ARCH_ARM64)
    79 # define PAGE_SHIFT         14
     89# if defined(RT_OS_DARWIN)
     90#  define PAGE_SHIFT        14
     91# elif defined(RT_OS_LINUX)
     92#  ifdef IN_RING0
     93#   define PAGE_SHIFT       CONFIG_ARM64_PAGE_SHIFT
     94#  else
     95#   define PAGE_SHIFT       RT_DONT_USE_PAGE_SHIFT_ON_LINUX_ARM64_IN_USERSPACE_DUE_TO_VARIABLE_PAGE_SIZE
     96#  endif
     97# else
     98#  error "This needs porting"
     99# endif
    80100#else
    81101# define PAGE_SHIFT         12
     
    91111# define PAGE_OFFSET_MASK    0x1fff
    92112#elif defined(RT_ARCH_ARM64)
    93 # define PAGE_OFFSET_MASK    0x3fff
     113# if defined(RT_OS_DARWIN)
     114#  define PAGE_OFFSET_MASK   0x3fff
     115# elif defined(RT_OS_LINUX)
     116#  ifdef IN_RING0
     117#   define PAGE_OFFSET_MASK  (PAGE_SIZE - 1)
     118#  else
     119#   define PAGE_OFFSET_MASK  RT_DONT_USE_PAGE_OFFSET_MASK_ON_LINUX_ARM64_IN_USERSPACE_DUE_TO_VARIABLE_PAGE_SIZE
     120#  endif
     121# else
     122#  error "This needs porting"
     123# endif
    94124#else
    95125# define PAGE_OFFSET_MASK    0xfff
  • trunk/include/iprt/zero.h

    r98103 r100318  
    5353 */
    5454
     55/* Not available on linux.arm64 due to unknown page size in userspace. */
     56#if !defined(RT_ARCH_ARM64) && !defined(RT_OS_LINUX)
    5557extern RTDATADECL(uint8_t const)   g_abRTZeroPage[PAGE_SIZE];
     58#endif
    5659extern RTDATADECL(uint8_t const)   g_abRTZero4K[_4K];
    5760extern RTDATADECL(uint8_t const)   g_abRTZero8K[_8K];
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette