| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2012 The Native Client Authors. All rights reserved. | 2 * Copyright (c) 2012 The Native Client Authors. All rights reserved. |
| 3 * Use of this source code is governed by a BSD-style license that can be | 3 * Use of this source code is governed by a BSD-style license that can be |
| 4 * found in the LICENSE file. | 4 * found in the LICENSE file. |
| 5 */ | 5 */ |
| 6 | 6 |
| 7 /* | 7 /* |
| 8 * Checks that CPU ID features match instructions found in executable. | 8 * Checks that CPU ID features match instructions found in executable. |
| 9 * | 9 * |
| 10 * Note: The following functions are used to define a validator function | 10 * Note: The following functions are used to define a validator function |
| 11 * for collecting this information. See header file ncvalidator_iter.h | 11 * for collecting this information. See header file ncvalidator_iter.h |
| 12 * for more information on how to register these functions as a validator | 12 * for more information on how to register these functions as a validator |
| 13 * function. | 13 * function. |
| 14 */ | 14 */ |
| 15 | 15 |
| 16 #ifndef NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_NCVAL_REG_SFI_NC_CPU_CHECKS_H__ | 16 #ifndef NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_NCVAL_REG_SFI_NC_CPU_CHECKS_H__ |
| 17 #define NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_NCVAL_REG_SFI_NC_CPU_CHECKS_H__ | 17 #define NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_NCVAL_REG_SFI_NC_CPU_CHECKS_H__ |
| 18 | 18 |
| 19 #include "native_client/src/shared/utils/types.h" | 19 #include "native_client/src/shared/utils/types.h" |
| 20 #include "native_client/src/trusted/validator/x86/nacl_cpuid.h" | 20 #include "native_client/src/trusted/cpu_features/arch/x86/cpu_x86.h" |
| 21 | 21 |
| 22 /* Defines a validator state. */ | 22 /* Defines a validator state. */ |
| 23 struct NaClValidatorState; | 23 struct NaClValidatorState; |
| 24 | 24 |
| 25 /* Defines an instruction iterator that processes a code segment. */ | 25 /* Defines an instruction iterator that processes a code segment. */ |
| 26 struct NaClInstIter; | 26 struct NaClInstIter; |
| 27 | 27 |
| 28 /* Defines the set of cpu feature checks applied to the code. */ | 28 /* Defines the set of cpu feature checks applied to the code. */ |
| 29 typedef struct NaClCpuCheckState { | 29 typedef struct NaClCpuCheckState { |
| 30 /* The standard CPU features. */ | 30 /* The standard CPU features. */ |
| 31 NaClCPUFeaturesX86 cpu_features; | 31 NaClCPUFeaturesX86 cpu_features; |
| 32 /* Check that both f_CMOV and f_x87 is defined. */ | 32 /* Check that both f_CMOV and f_x87 is defined. */ |
| 33 Bool f_CMOV_and_x87; | 33 Bool f_CMOV_and_x87; |
| 34 /* Check that either f_MMX or f_SSE2 is defined. */ | 34 /* Check that either f_MMX or f_SSE2 is defined. */ |
| 35 Bool f_MMX_or_SSE2; | 35 Bool f_MMX_or_SSE2; |
| 36 } NaClCpuCheckState; | 36 } NaClCpuCheckState; |
| 37 | 37 |
| 38 /* Creates a CPU feature struct (all fields initialized to false), to be used | 38 /* Creates a CPU feature struct (all fields initialized to false), to be used |
| 39 * to record what features need to be squashed out of the executable. | 39 * to record what features need to be squashed out of the executable. |
| 40 */ | 40 */ |
| 41 void NaClCpuCheckMemoryInitialize(struct NaClValidatorState* state); | 41 void NaClCpuCheckMemoryInitialize(struct NaClValidatorState* state); |
| 42 | 42 |
| 43 /* Check that cpu features match instructions for native client rules. */ | 43 /* Check that cpu features match instructions for native client rules. */ |
| 44 void NaClCpuCheck(struct NaClValidatorState* state, | 44 void NaClCpuCheck(struct NaClValidatorState* state, |
| 45 struct NaClInstIter* iter); | 45 struct NaClInstIter* iter); |
| 46 | 46 |
| 47 #endif /* NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_NCVAL_REG_SFI_NC_CPU_CHECKS_H
__ */ | 47 #endif /* NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_NCVAL_REG_SFI_NC_CPU_CHECKS_H
__ */ |
| OLD | NEW |