diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-02-27 18:41:59 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-02-27 18:41:59 +0000 |
commit | 574f2f43948bb21d6e4187936ba5a5afccba25f6 (patch) | |
tree | 0b39aca564149e5ad30b3cc791228655ff1b1827 /shell/ash.c | |
parent | fe66a0eca1bfeae0abc0fc1e7d3709f271e05e82 (diff) | |
download | busybox-w32-574f2f43948bb21d6e4187936ba5a5afccba25f6.tar.gz busybox-w32-574f2f43948bb21d6e4187936ba5a5afccba25f6.tar.bz2 busybox-w32-574f2f43948bb21d6e4187936ba5a5afccba25f6.zip |
*: add optimization barrier to all "G trick" locations
Diffstat (limited to 'shell/ash.c')
-rw-r--r-- | shell/ash.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/shell/ash.c b/shell/ash.c index 9c762e2ed..9b1a73024 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
@@ -202,9 +202,8 @@ struct globals_misc { | |||
202 | /* indicates specified signal received */ | 202 | /* indicates specified signal received */ |
203 | char gotsig[NSIG - 1]; | 203 | char gotsig[NSIG - 1]; |
204 | }; | 204 | }; |
205 | /* Make it reside in writable memory, yet make compiler understand that it is not going to change. */ | 205 | extern struct globals_misc *const ash_ptr_to_globals_misc; |
206 | static struct globals_misc *const ptr_to_globals_misc __attribute__ ((section (".data"))); | 206 | #define G_misc (*ash_ptr_to_globals_misc) |
207 | #define G_misc (*ptr_to_globals_misc) | ||
208 | #define rootpid (G_misc.rootpid ) | 207 | #define rootpid (G_misc.rootpid ) |
209 | #define shlvl (G_misc.shlvl ) | 208 | #define shlvl (G_misc.shlvl ) |
210 | #define minusc (G_misc.minusc ) | 209 | #define minusc (G_misc.minusc ) |
@@ -223,7 +222,8 @@ static struct globals_misc *const ptr_to_globals_misc __attribute__ ((section (" | |||
223 | #define sigmode (G_misc.sigmode ) | 222 | #define sigmode (G_misc.sigmode ) |
224 | #define gotsig (G_misc.gotsig ) | 223 | #define gotsig (G_misc.gotsig ) |
225 | #define INIT_G_misc() do { \ | 224 | #define INIT_G_misc() do { \ |
226 | (*(struct globals_misc**)&ptr_to_globals_misc) = xzalloc(sizeof(G_misc)); \ | 225 | (*(struct globals_misc**)&ash_ptr_to_globals_misc) = xzalloc(sizeof(G_misc)); \ |
226 | barrier(); \ | ||
227 | curdir = nullstr; \ | 227 | curdir = nullstr; \ |
228 | physdir = nullstr; \ | 228 | physdir = nullstr; \ |
229 | } while (0) | 229 | } while (0) |
@@ -1147,9 +1147,8 @@ struct globals_memstack { | |||
1147 | int herefd; // = -1; | 1147 | int herefd; // = -1; |
1148 | struct stack_block stackbase; | 1148 | struct stack_block stackbase; |
1149 | }; | 1149 | }; |
1150 | /* Make it reside in writable memory, yet make compiler understand that it is not going to change. */ | 1150 | extern struct globals_memstack *const ash_ptr_to_globals_memstack; |
1151 | static struct globals_memstack *const ptr_to_globals_memstack __attribute__ ((section (".data"))); | 1151 | #define G_memstack (*ash_ptr_to_globals_memstack) |
1152 | #define G_memstack (*ptr_to_globals_memstack) | ||
1153 | #define g_stackp (G_memstack.g_stackp ) | 1152 | #define g_stackp (G_memstack.g_stackp ) |
1154 | #define markp (G_memstack.markp ) | 1153 | #define markp (G_memstack.markp ) |
1155 | #define g_stacknxt (G_memstack.g_stacknxt ) | 1154 | #define g_stacknxt (G_memstack.g_stacknxt ) |
@@ -1158,7 +1157,8 @@ static struct globals_memstack *const ptr_to_globals_memstack __attribute__ ((se | |||
1158 | #define herefd (G_memstack.herefd ) | 1157 | #define herefd (G_memstack.herefd ) |
1159 | #define stackbase (G_memstack.stackbase ) | 1158 | #define stackbase (G_memstack.stackbase ) |
1160 | #define INIT_G_memstack() do { \ | 1159 | #define INIT_G_memstack() do { \ |
1161 | (*(struct globals_memstack**)&ptr_to_globals_memstack) = xzalloc(sizeof(G_memstack)); \ | 1160 | (*(struct globals_memstack**)&ash_ptr_to_globals_memstack) = xzalloc(sizeof(G_memstack)); \ |
1161 | barrier(); \ | ||
1162 | g_stackp = &stackbase; \ | 1162 | g_stackp = &stackbase; \ |
1163 | g_stacknxt = stackbase.space; \ | 1163 | g_stacknxt = stackbase.space; \ |
1164 | g_stacknleft = MINSIZE; \ | 1164 | g_stacknleft = MINSIZE; \ |
@@ -1778,9 +1778,8 @@ struct globals_var { | |||
1778 | struct var *vartab[VTABSIZE]; | 1778 | struct var *vartab[VTABSIZE]; |
1779 | struct var varinit[ARRAY_SIZE(varinit_data)]; | 1779 | struct var varinit[ARRAY_SIZE(varinit_data)]; |
1780 | }; | 1780 | }; |
1781 | /* Make it reside in writable memory, yet make compiler understand that it is not going to change. */ | 1781 | extern struct globals_var *const ash_ptr_to_globals_var; |
1782 | static struct globals_var *const ptr_to_globals_var __attribute__ ((section (".data"))); | 1782 | #define G_var (*ash_ptr_to_globals_var) |
1783 | #define G_var (*ptr_to_globals_var) | ||
1784 | #define shellparam (G_var.shellparam ) | 1783 | #define shellparam (G_var.shellparam ) |
1785 | #define redirlist (G_var.redirlist ) | 1784 | #define redirlist (G_var.redirlist ) |
1786 | #define g_nullredirs (G_var.g_nullredirs ) | 1785 | #define g_nullredirs (G_var.g_nullredirs ) |
@@ -1789,7 +1788,8 @@ static struct globals_var *const ptr_to_globals_var __attribute__ ((section (".d | |||
1789 | #define varinit (G_var.varinit ) | 1788 | #define varinit (G_var.varinit ) |
1790 | #define INIT_G_var() do { \ | 1789 | #define INIT_G_var() do { \ |
1791 | int i; \ | 1790 | int i; \ |
1792 | (*(struct globals_var**)&ptr_to_globals_var) = xzalloc(sizeof(G_var)); \ | 1791 | (*(struct globals_var**)&ash_ptr_to_globals_var) = xzalloc(sizeof(G_var)); \ |
1792 | barrier(); \ | ||
1793 | for (i = 0; i < ARRAY_SIZE(varinit_data); i++) { \ | 1793 | for (i = 0; i < ARRAY_SIZE(varinit_data); i++) { \ |
1794 | varinit[i].flags = varinit_data[i].flags; \ | 1794 | varinit[i].flags = varinit_data[i].flags; \ |
1795 | varinit[i].text = varinit_data[i].text; \ | 1795 | varinit[i].text = varinit_data[i].text; \ |