# This is a part of the Microsoft Foundation Classes C++ library.
# Copyright (C) 1992-1997 Microsoft Corporation
# All rights reserved.
#
# This source code is only intended as a supplement to the
# Microsoft Foundation Classes Reference and related
# electronic documentation provided with the library.
# See these sources for detailed information regarding the
# Microsoft Foundation Classes product.

# This file contains the PowerPC/Win32 specific code for MFC/OLE automation.

	.globl	_AfxDispatchCall
	.globl	.._AfxDispatchCall

# r3 -> function descriptor
# r4 -> argument list
# r5 = number of argument bytes

# (r4+r5 -> float argument shadow buffer)

	.pdata
	.align	2
	.ualong	.._AfxDispatchCall,_AfxDispatchCall.e,0,0,_AfxDispatchCall.b

	.reldata
_AfxDispatchCall:
	.ualong	.._AfxDispatchCall,.toc

	.section	.text
	.align	2
.._AfxDispatchCall:
	.function	.._AfxDispatchCall

_AfxDispatchCall.b:

	lwz     r12,0(r3)   # load entry point address
	lwz     r2,4(r3)    # load TOC address
	mtctr   r12         # move function entry point address to CTR register

	add     r5,r5,r4    # make r5 point to float argument shadow list
						#  (it follows argument list)

	lfd     f1,0(r5)    # load float argument  1
	lfd     f2,8(r5)    # load float argument  2
	lwz     r10,28(r4)  # load argument word 8

	lfd     f3,16(r5)   # load float argument  3
	lfd     f4,24(r5)   # load float argument  4
	lwz     r9,24(r4)   # load argument word 7

	lfd     f5,32(r5)   # load float argument  5
	lfd     f6,40(r5)   # load float argument  6
	lwz     r8,20(r4)   # load argument word 6

	lfd     f7,48(r5)   # load float argument  7
	lfd     f8,56(r5)   # load float argument  8
	lwz     r7,16(r4)   # load argument word 5

	lfd     f9,64(r5)   # load float argument  9
	lfd     f10,72(r5)  # load float argument 10
	lwz     r6,12(r4)   # load argument word 4

	lfd     f11,80(r5)  # load float argument 11
	lfd     f12,88(r5)  # load float argument 12
	lwz     r3,0(r4)    # load argument word 1

	lfd     f13,96(r5)  # load float argument 13
	lwz     r5,8(r4)    # load argument word 3
	lwz     r4,4(r4)    # load argument word 2

	bctr                # destination function entry point

_AfxDispatchCall.e:

FE_MOT_RESVD.._AfxDispatchCall:
