Index: trunk/src/VBox/ValidationKit/bootsectors/bs3kit/Makefile.kmk
===================================================================
--- trunk/src/VBox/ValidationKit/bootsectors/bs3kit/Makefile.kmk	(revision 97613)
+++ trunk/src/VBox/ValidationKit/bootsectors/bs3kit/Makefile.kmk	(revision 97624)
@@ -197,4 +197,6 @@
        bs3-cmn-SelSetup16BitCode.c \
        bs3-cmn-SelSetup32BitCode.c \
+       bs3-cmn-SelSetupGate.c \
+       bs3-cmn-SelSetupGate64.c \
        bs3-cmn-SlabInit.c \
        bs3-cmn-SlabAlloc.c \
Index: trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3-cmn-SelSetupGate.c
===================================================================
--- trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3-cmn-SelSetupGate.c	(revision 97624)
+++ trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3-cmn-SelSetupGate.c	(revision 97624)
@@ -0,0 +1,61 @@
+/* $Id$ */
+/** @file
+ * BS3Kit - Bs3SelSetupGate
+ */
+
+/*
+ * Copyright (C) 2007-2022 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * The contents of this file may alternatively be used under the terms
+ * of the Common Development and Distribution License Version 1.0
+ * (CDDL), a copy of it is provided in the "COPYING.CDDL" file included
+ * in the VirtualBox distribution, in which case the provisions of the
+ * CDDL are applicable instead of those of the GPL.
+ *
+ * You may elect to license modified versions of this file under the
+ * terms and conditions of either the GPL or the CDDL or both.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0
+ */
+
+
+/*********************************************************************************************************************************
+*   Header Files                                                                                                                 *
+*********************************************************************************************************************************/
+#include "bs3kit-template-header.h"
+
+
+#undef Bs3SelSetupGate
+BS3_CMN_DEF(void, Bs3SelSetupGate,(X86DESC BS3_FAR *pDesc, uint8_t bType, uint8_t bDpl,
+                                   uint16_t uSel, uint32_t off, uint8_t cParams))
+{
+    BS3_ASSERT(bDpl <= 3);
+    BS3_ASSERT(bType <= 15);
+    BS3_ASSERT(cParams <= 15);
+    pDesc->Gate.u16OffsetLow    = (uint16_t)off;
+    pDesc->Gate.u16OffsetHigh   = (uint16_t)(off >> 16);
+    pDesc->Gate.u16Sel          = uSel;
+    pDesc->Gate.u5ParmCount     = cParams;
+    pDesc->Gate.u4Type          = bType;
+    pDesc->Gate.u2Dpl           = bDpl;
+    pDesc->Gate.u3Reserved      = 0;
+    pDesc->Gate.u1DescType      = 0; /* system */
+    pDesc->Gate.u1Present       = 1;
+}
+
Index: trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3-cmn-SelSetupGate64.c
===================================================================
--- trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3-cmn-SelSetupGate64.c	(revision 97624)
+++ trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3-cmn-SelSetupGate64.c	(revision 97624)
@@ -0,0 +1,61 @@
+/* $Id$ */
+/** @file
+ * BS3Kit - Bs3SelSetupGate64
+ */
+
+/*
+ * Copyright (C) 2007-2022 Oracle and/or its affiliates.
+ *
+ * This file is part of VirtualBox base platform packages, as
+ * available from https://www.virtualbox.org.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, in version 3 of the
+ * License.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses>.
+ *
+ * The contents of this file may alternatively be used under the terms
+ * of the Common Development and Distribution License Version 1.0
+ * (CDDL), a copy of it is provided in the "COPYING.CDDL" file included
+ * in the VirtualBox distribution, in which case the provisions of the
+ * CDDL are applicable instead of those of the GPL.
+ *
+ * You may elect to license modified versions of this file under the
+ * terms and conditions of either the GPL or the CDDL or both.
+ *
+ * SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0
+ */
+
+
+/*********************************************************************************************************************************
+*   Header Files                                                                                                                 *
+*********************************************************************************************************************************/
+#include "bs3kit-template-header.h"
+
+
+#undef Bs3SelSetupGate64
+BS3_CMN_DEF(void, Bs3SelSetupGate64,(X86DESC BS3_FAR *pDescPair, uint8_t bType, uint8_t bDpl, uint16_t uSel, uint64_t off))
+{
+    BS3_ASSERT(bDpl <= 3);
+    BS3_ASSERT(bType <= 15);
+    pDescPair[0].Gate.u16OffsetLow    = (uint16_t)off;
+    pDescPair[0].Gate.u16OffsetHigh   = (uint16_t)(off >> 16);
+    pDescPair[0].Gate.u16Sel          = uSel;
+    pDescPair[0].Gate.u5ParmCount     = 0;
+    pDescPair[0].Gate.u4Type          = bType;
+    pDescPair[0].Gate.u2Dpl           = bDpl;
+    pDescPair[0].Gate.u3Reserved      = 0;
+    pDescPair[0].Gate.u1DescType      = 0; /* system */
+    pDescPair[0].Gate.u1Present       = 1;
+    pDescPair[1].au32[0]              = (uint32_t)(off >> 32);
+    pDescPair[1].au32[1]              = 0;
+}
+
Index: trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit-autostubs.kmk
===================================================================
--- trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit-autostubs.kmk	(revision 97613)
+++ trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit-autostubs.kmk	(revision 97624)
@@ -144,4 +144,6 @@
 $(call BS3KIT_FN_GEN_CMN_NEARSTUB,bs3kit-common-16,Bs3SelSetup16BitData)
 $(call BS3KIT_FN_GEN_CMN_NEARSTUB,bs3kit-common-16,Bs3SelSetup32BitCode)
+$(call BS3KIT_FN_GEN_CMN_NEARSTUB,bs3kit-common-16,Bs3SelSetupGate64)
+$(call BS3KIT_FN_GEN_CMN_NEARSTUB,bs3kit-common-16,Bs3SelSetupGate)
 $(call BS3KIT_FN_GEN_CMN_NEARSTUB,bs3kit-common-16,Bs3SlabInit)
 $(call BS3KIT_FN_GEN_CMN_NEARSTUB,bs3kit-common-16,Bs3SlabListAdd)
Index: trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit-mangling-code-define.h
===================================================================
--- trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit-mangling-code-define.h	(revision 97613)
+++ trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit-mangling-code-define.h	(revision 97624)
@@ -174,4 +174,6 @@
 #define Bs3SelSetup16BitData BS3_CMN_MANGLER(Bs3SelSetup16BitData)
 #define Bs3SelSetup32BitCode BS3_CMN_MANGLER(Bs3SelSetup32BitCode)
+#define Bs3SelSetupGate64 BS3_CMN_MANGLER(Bs3SelSetupGate64)
+#define Bs3SelSetupGate BS3_CMN_MANGLER(Bs3SelSetupGate)
 #define Bs3Shutdown BS3_CMN_MANGLER(Bs3Shutdown)
 #define Bs3SlabAlloc BS3_CMN_MANGLER(Bs3SlabAlloc)
Index: trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit-mangling-code-undef.h
===================================================================
--- trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit-mangling-code-undef.h	(revision 97613)
+++ trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit-mangling-code-undef.h	(revision 97624)
@@ -174,4 +174,6 @@
 #undef Bs3SelSetup16BitData
 #undef Bs3SelSetup32BitCode
+#undef Bs3SelSetupGate64
+#undef Bs3SelSetupGate
 #undef Bs3Shutdown
 #undef Bs3SlabAlloc
Index: trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit.h
===================================================================
--- trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit.h	(revision 97613)
+++ trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit.h	(revision 97624)
@@ -1995,4 +1995,32 @@
 BS3_CMN_PROTO_STUB(void, Bs3SelSetup32BitCode,(X86DESC BS3_FAR *pDesc, uint32_t uBaseAddr, uint32_t uLimit, uint8_t bDpl));
 
+/**
+ * Sets up a 16-bit or 32-bit gate descriptor.
+ *
+ * This can be used both for GDT/LDT and IDT.
+ *
+ * @param   pDesc       Pointer to the descriptor table entry.
+ * @param   bType       The gate type.
+ * @param   bDpl        The gate DPL.
+ * @param   uSel        The gate selector value.
+ * @param   off         The gate IP/EIP value.
+ * @param   cParams     Number of parameters to copy if call-gate.
+ */
+BS3_CMN_PROTO_STUB(void, Bs3SelSetupGate,(X86DESC BS3_FAR *pDesc, uint8_t bType, uint8_t bDpl,
+                                          uint16_t uSel, uint32_t off, uint8_t cParams));
+
+/**
+ * Sets up a 64-bit gate descriptor.
+ *
+ * This can be used both for GDT/LDT and IDT.
+ *
+ * @param   pDescPair   Pointer to the _two_ descriptor table entries.
+ * @param   bType       The gate type.
+ * @param   bDpl        The gate DPL.
+ * @param   uSel        The gate selector value.
+ * @param   off         The gate IP/EIP value.
+ */
+BS3_CMN_PROTO_STUB(void, Bs3SelSetupGate64,(X86DESC BS3_FAR *pDescPair, uint8_t bType, uint8_t bDpl, uint16_t uSel, uint64_t off));
+
 
 /**
