PLCnext API Documentation 25.0.2.69
ArchitectureConfig.hpp
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6#pragma once
7
8#ifndef ARP_INSIDE_ARP_BASE_CORE_ARP_H
9 #error Never include 'ArchitectureConfig.hpp' directly, just include 'Arp.hpp'
10#endif
11
14#define ARP_DATAMODEL_ILP32 10
15
18#define ARP_DATAMODEL_ILP32_64 11
19
22#define ARP_DATAMODEL_ILP64 20
23
26#define ARP_DATAMODEL_P64 21
27
30#define ARP_DATAMODEL_LLP64 21 // same as ARP_DATAMODEL_P64
31
32
33// define architecture and data model
34#if defined(_M_IX86) || defined(_X86_) || defined(i386) || defined(__i386) || defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__i686__)
35
36 #define ARP_ARCHITECTURE_X86
37 #define ARP_DATAMODEL ARP_DATAMODEL_ILP32
38
39#elif defined(_M_X64) || defined(__x86_64) || defined(__x86_64__)
40
41 #define ARP_ARCHITECTURE_X64
42 #define ARP_DATAMODEL ARP_DATAMODEL_LLP64
43
44#elif !defined(__thumb__) && (defined(_M_ARM) || defined(__arm__) || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7__) || defined(__TARGET_ARCH_ARM))
45
46 #define ARP_ARCHITECTURE_ARM
47 #define ARP_DATAMODEL ARP_DATAMODEL_ILP32
48
49#elif defined(__thumb__) && (defined(_M_ARM) || defined(__arm__) || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7__) || defined(__TARGET_ARCH_ARM))
50
51 #define ARP_ARCHITECTURE_ARMTHUMB
52 #define ARP_DATAMODEL ARP_DATAMODEL_ILP32
53
54#elif defined(__aarch64__)
55
56 #define ARP_ARCHITECTURE_ARM64
57 #define ARP_DATAMODEL ARP_DATAMODEL_ILP64
58
59#else
60
61 #error "CPU platform is not supported"
62
63#endif