SimAVR
AVR Simulator
sim_core_declare.h
Go to the documentation of this file.
1 /*
2  sim_core_declare.h
3 
4  Copyright 2008, 2009 Michel Pollet <buserror@gmail.com>
5 
6  This file is part of simavr.
7 
8  simavr is free software: you can redistribute it and/or modify it under the terms of the GNU
9  General Public License as published by the Free Software Foundation, either version 3 of the
10  License, or (at your option) any later version.
11 
12  simavr is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
13  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
14  Public License for more details.
15 
16  You should have received a copy of the GNU General Public License along with simavr. If not, see
17  <http://www.gnu.org/licenses/>.
18 */
19 
20 #ifndef __SIM_CORE_DECLARE_H__
21 #define __SIM_CORE_DECLARE_H__
22 
23 /* we have to declare this, as none of the distro but debian has a modern toolchain and
24  * avr-libc. This affects a lot of names, like MCUSR etc
25  */
26 #define __AVR_LIBC_DEPRECATED_ENABLE__
27 
28 /*
29  * The macros "fake" the ones in the real avrlib
30  */
31 #define _SFR_IO8(v) ((v)+32)
32 #define _SFR_IO16(v) ((v)+32)
33 #define _SFR_MEM8(v) (v)
34 #define _BV(v) (v)
35 #define _VECTOR(v) (v)
36 
37 /*
38  * This declares a typical AVR core, using constants what appears
39  * to be in every io*.h file...
40  */
41 #ifdef SIGNATURE_0
42 #define DEFAULT_CORE(_vector_size) \
43  .ramend = RAMEND, \
44  .flashend = FLASHEND, \
45  .e2end = E2END, \
46  .vector_size = _vector_size, \
47  .fuse = { LFUSE_DEFAULT, HFUSE_DEFAULT, EFUSE_DEFAULT }, \
48  .signature = { SIGNATURE_0,SIGNATURE_1,SIGNATURE_2 }
49 #else
50 
51 // Disable signature when using an old avr toolchain
52 #define DEFAULT_CORE(_vector_size) \
53  .ramend = RAMEND, \
54  .flashend = FLASHEND, \
55  .e2end = E2END, \
56  .vector_size = _vector_size
57 #endif
58 
59 #endif /* __SIM_CORE_DECLARE_H__ */