ash_ptr_hack.c 982 B

1234567891011121314151617181920212223242526272829
  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 tarball for details.
  6. */
  7. struct globals_misc;
  8. struct globals_memstack;
  9. struct globals_var;
  10. #ifndef GCC_COMBINE
  11. /* We cheat here. They are declared as const ptr in ash.c,
  12. * but here we make them live in R/W memory */
  13. struct globals_misc *ash_ptr_to_globals_misc;
  14. struct globals_memstack *ash_ptr_to_globals_memstack;
  15. struct globals_var *ash_ptr_to_globals_var;
  16. #else
  17. /* gcc -combine will see through and complain */
  18. /* Using alternative method which is more likely to break
  19. * on weird architectures, compilers, linkers and so on */
  20. struct globals_misc *const ash_ptr_to_globals_misc __attribute__ ((section (".data")));
  21. struct globals_memstack *const ash_ptr_to_globals_memstack __attribute__ ((section (".data")));
  22. struct globals_var *const ash_ptr_to_globals_var __attribute__ ((section (".data")));
  23. #endif