1/* 2 * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. The rights granted to you under the License 10 * may not be used to create, or enable the creation or redistribution of, 11 * unlawful or unlicensed copies of an Apple operating system, or to 12 * circumvent, violate, or enable the circumvention or violation of, any 13 * terms of an Apple operating system software license agreement. 14 * 15 * Please obtain a copy of the License at 16 * http://www.opensource.apple.com/apsl/ and read it before using this file. 17 * 18 * The Original Code and all software distributed under the License are 19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23 * Please see the License for the specific language governing rights and 24 * limitations under the License. 25 * 26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27 */ 28 /* 29 * Copyright (c) 1997-1998 Apple Computer, Inc. 30 * 31 * 32 * HISTORY 33 * 34 * sdouglas 22 Oct 97 - first checked in from DriverServices 35 * sdouglas 28 Jul 98 - start IOKit 36 */ 37 38#include <architecture/ppc/asm_help.h> 39 40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 41; 42; ENTRY functionName 43; 44; Assembly directives to begin an exported function. 45; 46; Takes: functionName - name of the exported function 47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 48 49.macro ENTRY 50 .text 51 .align 2 52 .globl $0 53$0: 54.endmacro 55 56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 57 58/* 59 60OSStatus SynchronizeIO( void ) 61 62*/ 63 64 ENTRY __eSynchronizeIO 65 66 li r0, 0 67 eieio 68 li r3, 0 69 blr 70 71/* 72 73OSStatus CallTVector_NoRecover( 74 void * p1, void * p2, void * p3, void * p4, void * p5, void * p6, // r3-8 75 LogicalAddress entry ) // r9 76 77*/ 78 79#define PARAM_SIZE 24 80#define FM_SIZE 64 81#define FM_LR_SAVE 8 82#define FM_TOC_SAVE 20 83 84 ENTRY _CallTVector 85 86#if 1 87 stw r2, FM_TOC_SAVE(r1) 88 lwz r0, 0(r9) 89 lwz r2, 4(r9) 90 mtspr ctr, r0 91 bctr 92 93#else 94 mflr r0 95 stw r0, FM_LR_SAVE(r1) 96 stw r2, FM_TOC_SAVE(r1) 97 98 stwu r1, -(PARAM_SIZE+FM_SIZE)(r1) 99 100 lwz r2, 4(r9) 101 lwz r0, 0(r9) 102 mtspr lr, r0 103 mfspr r12, lr 104 blrl 105 106 addi r1, r1,(PARAM_SIZE+FM_SIZE) 107 lwz r2, FM_TOC_SAVE(r1) 108 lwz r0, FM_LR_SAVE(r1) 109 mtlr r0 110 blr 111#endif 112 113/* 114 * Seemingly unused references from cpp statically initialized objects. 115 */ 116 117.globl .constructors_used 118.constructors_used = 0 119.globl .destructors_used 120.destructors_used = 0 121