asm-offsets.c 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // SPDX-License-Identifier: GPL-2.0+
  2. /*
  3. * Adapted from Linux v2.6.36 kernel: arch/powerpc/kernel/asm-offsets.c
  4. *
  5. * This program is used to generate definitions needed by
  6. * assembly language modules.
  7. *
  8. * We use the technique used in the OSF Mach kernel code:
  9. * generate asm statements containing #defines,
  10. * compile this file to assembler, and then extract the
  11. * #defines from the assembly-language output.
  12. */
  13. #include <common.h>
  14. #include <linux/kbuild.h>
  15. int main(void)
  16. {
  17. /* Round up to make sure size gives nice stack alignment */
  18. DEFINE(GENERATED_GBL_DATA_SIZE,
  19. (sizeof(struct global_data) + 15) & ~15);
  20. DEFINE(GENERATED_BD_INFO_SIZE,
  21. (sizeof(struct bd_info) + 15) & ~15);
  22. DEFINE(GD_SIZE, sizeof(struct global_data));
  23. DEFINE(GD_BD, offsetof(struct global_data, bd));
  24. #if CONFIG_VAL(SYS_MALLOC_F_LEN)
  25. DEFINE(GD_MALLOC_BASE, offsetof(struct global_data, malloc_base));
  26. #endif
  27. DEFINE(GD_RELOCADDR, offsetof(struct global_data, relocaddr));
  28. DEFINE(GD_RELOC_OFF, offsetof(struct global_data, reloc_off));
  29. DEFINE(GD_START_ADDR_SP, offsetof(struct global_data, start_addr_sp));
  30. DEFINE(GD_NEW_GD, offsetof(struct global_data, new_gd));
  31. return 0;
  32. }