Source code of Windows XP (NT5)
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.

578 lines
11 KiB

  1. /*++
  2. Copyright c 1994 Microsoft Corporation. All rights reserved.
  3. Module Name:
  4. forward.s
  5. Abstract:
  6. This module implements the proxy forwarding functions.
  7. Author:
  8. ShannonC 26-Oct-94
  9. Environment:
  10. Any mode.
  11. Revision History:
  12. --*/
  13. #include "ksia64.h"
  14. .file "forward.s"
  15. /*++
  16. VOID
  17. NdrProxyForwardingFunction<nnn>(...)
  18. Routine Description:
  19. This function forwards a call to the proxy for the base interface.
  20. Arguments:
  21. This [a0] - Points to an interface proxy.
  22. Return Value:
  23. None.
  24. --*/
  25. // here is what a forwarder looks like
  26. // we must:
  27. // change the "this" pointer in [esp+4] to point to the delegated object
  28. // fetch the correct entry from the vtable
  29. // call the function
  30. #define SUBCLASS_OFFSET 32
  31. #define VTABLE_ENTRY(n) n*8
  32. /*
  33. this is a macro for delegation methods. It first retrives BaseProxyBuffer
  34. from the proxy vtbl, then deference to get the base vtbl. From the offset
  35. in vtbl, we get the pair of real .ObjectStublessClient##method_number
  36. and gp. bp & b6 is loaded up accordingly and the code is branched into
  37. ObjectStublessClient##method_number
  38. */
  39. #define DELEGATION_FORWARDER(method_number) \
  40. LEAF_ENTRY( NdrProxyForwardingFunction##method_number ); \
  41. add r32 = SUBCLASS_OFFSET, r32; \
  42. ;; \
  43. LDPTR (r32, r32);; \
  44. LDPTR (r2, r32);; \
  45. add r2 = VTABLE_ENTRY(method_number), r2;; \
  46. LDPTR (r2, r2 );; \
  47. LDPTRINC (r3, r2, 8); \
  48. ;; \
  49. LDPTR (gp, r2); \
  50. mov b6 = r3; \
  51. br##.##sptk##.##clr b6; \
  52. LEAF_EXIT( NdrProxyForwardingFunction##method_number )
  53. DELEGATION_FORWARDER(3)
  54. DELEGATION_FORWARDER(4)
  55. DELEGATION_FORWARDER(5)
  56. DELEGATION_FORWARDER(6)
  57. DELEGATION_FORWARDER(7)
  58. DELEGATION_FORWARDER(8)
  59. DELEGATION_FORWARDER(9)
  60. DELEGATION_FORWARDER(10)
  61. DELEGATION_FORWARDER(11)
  62. DELEGATION_FORWARDER(12)
  63. DELEGATION_FORWARDER(13)
  64. DELEGATION_FORWARDER(14)
  65. DELEGATION_FORWARDER(15)
  66. DELEGATION_FORWARDER(16)
  67. DELEGATION_FORWARDER(17)
  68. DELEGATION_FORWARDER(18)
  69. DELEGATION_FORWARDER(19)
  70. DELEGATION_FORWARDER(20)
  71. DELEGATION_FORWARDER(21)
  72. DELEGATION_FORWARDER(22)
  73. DELEGATION_FORWARDER(23)
  74. DELEGATION_FORWARDER(24)
  75. DELEGATION_FORWARDER(25)
  76. DELEGATION_FORWARDER(26)
  77. DELEGATION_FORWARDER(27)
  78. DELEGATION_FORWARDER(28)
  79. DELEGATION_FORWARDER(29)
  80. DELEGATION_FORWARDER(30)
  81. DELEGATION_FORWARDER(31)
  82. DELEGATION_FORWARDER(32)
  83. DELEGATION_FORWARDER(33)
  84. DELEGATION_FORWARDER(34)
  85. DELEGATION_FORWARDER(35)
  86. DELEGATION_FORWARDER(36)
  87. DELEGATION_FORWARDER(37)
  88. DELEGATION_FORWARDER(38)
  89. DELEGATION_FORWARDER(39)
  90. DELEGATION_FORWARDER(40)
  91. DELEGATION_FORWARDER(41)
  92. DELEGATION_FORWARDER(42)
  93. DELEGATION_FORWARDER(43)
  94. DELEGATION_FORWARDER(44)
  95. DELEGATION_FORWARDER(45)
  96. DELEGATION_FORWARDER(46)
  97. DELEGATION_FORWARDER(47)
  98. DELEGATION_FORWARDER(48)
  99. DELEGATION_FORWARDER(49)
  100. DELEGATION_FORWARDER(50)
  101. DELEGATION_FORWARDER(51)
  102. DELEGATION_FORWARDER(52)
  103. DELEGATION_FORWARDER(53)
  104. DELEGATION_FORWARDER(54)
  105. DELEGATION_FORWARDER(55)
  106. DELEGATION_FORWARDER(56)
  107. DELEGATION_FORWARDER(57)
  108. DELEGATION_FORWARDER(58)
  109. DELEGATION_FORWARDER(59)
  110. DELEGATION_FORWARDER(60)
  111. DELEGATION_FORWARDER(61)
  112. DELEGATION_FORWARDER(62)
  113. DELEGATION_FORWARDER(63)
  114. DELEGATION_FORWARDER(64)
  115. DELEGATION_FORWARDER(65)
  116. DELEGATION_FORWARDER(66)
  117. DELEGATION_FORWARDER(67)
  118. DELEGATION_FORWARDER(68)
  119. DELEGATION_FORWARDER(69)
  120. DELEGATION_FORWARDER(70)
  121. DELEGATION_FORWARDER(71)
  122. DELEGATION_FORWARDER(72)
  123. DELEGATION_FORWARDER(73)
  124. DELEGATION_FORWARDER(74)
  125. DELEGATION_FORWARDER(75)
  126. DELEGATION_FORWARDER(76)
  127. DELEGATION_FORWARDER(77)
  128. DELEGATION_FORWARDER(78)
  129. DELEGATION_FORWARDER(79)
  130. DELEGATION_FORWARDER(80)
  131. DELEGATION_FORWARDER(81)
  132. DELEGATION_FORWARDER(82)
  133. DELEGATION_FORWARDER(83)
  134. DELEGATION_FORWARDER(84)
  135. DELEGATION_FORWARDER(85)
  136. DELEGATION_FORWARDER(86)
  137. DELEGATION_FORWARDER(87)
  138. DELEGATION_FORWARDER(88)
  139. DELEGATION_FORWARDER(89)
  140. DELEGATION_FORWARDER(90)
  141. DELEGATION_FORWARDER(91)
  142. DELEGATION_FORWARDER(92)
  143. DELEGATION_FORWARDER(93)
  144. DELEGATION_FORWARDER(94)
  145. DELEGATION_FORWARDER(95)
  146. DELEGATION_FORWARDER(96)
  147. DELEGATION_FORWARDER(97)
  148. DELEGATION_FORWARDER(98)
  149. DELEGATION_FORWARDER(99)
  150. DELEGATION_FORWARDER(100)
  151. DELEGATION_FORWARDER(101)
  152. DELEGATION_FORWARDER(102)
  153. DELEGATION_FORWARDER(103)
  154. DELEGATION_FORWARDER(104)
  155. DELEGATION_FORWARDER(105)
  156. DELEGATION_FORWARDER(106)
  157. DELEGATION_FORWARDER(107)
  158. DELEGATION_FORWARDER(108)
  159. DELEGATION_FORWARDER(109)
  160. DELEGATION_FORWARDER(110)
  161. DELEGATION_FORWARDER(111)
  162. DELEGATION_FORWARDER(112)
  163. DELEGATION_FORWARDER(113)
  164. DELEGATION_FORWARDER(114)
  165. DELEGATION_FORWARDER(115)
  166. DELEGATION_FORWARDER(116)
  167. DELEGATION_FORWARDER(117)
  168. DELEGATION_FORWARDER(118)
  169. DELEGATION_FORWARDER(119)
  170. DELEGATION_FORWARDER(120)
  171. DELEGATION_FORWARDER(121)
  172. DELEGATION_FORWARDER(122)
  173. DELEGATION_FORWARDER(123)
  174. DELEGATION_FORWARDER(124)
  175. DELEGATION_FORWARDER(125)
  176. DELEGATION_FORWARDER(126)
  177. DELEGATION_FORWARDER(127)
  178. DELEGATION_FORWARDER(128)
  179. DELEGATION_FORWARDER(129)
  180. DELEGATION_FORWARDER(130)
  181. DELEGATION_FORWARDER(131)
  182. DELEGATION_FORWARDER(132)
  183. DELEGATION_FORWARDER(133)
  184. DELEGATION_FORWARDER(134)
  185. DELEGATION_FORWARDER(135)
  186. DELEGATION_FORWARDER(136)
  187. DELEGATION_FORWARDER(137)
  188. DELEGATION_FORWARDER(138)
  189. DELEGATION_FORWARDER(139)
  190. DELEGATION_FORWARDER(140)
  191. DELEGATION_FORWARDER(141)
  192. DELEGATION_FORWARDER(142)
  193. DELEGATION_FORWARDER(143)
  194. DELEGATION_FORWARDER(144)
  195. DELEGATION_FORWARDER(145)
  196. DELEGATION_FORWARDER(146)
  197. DELEGATION_FORWARDER(147)
  198. DELEGATION_FORWARDER(148)
  199. DELEGATION_FORWARDER(149)
  200. DELEGATION_FORWARDER(150)
  201. DELEGATION_FORWARDER(151)
  202. DELEGATION_FORWARDER(152)
  203. DELEGATION_FORWARDER(153)
  204. DELEGATION_FORWARDER(154)
  205. DELEGATION_FORWARDER(155)
  206. DELEGATION_FORWARDER(156)
  207. DELEGATION_FORWARDER(157)
  208. DELEGATION_FORWARDER(158)
  209. DELEGATION_FORWARDER(159)
  210. DELEGATION_FORWARDER(160)
  211. DELEGATION_FORWARDER(161)
  212. DELEGATION_FORWARDER(162)
  213. DELEGATION_FORWARDER(163)
  214. DELEGATION_FORWARDER(164)
  215. DELEGATION_FORWARDER(165)
  216. DELEGATION_FORWARDER(166)
  217. DELEGATION_FORWARDER(167)
  218. DELEGATION_FORWARDER(168)
  219. DELEGATION_FORWARDER(169)
  220. DELEGATION_FORWARDER(170)
  221. DELEGATION_FORWARDER(171)
  222. DELEGATION_FORWARDER(172)
  223. DELEGATION_FORWARDER(173)
  224. DELEGATION_FORWARDER(174)
  225. DELEGATION_FORWARDER(175)
  226. DELEGATION_FORWARDER(176)
  227. DELEGATION_FORWARDER(177)
  228. DELEGATION_FORWARDER(178)
  229. DELEGATION_FORWARDER(179)
  230. DELEGATION_FORWARDER(180)
  231. DELEGATION_FORWARDER(181)
  232. DELEGATION_FORWARDER(182)
  233. DELEGATION_FORWARDER(183)
  234. DELEGATION_FORWARDER(184)
  235. DELEGATION_FORWARDER(185)
  236. DELEGATION_FORWARDER(186)
  237. DELEGATION_FORWARDER(187)
  238. DELEGATION_FORWARDER(188)
  239. DELEGATION_FORWARDER(189)
  240. DELEGATION_FORWARDER(190)
  241. DELEGATION_FORWARDER(191)
  242. DELEGATION_FORWARDER(192)
  243. DELEGATION_FORWARDER(193)
  244. DELEGATION_FORWARDER(194)
  245. DELEGATION_FORWARDER(195)
  246. DELEGATION_FORWARDER(196)
  247. DELEGATION_FORWARDER(197)
  248. DELEGATION_FORWARDER(198)
  249. DELEGATION_FORWARDER(199)
  250. DELEGATION_FORWARDER(200)
  251. DELEGATION_FORWARDER(201)
  252. DELEGATION_FORWARDER(202)
  253. DELEGATION_FORWARDER(203)
  254. DELEGATION_FORWARDER(204)
  255. DELEGATION_FORWARDER(205)
  256. DELEGATION_FORWARDER(206)
  257. DELEGATION_FORWARDER(207)
  258. DELEGATION_FORWARDER(208)
  259. DELEGATION_FORWARDER(209)
  260. DELEGATION_FORWARDER(210)
  261. DELEGATION_FORWARDER(211)
  262. DELEGATION_FORWARDER(212)
  263. DELEGATION_FORWARDER(213)
  264. DELEGATION_FORWARDER(214)
  265. DELEGATION_FORWARDER(215)
  266. DELEGATION_FORWARDER(216)
  267. DELEGATION_FORWARDER(217)
  268. DELEGATION_FORWARDER(218)
  269. DELEGATION_FORWARDER(219)
  270. DELEGATION_FORWARDER(220)
  271. DELEGATION_FORWARDER(221)
  272. DELEGATION_FORWARDER(222)
  273. DELEGATION_FORWARDER(223)
  274. DELEGATION_FORWARDER(224)
  275. DELEGATION_FORWARDER(225)
  276. DELEGATION_FORWARDER(226)
  277. DELEGATION_FORWARDER(227)
  278. DELEGATION_FORWARDER(228)
  279. DELEGATION_FORWARDER(229)
  280. DELEGATION_FORWARDER(230)
  281. DELEGATION_FORWARDER(231)
  282. DELEGATION_FORWARDER(232)
  283. DELEGATION_FORWARDER(233)
  284. DELEGATION_FORWARDER(234)
  285. DELEGATION_FORWARDER(235)
  286. DELEGATION_FORWARDER(236)
  287. DELEGATION_FORWARDER(237)
  288. DELEGATION_FORWARDER(238)
  289. DELEGATION_FORWARDER(239)
  290. DELEGATION_FORWARDER(240)
  291. DELEGATION_FORWARDER(241)
  292. DELEGATION_FORWARDER(242)
  293. DELEGATION_FORWARDER(243)
  294. DELEGATION_FORWARDER(244)
  295. DELEGATION_FORWARDER(245)
  296. DELEGATION_FORWARDER(246)
  297. DELEGATION_FORWARDER(247)
  298. DELEGATION_FORWARDER(248)
  299. DELEGATION_FORWARDER(249)
  300. DELEGATION_FORWARDER(250)
  301. DELEGATION_FORWARDER(251)
  302. DELEGATION_FORWARDER(252)
  303. DELEGATION_FORWARDER(253)
  304. DELEGATION_FORWARDER(254)
  305. DELEGATION_FORWARDER(255)