summaryrefslogtreecommitdiffstats
path: root/src/target
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2010-06-24 18:00:45 +0200
committerHarald Welte <laforge@gnumonks.org>2010-06-24 18:03:08 +0200
commitef81bf80e1c77de099f096c110ceb8a449c6c6ff (patch)
tree74bccb6878667b24bb7cfdd590ae88e9433ef3e2 /src/target
parent93db95712e8f70a60b2e78dc53978bb51eccbafe (diff)
[firmware] move board_init() to a gcc-type constructor
Instead of calling board_init() from every main() function explicitly, we simply mark it as a constructor and have it called automagically
Diffstat (limited to 'src/target')
-rw-r--r--src/target/firmware/apps/compal_dsp_dump/main.c3
-rw-r--r--src/target/firmware/apps/hello_world/main.c1
-rw-r--r--src/target/firmware/apps/l1test/main.c1
-rw-r--r--src/target/firmware/apps/layer1/main.c1
-rw-r--r--src/target/firmware/board/compal_e88/init.c3
-rw-r--r--src/target/firmware/board/compal_e99/init.c3
-rw-r--r--src/target/firmware/board/gta0x/init.c3
-rw-r--r--src/target/firmware/include/board.h2
-rw-r--r--src/target/firmware/include/ctors.h9
9 files changed, 15 insertions, 11 deletions
diff --git a/src/target/firmware/apps/compal_dsp_dump/main.c b/src/target/firmware/apps/compal_dsp_dump/main.c
index a7126118..282bce28 100644
--- a/src/target/firmware/apps/compal_dsp_dump/main.c
+++ b/src/target/firmware/apps/compal_dsp_dump/main.c
@@ -57,9 +57,6 @@ const char *hr = "==============================================================
int main(void)
{
- /* Initialize basic board support */
- board_init();
-
puts("\n\nCompal DSP data dumper\n");
puts(hr);
diff --git a/src/target/firmware/apps/hello_world/main.c b/src/target/firmware/apps/hello_world/main.c
index d1a566b9..effbc90a 100644
--- a/src/target/firmware/apps/hello_world/main.c
+++ b/src/target/firmware/apps/hello_world/main.c
@@ -84,7 +84,6 @@ static void l1a_l23_rx_cb(uint8_t dlci, struct msgb *msg)
int main(void)
{
- board_init();
puts("\n\nHello World from " __FILE__ " program code\n");
puts(hr);
/* Dump device identification */
diff --git a/src/target/firmware/apps/l1test/main.c b/src/target/firmware/apps/l1test/main.c
index 384820c0..6e78f9c9 100644
--- a/src/target/firmware/apps/l1test/main.c
+++ b/src/target/firmware/apps/l1test/main.c
@@ -179,7 +179,6 @@ static void key_handler(enum key_codes code, enum key_states state);
int main(void)
{
- board_init();
puts("\n\nHello World from " __FILE__ " program code\n");
puts(hr);
diff --git a/src/target/firmware/apps/layer1/main.c b/src/target/firmware/apps/layer1/main.c
index a4081233..cf45d7fd 100644
--- a/src/target/firmware/apps/layer1/main.c
+++ b/src/target/firmware/apps/layer1/main.c
@@ -68,7 +68,6 @@ static void key_handler(enum key_codes code, enum key_states state);
int main(void)
{
- board_init();
puts("\n\nHello World from " __FILE__ " program code\n");
puts(hr);
diff --git a/src/target/firmware/board/compal_e88/init.c b/src/target/firmware/board/compal_e88/init.c
index 83cb4828..94586754 100644
--- a/src/target/firmware/board/compal_e88/init.c
+++ b/src/target/firmware/board/compal_e88/init.c
@@ -24,6 +24,7 @@
#include <stdio.h>
#include <debug.h>
+#include <ctors.h>
#include <memory.h>
#include <board.h>
#include <keypad.h>
@@ -72,7 +73,7 @@ static void board_io_init(void)
writew(reg, ARMIO_LATCH_OUT);
}
-void board_init(void)
+static void __ctor_board board_init(void)
{
/* FIXME: this needs to go to board_e99/init.c once we have it */
wdog_enable(0);
diff --git a/src/target/firmware/board/compal_e99/init.c b/src/target/firmware/board/compal_e99/init.c
index 8e0ce139..b2cdd7b1 100644
--- a/src/target/firmware/board/compal_e99/init.c
+++ b/src/target/firmware/board/compal_e99/init.c
@@ -25,6 +25,7 @@
#include <stdio.h>
#include <debug.h>
+#include <ctors.h>
#include <memory.h>
#include <board.h>
#include <keypad.h>
@@ -73,7 +74,7 @@ static void board_io_init(void)
writew(reg, ARMIO_LATCH_OUT);
}
-void board_init(void)
+static void __ctor_board board_init(void)
{
/* FIXME: this needs to go to board_e99/init.c once we have it */
wdog_enable(0);
diff --git a/src/target/firmware/board/gta0x/init.c b/src/target/firmware/board/gta0x/init.c
index 12105c5d..4dca2e1f 100644
--- a/src/target/firmware/board/gta0x/init.c
+++ b/src/target/firmware/board/gta0x/init.c
@@ -24,6 +24,7 @@
#include <stdio.h>
#include <debug.h>
+#include <ctors.h>
#include <memory.h>
#include <board.h>
#include <keypad.h>
@@ -72,7 +73,7 @@ static void board_io_init(void)
writew(reg, ARMIO_LATCH_OUT);
}
-void board_init(void)
+static void __ctor_board board_init(void)
{
/* FIXME: this needs to go to board_e99/init.c once we have it */
wdog_enable(0);
diff --git a/src/target/firmware/include/board.h b/src/target/firmware/include/board.h
index 3635621a..c2fb6018 100644
--- a/src/target/firmware/include/board.h
+++ b/src/target/firmware/include/board.h
@@ -1,8 +1,6 @@
#ifndef _BOARD_H
#define _BOARD_H
-void board_init(void);
-
extern const char *target_board;
#endif /* _BOARD_H */
diff --git a/src/target/firmware/include/ctors.h b/src/target/firmware/include/ctors.h
index b0d738dd..ee4c7b3e 100644
--- a/src/target/firmware/include/ctors.h
+++ b/src/target/firmware/include/ctors.h
@@ -1,6 +1,15 @@
#ifndef _CTORS_H
#define _CTORS_H
+#if 0
+/* only supported by gcc 3.4 or later */
+#define __ctor_data __attribute__ ((constructor) (100))
+#define __ctor_board __attribute__ ((constructor) (200))
+#else
+#define __ctor_data __attribute__ ((constructor))
+#define __ctor_board __attribute__ ((constructor))
+#endif
+
/* iterate over list of constructor functions and call each element */
void do_global_ctors(const char *ctors_start, const char *ctors_end);