lowlevel_init.S 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /*
  2. * A lowlevel_init function that sets up the stack to call a C function to
  3. * perform further init.
  4. *
  5. * (C) Copyright 2010
  6. * Texas Instruments, <www.ti.com>
  7. *
  8. * Author :
  9. * Aneesh V <aneesh@ti.com>
  10. *
  11. * See file CREDITS for list of people who contributed to this
  12. * project.
  13. *
  14. * This program is free software; you can redistribute it and/or
  15. * modify it under the terms of the GNU General Public License as
  16. * published by the Free Software Foundation; either version 2 of
  17. * the License, or (at your option) any later version.
  18. *
  19. * This program is distributed in the hope that it will be useful,
  20. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  21. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  22. * GNU General Public License for more details.
  23. *
  24. * You should have received a copy of the GNU General Public License
  25. * along with this program; if not, write to the Free Software
  26. * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  27. * MA 02111-1307 USA
  28. */
  29. #include <asm-offsets.h>
  30. #include <config.h>
  31. #include <linux/linkage.h>
  32. ENTRY(lowlevel_init)
  33. /*
  34. * Setup a temporary stack
  35. */
  36. ldr sp, =CONFIG_SYS_INIT_SP_ADDR
  37. bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
  38. /*
  39. * Save the old lr(passed in ip) and the current lr to stack
  40. */
  41. push {ip, lr}
  42. /*
  43. * go setup pll, mux, memory
  44. */
  45. bl s_init
  46. pop {ip, pc}
  47. ENDPROC(lowlevel_init)