1 /* vi: set sw=4 ts=4: */ 2 /* 3 * Copyright (C) 2008 by Denys Vlasenko <vda.linux@googlemail.com> 4 * 5 * Licensed under GPLv2, see file LICENSE in this source tree. 6 */ 7 8 struct globals_misc; 9 struct globals_memstack; 10 struct globals_var; 11 12 #ifndef GCC_COMBINE 13 14 /* We cheat here. They are declared as const ptr in ash.c, 15 * but here we make them live in R/W memory */ 16 struct globals_misc *ash_ptr_to_globals_misc; 17 struct globals_memstack *ash_ptr_to_globals_memstack; 18 struct globals_var *ash_ptr_to_globals_var; 19 20 #else 21 22 /* gcc -combine will see through and complain */ 23 /* Using alternative method which is more likely to break 24 * on weird architectures, compilers, linkers and so on */ 25 struct globals_misc *const ash_ptr_to_globals_misc __attribute__ ((section (".data"))); 26 struct globals_memstack *const ash_ptr_to_globals_memstack __attribute__ ((section (".data"))); 27 struct globals_var *const ash_ptr_to_globals_var __attribute__ ((section (".data"))); 28 29 #endif 30