332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync/**********************************************************
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * Copyright 1998-2009 VMware, Inc. All rights reserved.
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync *
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * Permission is hereby granted, free of charge, to any person
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * obtaining a copy of this software and associated documentation
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * files (the "Software"), to deal in the Software without
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * restriction, including without limitation the rights to use, copy,
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * modify, merge, publish, distribute, sublicense, and/or sell copies
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * of the Software, and to permit persons to whom the Software is
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * furnished to do so, subject to the following conditions:
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync *
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * The above copyright notice and this permission notice shall be
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * included in all copies or substantial portions of the Software.
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync *
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * SOFTWARE.
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync *
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync **********************************************************/
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync/*
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * backdoor_def.h --
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync *
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * This contains constants that define the backdoor I/O port, a
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * simple hypercall mechanism that is used by VMware Tools.
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync */
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#ifndef _BACKDOOR_DEF_H_
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define _BACKDOOR_DEF_H_
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_MAGIC 0x564D5868
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_PORT 0x5658
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_GETMHZ 1
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_APMFUNCTION 2
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_GETDISKGEO 3
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_GETPTRLOCATION 4
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_SETPTRLOCATION 5
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_GETSELLENGTH 6
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_GETNEXTPIECE 7
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_SETSELLENGTH 8
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_SETNEXTPIECE 9
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_GETVERSION 10
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_GETDEVICELISTELEMENT 11
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_TOGGLEDEVICE 12
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_GETGUIOPTIONS 13
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_SETGUIOPTIONS 14
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_GETSCREENSIZE 15
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_MONITOR_CONTROL 16
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_GETHWVERSION 17
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_OSNOTFOUND 18
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_GETUUID 19
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_GETMEMSIZE 20
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_HOSTCOPY 21 /* Devel only */
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_SERVICE_VM 22 /* prototype only */
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_GETTIME 23 /* Deprecated. Use GETTIMEFULL. */
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_STOPCATCHUP 24
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_PUTCHR 25 /* Devel only */
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_ENABLE_MSG 26 /* Devel only */
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_GOTO_TCL 27 /* Devel only */
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_INITPCIOPROM 28
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_INT13 29
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_MESSAGE 30
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_RSVD0 31
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_RSVD1 32
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_RSVD2 33
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_ISACPIDISABLED 34
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_TOE 35 /* Not in use */
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_ISMOUSEABSOLUTE 36
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_PATCH_SMBIOS_STRUCTS 37
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_MAPMEM 38 /* Devel only */
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_ABSPOINTER_DATA 39
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_ABSPOINTER_STATUS 40
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_ABSPOINTER_COMMAND 41
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_TIMER_SPONGE 42
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_PATCH_ACPI_TABLES 43
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_DEVEL_FAKEHARDWARE 44 /* Debug only - needed in beta */
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_GETHZ 45
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_GETTIMEFULL 46
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_STATELOGGER 47
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_CHECKFORCEBIOSSETUP 48
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_LAZYTIMEREMULATION 49
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_BIOSBBS 50
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_VASSERT 51
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_ISGOSDARWIN 52
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_DEBUGEVENT 53
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_OSNOTMACOSXSERVER 54
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_GETTIMEFULL_WITH_LAG 55
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_ACPI_HOTPLUG_DEVICE 56
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_ACPI_HOTPLUG_MEMORY 57
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_ACPI_HOTPLUG_CBRET 58
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_GET_HOST_VIDEO_MODES 59
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_ACPI_HOTPLUG_CPU 60
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD_MAX 61
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync/*
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * High-bandwidth backdoor port.
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync */
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOORHB_PORT 0x5659
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOORHB_CMD_MESSAGE 0
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOORHB_CMD_VASSERT 1
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOORHB_CMD_MAX 2
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync/*
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * There is another backdoor which allows access to certain TSC-related
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * values using otherwise illegal PMC indices when the pseudo_perfctr
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync * control flag is set.
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync */
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_PMC_HW_TSC 0x10000
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_PMC_REAL_NS 0x10001
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_PMC_APPARENT_NS 0x10002
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define IS_BDOOR_PMC(index) (((index) | 3) == 0x10003)
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#define BDOOR_CMD(ecx) ((ecx) & 0xffff)
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync
332aaa1da374e694e37fdfe0a00bbe040e670453vboxsync#endif /* _BACKDOOR_DEF_H_ */