1/* 2 * Copyright (c) 2002 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#if __GNUC__ >= 3 30 31; 32; This function was generated by disassembling the 'OSObject::free(void)' 33; function of the Panther7B7 kernel in gdb. 34; 35; Then add the 'li r4,3' flag taken fropm the Puma kernel 'OSObject::free' 36; 37 .text 38 39 .align 5 40 .globl __ZN8OSObject4freeEv 41 42__ZN8OSObject4freeEv: 43 ; function prologue 44 stw r31,-4(r1) 45 mflr r0 46 stw r0,8(r1) 47 mr r31,r3 48 stwu r1,-80(r1) 49 50 ; const OSMetaClass *meta = getMetaClass(); 51 lwz r9,0(r3) 52 lwz r12,32(r9) 53 mtctr r12 54 bctrl 55 56 ; if (meta) 57 ; meta->instanceDestructed(); 58 cmpwi r3,0 59 beq delete_this 60 bl __ZNK11OSMetaClass18instanceDestructedEv 61 62delete_this: 63 ; delete this; 64 lwz r9,0(r31) 65 mr r3,r31 66 li r4,0 ; Load up some sort of flags, for 2.95 destructors? 67 lwz r0,88(r1) 68 addi r1,r1,80 69 lwz r12,8(r9) 70 mtlr r0 71 lwz r31,-4(r1) 72 mtctr r12 73 bctr 74 75#endif /* __GNUC__ >= 3 */ 76