xref: /reactos/sdk/include/ddk/isvbop.h (revision 40462c92)
1 /*
2  * isvbop.h
3  *
4  * Windows NT Device Driver Kit
5  *
6  * This file is part of the ReactOS DDK package.
7  *
8  * Contributors:
9  *   Hermes Belusca-Maito (hermes.belusca@sfr.fr)
10  *
11  * THIS SOFTWARE IS NOT COPYRIGHTED
12  *
13  * This source code is offered for use in the public domain. You may
14  * use, modify or distribute it freely.
15  *
16  * This code is distributed in the hope that it will be useful but
17  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18  * DISCLAIMED. This includes but is not limited to warranties of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20  *
21  */
22 
23 /*
24  * The corresponding ASM header of this file is isvbop.inc.
25  */
26 
27 #pragma once
28 
29 /* BOP Identifiers */
30 #define BOP_3RDPARTY    0x58    // 3rd-party VDD BOP
31 #define BOP_UNSIMULATE  0xFE    // Stop execution
32 
33 #if defined(__GNUC__)
34 
35 #define RegisterModule()    __asm__(".byte 0xC4, 0xC4, %c0, 0" : : "i"(BOP_3RDPARTY))
36 #define UnRegisterModule()  __asm__(".byte 0xC4, 0xC4, %c0, 1" : : "i"(BOP_3RDPARTY))
37 #define DispatchCall()      __asm__(".byte 0xC4, 0xC4, %c0, 2" : : "i"(BOP_3RDPARTY))
38 #define VDDUnSimulate16()   __asm__(".byte 0xC4, 0xC4, %c0"    : : "i"(BOP_UNSIMULATE))
39 
40 #elif defined(_MSC_VER)
41 
42 #define RegisterModule()    _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_3RDPARTY _asm _emit 0
43 #define UnRegisterModule()  _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_3RDPARTY _asm _emit 1
44 #define DispatchCall()      _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_3RDPARTY _asm _emit 2
45 #define VDDUnSimulate16()   _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_UNSIMULATE
46 
47 #else
48 #error Unknown compiler for inline assembler
49 #endif
50 
51 /* EOF */
52