diff options
author | Harald Welte <laforge@gnumonks.org> | 2010-06-24 18:00:45 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2010-06-24 18:03:08 +0200 |
commit | ef81bf80e1c77de099f096c110ceb8a449c6c6ff (patch) | |
tree | 74bccb6878667b24bb7cfdd590ae88e9433ef3e2 /src/target | |
parent | 93db95712e8f70a60b2e78dc53978bb51eccbafe (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.c | 3 | ||||
-rw-r--r-- | src/target/firmware/apps/hello_world/main.c | 1 | ||||
-rw-r--r-- | src/target/firmware/apps/l1test/main.c | 1 | ||||
-rw-r--r-- | src/target/firmware/apps/layer1/main.c | 1 | ||||
-rw-r--r-- | src/target/firmware/board/compal_e88/init.c | 3 | ||||
-rw-r--r-- | src/target/firmware/board/compal_e99/init.c | 3 | ||||
-rw-r--r-- | src/target/firmware/board/gta0x/init.c | 3 | ||||
-rw-r--r-- | src/target/firmware/include/board.h | 2 | ||||
-rw-r--r-- | src/target/firmware/include/ctors.h | 9 |
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); |