src/TARGET_STM32F303xE/device/TOOLCHAIN_GCC_ARM/STM32F303XE.ld

Thu, 15 Oct 2020 01:12:31 +0200

author
David Douard <david.douard@sdfa3.org>
date
Thu, 15 Oct 2020 01:12:31 +0200
changeset 27
8f2be7aaec00
permissions
-rw-r--r--

add QEI

27
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
1 /* Linker script to configure memory regions. */
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
2
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
3 #if !defined(MBED_BOOT_STACK_SIZE)
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
4 #define MBED_BOOT_STACK_SIZE 0x400
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
5 #endif
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
6
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
7 STACK_SIZE = MBED_BOOT_STACK_SIZE;
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
8
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
9 /* 0x194 resevered for vectors; 8-byte aligned = 0x198 (0x194 + 0x4)*/
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
10 #ifndef MBED_APP_START
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
11 #define MBED_APP_START 0x08000000
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
12 #endif
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
13
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
14 #ifndef MBED_APP_SIZE
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
15 #define MBED_APP_SIZE 512K
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
16 #endif
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
17
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
18 MEMORY
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
19 {
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
20 FLASH (rx) : ORIGIN = MBED_APP_START, LENGTH = MBED_APP_SIZE
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
21 CCM (rwx) : ORIGIN = 0x10000000, LENGTH = 16K
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
22 RAM (rwx) : ORIGIN = 0x20000198, LENGTH = 64K - (0x194+0x4)
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
23 }
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
24
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
25 /* Linker script to place sections and symbol values. Should be used together
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
26 * with other linker script that defines memory regions FLASH and RAM.
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
27 * It references following symbols, which must be defined in code:
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
28 * Reset_Handler : Entry of reset handler
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
29 *
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
30 * It defines following symbols, which code can use without definition:
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
31 * __exidx_start
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
32 * __exidx_end
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
33 * __etext
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
34 * __data_start__
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
35 * __preinit_array_start
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
36 * __preinit_array_end
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
37 * __init_array_start
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
38 * __init_array_end
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
39 * __fini_array_start
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
40 * __fini_array_end
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
41 * __data_end__
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
42 * __bss_start__
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
43 * __bss_end__
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
44 * __end__
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
45 * end
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
46 * __HeapLimit
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
47 * __StackLimit
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
48 * __StackTop
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
49 * __stack
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
50 * _estack
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
51 */
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
52 ENTRY(Reset_Handler)
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
53
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
54 SECTIONS
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
55 {
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
56 .text :
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
57 {
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
58 KEEP(*(.isr_vector))
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
59 *(.text*)
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
60 KEEP(*(.init))
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
61 KEEP(*(.fini))
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
62
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
63 /* .ctors */
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
64 *crtbegin.o(.ctors)
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
65 *crtbegin?.o(.ctors)
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
66 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
67 *(SORT(.ctors.*))
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
68 *(.ctors)
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
69
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
70 /* .dtors */
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
71 *crtbegin.o(.dtors)
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
72 *crtbegin?.o(.dtors)
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
73 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
74 *(SORT(.dtors.*))
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
75 *(.dtors)
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
76
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
77 *(.rodata*)
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
78
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
79 KEEP(*(.eh_frame*))
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
80 } > FLASH
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
81
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
82 .ARM.extab :
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
83 {
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
84 *(.ARM.extab* .gnu.linkonce.armextab.*)
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
85 } > FLASH
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
86
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
87 __exidx_start = .;
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
88 .ARM.exidx :
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
89 {
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
90 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
91 } > FLASH
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
92 __exidx_end = .;
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
93
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
94 __etext = .;
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
95 _sidata = .;
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
96
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
97 .data : AT (__etext)
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
98 {
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
99 __data_start__ = .;
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
100 _sdata = .;
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
101 *(vtable)
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
102 *(.data*)
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
103
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
104 . = ALIGN(8);
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
105 /* preinit data */
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
106 PROVIDE_HIDDEN (__preinit_array_start = .);
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
107 KEEP(*(.preinit_array))
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
108 PROVIDE_HIDDEN (__preinit_array_end = .);
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
109
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
110 . = ALIGN(8);
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
111 /* init data */
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
112 PROVIDE_HIDDEN (__init_array_start = .);
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
113 KEEP(*(SORT(.init_array.*)))
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
114 KEEP(*(.init_array))
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
115 PROVIDE_HIDDEN (__init_array_end = .);
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
116
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
117
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
118 . = ALIGN(8);
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
119 /* finit data */
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
120 PROVIDE_HIDDEN (__fini_array_start = .);
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
121 KEEP(*(SORT(.fini_array.*)))
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
122 KEEP(*(.fini_array))
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
123 PROVIDE_HIDDEN (__fini_array_end = .);
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
124
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
125 KEEP(*(.jcr*))
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
126 . = ALIGN(8);
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
127 /* All data end */
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
128 __data_end__ = .;
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
129 _edata = .;
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
130
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
131 } > RAM
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
132
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
133 .bss :
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
134 {
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
135 . = ALIGN(8);
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
136 __bss_start__ = .;
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
137 _sbss = .;
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
138 *(.bss*)
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
139 *(COMMON)
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
140 . = ALIGN(8);
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
141 __bss_end__ = .;
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
142 _ebss = .;
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
143 } > RAM
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
144
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
145 .heap (COPY):
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
146 {
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
147 __end__ = .;
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
148 end = __end__;
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
149 *(.heap*)
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
150 . = ORIGIN(RAM) + LENGTH(RAM) - STACK_SIZE;
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
151 __HeapLimit = .;
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
152 } > RAM
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
153
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
154 /* .stack_dummy section doesn't contains any symbols. It is only
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
155 * used for linker to calculate size of stack sections, and assign
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
156 * values to stack symbols later */
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
157 .stack_dummy (COPY):
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
158 {
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
159 *(.stack*)
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
160 } > RAM
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
161
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
162 /* Set stack top to end of RAM, and stack limit move down by
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
163 * size of stack_dummy section */
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
164 __StackTop = ORIGIN(RAM) + LENGTH(RAM);
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
165 _estack = __StackTop;
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
166 __StackLimit = __StackTop - STACK_SIZE;
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
167 PROVIDE(__stack = __StackTop);
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
168
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
169 /* Check if data + heap + stack exceeds RAM limit */
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
170 ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
171
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
172 .CCMRAM (NOLOAD):
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
173 {
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
174 Image$$RW_IRAM2$$Base = . ;
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
175 *(CCMRAM)
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
176 Image$$RW_IRAM2$$ZI$$Limit = .;
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
177 } > CCM
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
178 }
8f2be7aaec00 add QEI
David Douard <david.douard@sdfa3.org>
parents:
diff changeset
179

mercurial