iacaMarks.h 1.68 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
/*
* INTEL CONFIDENTIAL
* Copyright (2008-2009) Intel Corporation All Rights Reserved. 
* The source code contained or described herein and all documents 
* related to the source code ("Material") are owned by Intel Corporation 
* or its suppliers or licensors. Title to the Material remains with 
* Intel Corporation or its suppliers and licensors. The Material 
* contains trade secrets and proprietary and confidential information 
* of Intel or its suppliers and licensors. The Material is protected 
* by worldwide copyright and trade secret laws and treaty provisions. 
* No part of the Material may be used, copied, reproduced, modified, 
* published, uploaded, posted, transmitted, distributed, or disclosed 
13
* in any way without Intel's prior express written permission.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
*
* No license under any patent, copyright, trade secret or other 
* intellectual property right is granted to or conferred upon you by 
* disclosure or delivery of the Materials, either expressly, by implication,
* inducement, estoppel or otherwise. Any license under such intellectual 
* property rights must be express and approved by Intel in writing.
*/

#if defined (__GNUC__) 
#define IACA_SSC_MARK( MARK_ID )						\
__asm__ __volatile__ (									\
					  "\n\t  movl $"#MARK_ID", %%ebx"	\
					  "\n\t  .byte 0x64, 0x67, 0x90"	\
					  : : : "memory" );

#else
#define IACA_SSC_MARK(x) {__asm  mov ebx, x\
	__asm  _emit 0x64 \
	__asm  _emit 0x67 \
	__asm  _emit 0x90 }
#endif

#define IACA_START {IACA_SSC_MARK(111)}
#define IACA_END {IACA_SSC_MARK(222)}


/**************** asm *****************
;START_MARKER
mov ebx, 111
db 0x64, 0x67, 0x90

;END_MARKER
mov ebx, 222
db 0x64, 0x67, 0x90

**************************************/