Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

121 lines
2.8 KiB

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;
  3. ; Copyright (c) 1995 Microsoft Corporation. All Rights Reserved.
  4. ;
  5. ; File: libinit.asm
  6. ; Content: DLL entry point - used to avoid dragging in CLIB
  7. ; History:
  8. ; Date By Reason
  9. ; ==== == ======
  10. ; 29-mar-95 craige initial implementation
  11. ;
  12. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  13. .286p
  14. .xlist
  15. include cmacros.inc
  16. .list
  17. ?PLM=1 ; Pascal calling convention
  18. ?WIN=0 ; Windows prolog/epilog code
  19. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  20. ;
  21. ; segmentation
  22. ;
  23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  24. ifndef SEGNAME
  25. SEGNAME equ <_TEXT>
  26. endif
  27. createSeg %SEGNAME, CodeSeg, word, public, CODE
  28. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  29. ;
  30. ; external functions
  31. ;
  32. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  33. externFP LocalInit ; in KERNEL
  34. externFP LibMain ; C code to do DLL init
  35. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  36. ;
  37. ; data segment
  38. ;
  39. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  40. sBegin Data
  41. assumes ds, Data
  42. ; stuff needed to avoid the C runtime coming in, and init the Windows
  43. ; reserved parameter block at the base of DGROUP
  44. org 0 ; base of DATA segment!
  45. dd 0 ; so null pointers get 0
  46. maxRsrvPtrs = 5
  47. dw maxRsrvPtrs
  48. usedRsrvPtrs = 0
  49. labelDP <PUBLIC, rsrvptrs>
  50. DefRsrvPtr macro name
  51. globalW name, 0
  52. usedRsrvPtrs = usedRsrvPtrs + 1
  53. endm
  54. DefRsrvPtr pLocalHeap ; local heap pointer
  55. DefRsrvPtr pAtomTable ; atom table pointer
  56. DefRsrvPtr pStackTop ; top of stack
  57. DefRsrvPtr pStackMin ; minimum value of SP
  58. DefRsrvPtr pStackBot ; bottom of stack
  59. if maxRsrvPtrs-usedRsrvPtrs
  60. dw maxRsrvPtrs-usedRsrvPtrs DUP (0)
  61. endif
  62. public __acrtused
  63. __acrtused = 1
  64. sEnd Data
  65. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  66. ;
  67. ; code segment
  68. ;
  69. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  70. sBegin CodeSeg
  71. assumes cs, CodeSeg
  72. public LibEntry
  73. LibEntry PROC FAR
  74. ; push frame for LibMain (hModule, cbHeap, lpszCmdLine)
  75. push di
  76. push cx
  77. push es
  78. push si
  79. ; init the local heap (if one is declared in the .def file)
  80. jcxz no_heap
  81. cCall LocalInit, <0, 0, cx>
  82. no_heap:
  83. cCall LibMain
  84. ret
  85. LibEntry ENDP
  86. sEnd CodeSeg
  87. end LibEntry