VirtualBox

Ignore:
Timestamp:
Nov 29, 2024 10:15:46 PM (3 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
166204
Message:

VMM/IEM: Deal with hidden pointer to VBOXSTRICTRC return struct on win.arm64. jiraref:VBP-1466

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/include/IEMN8veRecompiler.h

    r106622 r107200  
    3939
    4040#include <iprt/assertcompile.h> /* for RT_IN_ASSEMBLER mode */
     41#include <VBox/cdefs.h>         /* for VBOXSTRICTRC_STRICT_ENABLED */
    4142
    4243/** @def IEMNATIVE_WITH_TB_DEBUG_INFO
     
    159160/** Frame pointer (RBP) relative offset of the fourth incoming shadow argument. */
    160161#  define IEMNATIVE_FP_OFF_IN_SHADOW_ARG3   (40)
     162/** The offset to VBOXSTRICTRC on the stack. */
     163#  define IEMNATIVE_FP_OFF_VBOXSTRICRC      IEMNATIVE_FP_OFF_IN_SHADOW_ARG0
    161164# endif
    162165
    163166#elif RT_ARCH_ARM64
    164 /** No alignment padding needed for arm64. */
    165 # define IEMNATIVE_FRAME_ALIGN_SIZE         0
     167/** No alignment padding needed for arm64.
     168 * @note HACK ALERT! We abuse this for keeping VBOXSTRICTRC on windows, since
     169 *       it isn't allowed to be returned by register. */
     170# define IEMNATIVE_FRAME_ALIGN_SIZE        0
     171# ifdef VBOXSTRICTRC_STRICT_ENABLED
     172#  ifdef RT_OS_WINDOWS
     173#   undef  IEMNATIVE_FRAME_ALIGN_SIZE
     174#   define IEMNATIVE_FRAME_ALIGN_SIZE       16
     175/** The offset to VBOXSTRICTRC on the stack. */
     176#   define IEMNATIVE_FP_OFF_VBOXSTRICRC     (IEMNATIVE_FP_OFF_LAST_PUSH - IEMNATIVE_FRAME_ALIGN_SIZE)
     177#  endif
     178# endif
    166179/** No stack argument slots, got 8 registers for arguments will suffice. */
    167180# define IEMNATIVE_FRAME_STACK_ARG_COUNT    0
     
    27912804/** Number of hidden arguments for CIMPL calls.
    27922805 * @note We're sufferning from the usual VBOXSTRICTRC fun on Windows. */
    2793 #if defined(VBOXSTRICTRC_STRICT_ENABLED) && defined(RT_OS_WINDOWS) && defined(RT_ARCH_AMD64)
     2806#if defined(VBOXSTRICTRC_STRICT_ENABLED) && defined(RT_OS_WINDOWS) && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_ARM64))
    27942807# define IEM_CIMPL_HIDDEN_ARGS 3
    27952808#else
Note: See TracChangeset for help on using the changeset viewer.

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