Keep doc/ directory around for Doxygen.
[bertos.git] / cpu_detect.h
1 /*!
2  * \file
3  * <!--
4  * Copyright 2004 Develer S.r.l. (http://www.develer.com/)
5  * Copyright 2004 Giovanni Bajo
6  * This file is part of DevLib - See devlib/README for information.
7  * -->
8  *
9  * \brief CPU detection through special preprocessor macros
10  *
11  */
12
13 /*
14  * $Log$
15  * Revision 1.1  2004/07/30 17:14:49  rasky
16  * File sfuggito al commit precedente (nuova gestione unificata del detect della CPU
17  *
18  * Revision 1.2  2004/07/30 10:31:07  rasky
19  * Aggiunto detect per ATmega128
20  *
21  * Revision 1.1  2004/07/22 16:37:34  rasky
22  * Nuovo file cpu_detect.h per il detect della CPU
23  * Nuova macro CPU_HEADER per includere l'header cpu-specific di ogni modulo
24  * Razionalizzazione dei principali #ifdef per piattaforma con le nuove macro
25  * Nuove macro-utility PP_STRINGIZE e PP_CATn
26  *
27  */
28
29 #ifndef CPU_DETECT_H
30 #define CPU_DETECT_H
31
32 #if defined(__IAR_SYSTEMS_ICC) || defined(__IAR_SYSTEMS_ICC__)
33         #define CPU_I196                1
34         #define CPU_ID                  i196
35 #else
36         #define CPU_I196                0
37 #endif
38
39 #if defined(__i386__) || defined(_MSC_VER)
40         #define CPU_X86                 1
41         #define CPU_ID                  x86
42 #else
43         #define CPU_X86                 0
44 #endif
45
46 #if defined(__m56800E__) || defined(__m56800__)
47         #define CPU_DSP56K              1
48         #define CPU_ID                  dsp56k
49 #else
50         #define CPU_DSP56K              0
51 #endif
52
53 #if defined (__AVR__)
54         #define CPU_AVR                 1
55         #define CPU_ID                  avr
56
57         #if defined(__AVR_ATmega64__)
58                 #define CPU_AVR_ATMEGA64    1
59         #else
60                 #define CPU_AVR_ATMEGA64    0
61         #endif
62
63         #if defined(__AVR_ATmega103__)
64                 #define CPU_AVR_ATMEGA103   1
65         #else
66                 #define CPU_AVR_ATMEGA103   0
67         #endif
68
69         #if defined(__AVR_ATmega128__)
70                 #define CPU_AVR_ATMEGA128   1
71         #else
72                 #define CPU_AVR_ATMEGA128   0
73         #endif
74
75         #if defined(__AVR_ATmega8__)
76                 #define CPU_AVR_ATMEGA8     1
77         #else
78                 #define CPU_AVR_ATMEGA8     0
79         #endif
80 #else
81         #define CPU_AVR                 0
82         #define CPU_AVR_ATMEGA8         0
83         #define CPU_AVR_ATMEGA64        0
84         #define CPU_AVR_ATMEGA103       0
85         #define CPU_AVR_ATMEGA128       0
86 #endif
87
88
89 // Self-check for the detection: only one CPU must be detected
90 #if CPU_I196 + CPU_X86 + CPU_DSP56K + CPU_AVR == 0
91         #error Unknown CPU
92 #elif !defined(CPU_ID)
93         #error CPU_ID not defined
94 #elif CPU_I196 + CPU_X86 + CPU_DSP56K + CPU_AVR != 1
95         #error Internal CPU configuration error
96 #endif
97
98
99 #endif /* CPU_DETECT_H */