OpenTTD

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- File List
- Globals

Functions
cpu.cpp File Reference

OS/CPU/compiler dependent CPU specific calls. More...

`#include "stdafx.h"`
`#include "core/bitmath_func.hpp"`
`#include "safeguards.h"`

Go to the source code of this file.

## Functions
uint64 | ottd_rdtsc ()
| Get the tick counter from the CPU (high precision timing).
void | ottd_cpuid (int info[4], int type)
| Definitions for CPU detection:
bool | HasCPUIDFlag (uint type, uint index, uint bit)
| Check whether the current CPU has the given flag.

## Detailed Description

OS/CPU/compiler dependent CPU specific calls.

Definition in file cpu.cpp.

## Function Documentation

bool HasCPUIDFlag | ( | uint | type,
|  | uint | index,
|  | uint | bit
| ) |  |

Check whether the current CPU has the given flag.

Parameters

  type | The type to be passing to cpuid (usually 1).
  index | The index in the returned info array.
  bit | The bit index that needs to be set.

Returns
  The value of the bit, or false when there is no CPUID or the type is not available.

Definition at line 133 of file cpu.cpp.

References HasBit(), and ottd_cpuid().

void ottd_cpuid | ( | int | info[4],
|  | int | type
| ) |  |

Definitions for CPU detection:

Get the CPUID information from the CPU.

MSVC offers cpu information while gcc only implements in gcc 4.8 __builtin_cpu_supports and friends http://msdn.microsoft.com/library/vstudio/hskdteyh%28v=vs.100%29.aspx http://gcc.gnu.org/onlinedocs/gcc/X86-Built-in-Functions.html

Other platforms/architectures don't have CPUID, so zero the info and then most (if not all) of the features are set as if they do not exist.

Definition at line 127 of file cpu.cpp.

Referenced by HasCPUIDFlag().

uint64 ottd_rdtsc | ( |  | ) |

Get the tick counter from the CPU (high precision timing).

Returns
  The count.

Definition at line 78 of file cpu.cpp.