|
|
1.1 root 1: /*
2: Copyright (c) 2008 TrueCrypt Foundation. All rights reserved.
3:
4: Governed by the TrueCrypt License 2.4 the full text of which is contained
5: in the file License.txt included in TrueCrypt binary and source code
6: distribution packages.
7: */
8:
9: #ifndef TC_HEADER_Boot_Platform
10: #define TC_HEADER_Boot_Platform
11:
12: #pragma warning ( disable : 4769 )
13:
14: #include "TCdefs.h"
15:
16: #include <memory.h>
17:
18: #ifndef DEBUG
19: # pragma intrinsic (memcpy)
20: # pragma intrinsic (memset)
21: #endif
22:
23: typedef int bool;
24: #define false 0
25: #define true 1
26:
27: #define nullptr 0
28:
29: typedef UINT64_STRUCT uint64;
30:
31: #define array_capacity(arr) (sizeof (arr) / sizeof ((arr)[0]))
32:
33: #define TC_TO_STRING2(n) #n
34: #define TC_TO_STRING(n) TC_TO_STRING2(n)
35:
36:
37: #define TC_X86_CARRY_FLAG 0x1
38:
39: #define TC_ASM_EMIT(A,B) __asm _emit 0x##A __asm _emit 0x##B
40: #define TC_ASM_EMIT3(A,B,C) __asm _emit 0x##A __asm _emit 0x##B __asm _emit 0x##C
41: #define TC_ASM_EMIT4(A,B,C,D) __asm _emit 0x##A __asm _emit 0x##B __asm _emit 0x##C __asm _emit 0x##D
42:
43:
44: #pragma pack(1)
45:
46: struct Registers
47: {
48: uint16 Flags;
49:
50: union
51: {
52: uint32 EAX;
53: struct { uint16 AX; uint16 EAXH; };
54: };
55:
56: union
57: {
58: uint32 EBX;
59: struct { uint16 BX; uint16 EBXH; };
60: };
61:
62: union
63: {
64: uint32 ECX;
65: struct { uint16 CX; uint16 ECXH; };
66: };
67:
68: union
69: {
70: uint32 EDX;
71: struct { uint16 DX; uint16 EDXH; };
72: };
73:
74: uint16 DI;
75: uint16 SI;
76: uint16 DS;
77: uint16 ES;
78: uint16 SS;
79: };
80:
81: #pragma pack()
82:
83:
84: uint64 operator+ (const uint64 &a, const uint64 &b);
85: uint64 operator+ (const uint64 &a, uint32 b);
86: uint64 operator- (const uint64 &a, const uint64 &b);
87: uint64 operator- (const uint64 &a, uint32 b);
88: uint64 operator>> (const uint64 &a, int shiftCount);
89: uint64 operator<< (const uint64 &a, int shiftCount);
90: uint64 &operator++ (uint64 &a);
91: bool operator== (const uint64 &a, const uint64 &b);
92: bool operator> (const uint64 &a, const uint64 &b);
93: bool operator< (const uint64 &a, const uint64 &b);
94: bool operator>= (const uint64 &a, const uint64 &b);
95: bool operator<= (const uint64 &a, const uint64 &b);
96:
97: void CopyMemory (byte *source, uint16 destSegment, uint16 destOffset, uint16 blockSize);
98: void CopyMemory (uint16 sourceSegment, uint16 sourceOffset, byte *destination, uint16 blockSize);
99: uint32 GetLinearAddress (uint16 segment, uint16 offset);
100: void Jump (uint16 jumpSegment, uint16 jumpOffset, byte dlRegister);
101: bool TestInt64 ();
102:
103: #endif // TC_HEADER_Boot_Platform
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.