start.c 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /* $NetBSD: Locore.c,v 1.7 2000/08/20 07:04:59 tsubai Exp $ */
  2. /*-
  3. * Copyright (C) 1995, 1996 Wolfgang Solfrank.
  4. * Copyright (C) 1995, 1996 TooLs GmbH.
  5. * All rights reserved.
  6. *
  7. * Redistribution and use in source and binary forms, with or without
  8. * modification, are permitted provided that the following conditions
  9. * are met:
  10. * 1. Redistributions of source code must retain the above copyright
  11. * notice, this list of conditions and the following disclaimer.
  12. * 2. Redistributions in binary form must reproduce the above copyright
  13. * notice, this list of conditions and the following disclaimer in the
  14. * documentation and/or other materials provided with the distribution.
  15. * 3. All advertising materials mentioning features or use of this software
  16. * must display the following acknowledgement:
  17. * This product includes software developed by TooLs GmbH.
  18. * 4. The name of TooLs GmbH may not be used to endorse or promote products
  19. * derived from this software without specific prior written permission.
  20. *
  21. * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR
  22. * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  23. * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  24. * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  25. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  26. * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
  27. * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  28. * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
  29. * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  30. * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  31. */
  32. #include <stand.h>
  33. #include "libofw.h"
  34. void startup(void *, int, int (*)(void *), char *, int);
  35. __asm(" \n\
  36. .data \n\
  37. .align 4 \n\
  38. stack: \n\
  39. .space 16388 \n\
  40. \n\
  41. .text \n\
  42. .globl _start \n\
  43. _start: \n\
  44. lis %r1,stack@ha \n\
  45. addi %r1,%r1,stack@l \n\
  46. addi %r1,%r1,8192 \n\
  47. \n\
  48. /* Clear the .bss!!! */ \n\
  49. li %r0,0 \n\
  50. lis %r8,_edata@ha \n\
  51. addi %r8,%r8,_edata@l\n\
  52. lis %r9,_end@ha \n\
  53. addi %r9,%r9,_end@l \n\
  54. \n\
  55. 1: cmpw 0,%r8,%r9 \n\
  56. bge 2f \n\
  57. stw %r0,0(%r8) \n\
  58. addi %r8,%r8,4 \n\
  59. b 1b \n\
  60. \n\
  61. 2: b startup \n\
  62. ");
  63. void main(int (*openfirm)(void *));
  64. void
  65. startup(void *vpd, int res, int (*openfirm)(void *), char *arg, int argl)
  66. {
  67. main(openfirm);
  68. }