Comment: | Have .S file names match the platform defines |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
754d22a701856f195767002bb081e907 |
User & Date: | js on 2017-09-09 11:09:41 |
Other Links: | manifest | tags |
2017-09-09
| ||
18:45 | Add missing #include "config.h" check-in: 143a03a8f0 user: js tags: trunk | |
11:09 | Have .S file names match the platform defines check-in: 754d22a701 user: js tags: trunk | |
2017-09-06
| ||
00:52 | PLATFORMS.md: Add Itanium to Linux check-in: a7c20c5ca7 user: js tags: trunk | |
Added src/forwarding/apple-forwarding-powerpc.S version [d88f9fb209].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 | /* * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 * Jonathan Schleifer <js@heap.zone> * * All rights reserved. * * This file is part of ObjFW. It may be distributed under the terms of the * Q Public License 1.0, which can be found in the file LICENSE.QPL included in * the packaging of this file. * * Alternatively, it may be distributed under the terms of the GNU General * Public License, either version 2 or 3, which can be found in the file * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this * file. */ #include "config.h" .globl _of_forward .globl _of_forward_stret .section __TEXT, __cstring, cstring_literals str_forwardingTargetForSelector_: .asciz "forwardingTargetForSelector:" .section __OBJC, __message_refs sel_forwardingTargetForSelector_: .long str_forwardingTargetForSelector_ .section __OBJC, __image_info .long 0, 0 .section __TEXT, __text, regular, pure_instructions _of_forward: mflr r0 stw r0, 8(r1) stwu r1, -192(r1) /* * Save all arguments and r13. * * We can dump two parameters in the parameter area as we know that * space has been reserved for at least two parameters. */ stw r3, 216(r1) stw r4, 220(r1) stw r5, 56(r1) stw r6, 60(r1) stw r7, 64(r1) stw r8, 68(r1) stw r9, 72(r1) stw r10, 76(r1) stw r13, 80(r1) /* Save all floating point arguments */ stfd f1, 88(r1) stfd f2, 96(r1) stfd f3, 104(r1) stfd f4, 112(r1) stfd f5, 120(r1) stfd f6, 128(r1) stfd f7, 136(r1) stfd f8, 144(r1) stfd f9, 152(r1) stfd f10, 160(r1) stfd f11, 168(r1) stfd f12, 176(r1) stfd f13, 184(r1) bl _object_getClass bl 0f 0: mflr r13 addis r13, r13, ha16(sel_forwardingTargetForSelector_-0b) lwz r13, lo16(sel_forwardingTargetForSelector_-0b)(r13) mr r4, r13 bl _class_respondsToSelector cmpwi r3, 0 beq- 0f lwz r3, 216(r1) mr r4, r13 lwz r5, 220(r1) bl _objc_msgSend cmpwi r3, 0 beq- 0f lwz r4, 216(r1) cmpw r3, r4 beq- 0f /* Restore all arguments and r13, except r3 */ lwz r4, 220(r1) lwz r5, 56(r1) lwz r6, 60(r1) lwz r7, 64(r1) lwz r8, 68(r1) lwz r9, 72(r1) lwz r10, 76(r1) lwz r13, 80(r1) /* Restore all floating point arguments */ lfd f1, 88(r1) lfd f2, 96(r1) lfd f3, 104(r1) lfd f4, 112(r1) lfd f5, 120(r1) lfd f6, 128(r1) lfd f7, 136(r1) lfd f8, 144(r1) lfd f9, 152(r1) lfd f10, 160(r1) lfd f11, 168(r1) lfd f12, 176(r1) lfd f13, 184(r1) addi r1, r1, 192 lwz r0, 8(r1) mtlr r0 b _objc_msgSend 0: lwz r3, 216(r1) lwz r4, 220(r1) addi r1, r1, 192 lwz r0, 8(r1) mtlr r0 b _of_method_not_found _of_forward_stret: mflr r0 stw r0, 8(r1) stwu r1, -184(r1) /* * Save all arguments and r13. * * We can dump three parameters in the parameter area as we know that * space has been reserved for at least three parameters. */ stw r3, 208(r1) stw r4, 212(r1) stw r5, 216(r1) stw r6, 56(r1) stw r7, 60(r1) stw r8, 64(r1) stw r9, 68(r1) stw r10, 72(r1) stw r13, 76(r1) /* Save all floating point arguments */ stfd f1, 80(r1) stfd f2, 88(r1) stfd f3, 96(r1) stfd f4, 104(r1) stfd f5, 112(r1) stfd f6, 120(r1) stfd f7, 128(r1) stfd f8, 136(r1) stfd f9, 144(r1) stfd f10, 152(r1) stfd f11, 160(r1) stfd f12, 168(r1) stfd f13, 176(r1) mr r3, r4 bl _object_getClass bl 0f 0: mflr r13 addis r13, r13, ha16(sel_forwardingTargetForSelector_-0b) lwz r13, lo16(sel_forwardingTargetForSelector_-0b)(r13) mr r4, r13 bl _class_respondsToSelector cmpwi r3, 0 beq- 0f lwz r3, 212(r1) mr r4, r13 lwz r5, 216(r1) bl _objc_msgSend cmpwi r3, 0 beq- 0f lwz r4, 212(r1) cmpw r3, r4 beq- 0f mr r4, r3 /* Restore all arguments and r13, except r4 */ lwz r3, 208(r1) lwz r5, 216(r1) lwz r6, 56(r1) lwz r7, 60(r1) lwz r8, 64(r1) lwz r9, 68(r1) lwz r10, 72(r1) lwz r13, 76(r1) /* Restore all floating point arguments */ lfd f1, 80(r1) lfd f2, 88(r1) lfd f3, 96(r1) lfd f4, 104(r1) lfd f5, 112(r1) lfd f6, 120(r1) lfd f7, 128(r1) lfd f8, 136(r1) lfd f9, 144(r1) lfd f10, 152(r1) lfd f11, 160(r1) lfd f12, 168(r1) lfd f13, 176(r1) addi r1, r1, 184 lwz r0, 8(r1) mtlr r0 b _objc_msgSend_stret 0: lwz r3, 208(r1) lwz r4, 212(r1) lwz r5, 216(r1) addi r1, r1, 184 lwz r0, 8(r1) mtlr r0 b _of_method_not_found_stret |
Deleted src/forwarding/apple-forwarding-ppc.S version [d88f9fb209].
|
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |
Added src/forwarding/forwarding-powerpc-elf.S version [e03be5b919].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 | /* * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 * Jonathan Schleifer <js@heap.zone> * * All rights reserved. * * This file is part of ObjFW. It may be distributed under the terms of the * Q Public License 1.0, which can be found in the file LICENSE.QPL included in * the packaging of this file. * * Alternatively, it may be distributed under the terms of the GNU General * Public License, either version 2 or 3, which can be found in the file * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this * file. */ #include "config.h" #include "platform.h" .globl of_forward .globl of_forward_stret .section .text of_forward: stwu %r1, -112(%r1) mflr %r0 stw %r0, 116(%r1) /* Save all arguments */ stw %r3, 8(%r1) stw %r4, 12(%r1) stw %r5, 16(%r1) stw %r6, 20(%r1) stw %r7, 24(%r1) stw %r8, 28(%r1) stw %r9, 32(%r1) stw %r10, 36(%r1) /* Save all floating point arguments */ stfd %f1, 40(%r1) stfd %f2, 48(%r1) stfd %f3, 56(%r1) stfd %f4, 64(%r1) stfd %f5, 72(%r1) stfd %f6, 80(%r1) stfd %f7, 88(%r1) stfd %f8, 96(%r1) bl object_getClass@plt lis %r4, sel_forwardingTargetForSelector_@ha la %r4, sel_forwardingTargetForSelector_@l(%r4) bl class_respondsToSelector@plt cmpwi %r3, 0 beq- 0f lwz %r3, 8(%r1) lis %r4, sel_forwardingTargetForSelector_@ha la %r4, sel_forwardingTargetForSelector_@l(%r4) bl objc_msg_lookup@plt mtctr %r3 lwz %r3, 8(%r1) lis %r4, sel_forwardingTargetForSelector_@ha la %r4, sel_forwardingTargetForSelector_@l(%r4) lwz %r5, 12(%r1) bctrl cmpwi %r3, 0 beq- 0f lwz %r4, 8(%r1) cmpw %r3, %r4 beq- 0f stw %r3, 8(%r1) lwz %r4, 12(%r1) bl objc_msg_lookup@plt mtctr %r3 /* Restore all arguments */ lwz %r3, 8(%r1) lwz %r4, 12(%r1) lwz %r5, 16(%r1) lwz %r6, 20(%r1) lwz %r7, 24(%r1) lwz %r8, 28(%r1) lwz %r9, 32(%r1) lwz %r10, 36(%r1) /* Restore all floating point arguments */ lfd %f1, 40(%r1) lfd %f2, 48(%r1) lfd %f3, 56(%r1) lfd %f4, 64(%r1) lfd %f5, 72(%r1) lfd %f6, 80(%r1) lfd %f7, 88(%r1) lfd %f8, 96(%r1) lwz %r0, 116(%r1) mtlr %r0 addi %r1, %r1, 112 bctr 0: lwz %r3, 8(%r1) lwz %r4, 12(%r1) lwz %r0, 116(%r1) mtlr %r0 addi %r1, %r1, 112 b of_method_not_found@plt .type of_forward, @function .size of_forward, .-of_forward of_forward_stret: stwu %r1, -112(%r1) mflr %r0 stw %r0, 116(%r1) /* Save all arguments */ stw %r3, 8(%r1) stw %r4, 12(%r1) stw %r5, 16(%r1) stw %r6, 20(%r1) stw %r7, 24(%r1) stw %r8, 28(%r1) stw %r9, 32(%r1) stw %r10, 36(%r1) /* Save all floating point arguments */ stfd %f1, 40(%r1) stfd %f2, 48(%r1) stfd %f3, 56(%r1) stfd %f4, 64(%r1) stfd %f5, 72(%r1) stfd %f6, 80(%r1) stfd %f7, 88(%r1) stfd %f8, 96(%r1) mr %r3, %r4 bl object_getClass@plt lis %r4, sel_forwardingTargetForSelector_@ha la %r4, sel_forwardingTargetForSelector_@l(%r4) bl class_respondsToSelector@plt cmpwi %r3, 0 beq- 0f lwz %r3, 12(%r1) lis %r4, sel_forwardingTargetForSelector_@ha la %r4, sel_forwardingTargetForSelector_@l(%r4) bl objc_msg_lookup@plt mtctr %r3 lwz %r3, 12(%r1) lis %r4, sel_forwardingTargetForSelector_@ha la %r4, sel_forwardingTargetForSelector_@l(%r4) lwz %r5, 16(%r1) bctrl cmpwi %r3, 0 beq- 0f lwz %r4, 12(%r1) cmpw %r3, %r4 beq- 0f stw %r3, 12(%r1) lwz %r4, 16(%r1) bl objc_msg_lookup_stret@plt mtctr %r3 /* Restore all arguments */ lwz %r3, 8(%r1) lwz %r4, 12(%r1) lwz %r5, 16(%r1) lwz %r6, 20(%r1) lwz %r7, 24(%r1) lwz %r8, 28(%r1) lwz %r9, 32(%r1) lwz %r10, 36(%r1) /* Restore all floating point arguments */ lfd %f1, 40(%r1) lfd %f2, 48(%r1) lfd %f3, 56(%r1) lfd %f4, 64(%r1) lfd %f5, 72(%r1) lfd %f6, 80(%r1) lfd %f7, 88(%r1) lfd %f8, 96(%r1) lwz %r0, 116(%r1) mtlr %r0 addi %r1, %r1, 112 bctr 0: lwz %r3, 8(%r1) lwz %r4, 12(%r1) lwz %r5, 16(%r1) lwz %r0, 116(%r1) mtlr %r0 addi %r1, %r1, 112 b of_method_not_found_stret@plt .type of_forward_stret, @function .size of_forward_stret, .-of_forward_stret init: lis %r3, module@ha la %r3, module@l(%r3) b __objc_exec_class@plt .section .ctors, "aw", @progbits .long init .section .rodata str_forwardingTargetForSelector_: .asciz "forwardingTargetForSelector:" .section .data sel_forwardingTargetForSelector_: .long str_forwardingTargetForSelector_, 0 .long 0, 0 symtab: .long 0, sel_forwardingTargetForSelector_ .short 0, 0 .long 0 .long 0 module: .long 8, 16, 0, symtab #ifdef OF_LINUX .section .note.GNU-stack, "", @progbits #endif |
Deleted src/forwarding/forwarding-ppc-elf.S version [e03be5b919].
|
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |
Modified src/forwarding/forwarding.S from [d8dcb8a2a4] to [c15a651220].
︙ | ︙ | |||
24 25 26 27 28 29 30 | # elif defined(OF_X86) # include "apple-forwarding-i386.S" # elif defined(OF_ARM64) # include "apple-forwarding-arm64.S" # elif defined(OF_ARM) # include "apple-forwarding-arm.S" # elif defined(OF_POWERPC) | | | | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | # elif defined(OF_X86) # include "apple-forwarding-i386.S" # elif defined(OF_ARM64) # include "apple-forwarding-arm64.S" # elif defined(OF_ARM) # include "apple-forwarding-arm.S" # elif defined(OF_POWERPC) # include "apple-forwarding-powerpc.S" # endif #else # if defined(OF_ELF) # if defined(OF_X86_64) # include "forwarding-x86_64-elf.S" # elif defined(OF_X86) # include "forwarding-x86-elf.S" # elif defined(OF_ARM64) # include "forwarding-arm64-elf.S" # elif defined(OF_ARM) # include "forwarding-arm-elf.S" # elif defined(OF_POWERPC) # include "forwarding-powerpc-elf.S" # elif defined(OF_MIPS) # include "forwarding-mips-elf.S" # elif defined(OF_SPARC64) # include "forwarding-sparc64-elf.S" # endif # elif defined(OF_MACH_O) # if defined(OF_X86_64) |
︙ | ︙ |
Deleted src/runtime/lookup-asm/lookup-asm-mips64-elf.S version [63841bf530].
|
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |
Added src/runtime/lookup-asm/lookup-asm-mips64-n64-elf.S version [63841bf530].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | /* * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 * Jonathan Schleifer <js@heap.zone> * * All rights reserved. * * This file is part of ObjFW. It may be distributed under the terms of the * Q Public License 1.0, which can be found in the file LICENSE.QPL included in * the packaging of this file. * * Alternatively, it may be distributed under the terms of the GNU General * Public License, either version 2 or 3, which can be found in the file * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this * file. */ #include "config.h" #include "platform.h" .globl objc_msg_lookup .globl objc_msg_lookup_stret .globl objc_msg_lookup_super .globl objc_msg_lookup_super_stret .section .text .macro generate_lookup name not_found \name: beqz $a0, 0f ld $t0, 0($a0) ld $t0, 64($t0) .Lmain_\name: #ifdef OF_BIG_ENDIAN # ifdef OF_SELUID24 lbu $t1, 5($a1) # endif lbu $t2, 6($a1) lbu $t3, 7($a1) #else # ifdef OF_SELUID24 lbu $t1, 2($a1) # endif lbu $t2, 1($a1) lbu $t3, 0($a1) #endif #ifdef OF_SELUID24 sll $t1, $t1, 3 #endif sll $t2, $t2, 3 sll $t3, $t3, 3 #ifdef OF_SELUID24 daddu $t0, $t0, $t1 ld $t0, 0($t0) #endif daddu $t0, $t0, $t2 ld $t0, 0($t0) daddu $t0, $t0, $t3 ld $t0, 0($t0) beqz $t0, 1f move $v0, $t0 jr $ra 0: lui $v0, %hi(%neg(%gp_rel(\name))) daddu $v0, $v0, $t9 daddiu $v0, $v0, %lo(%neg(%gp_rel(\name))) ld $v0, %got_disp(nil_method)($v0) jr $ra 1: lui $t0, %hi(%neg(%gp_rel(\name))) daddu $t0, $t0, $t9 daddiu $t0, $t0, %lo(%neg(%gp_rel(\name))) ld $t9, %got_disp(\not_found)($t0) jr $t9 .type \name, %function .size \name, .-\name .endm .macro generate_lookup_super name lookup \name: move $t0, $a0 ld $a0, 0($a0) beqz $a0, 0f ld $t0, 8($t0) ld $t0, 64($t0) daddiu $t9, $t9, \lookup-\name b .Lmain_\lookup 0: lui $v0, %hi(%neg(%gp_rel(\name))) daddu $v0, $v0, $t9 daddiu $v0, $v0, %lo(%neg(%gp_rel(\name))) ld $v0, %got_disp(nil_method)($v0) jr $ra .type \name, %function .size \name, .-\name .endm generate_lookup objc_msg_lookup objc_method_not_found generate_lookup objc_msg_lookup_stret objc_method_not_found_stret generate_lookup_super objc_msg_lookup_super objc_msg_lookup generate_lookup_super objc_msg_lookup_super_stret objc_msg_lookup_stret nil_method: move $v0, $zero jr $ra #ifdef OF_LINUX .section .note.GNU-stack, "", %progbits #endif |
Added src/runtime/lookup-asm/lookup-asm-powerpc-elf.S version [c3ef31f515].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | /* * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 * Jonathan Schleifer <js@heap.zone> * * All rights reserved. * * This file is part of ObjFW. It may be distributed under the terms of the * Q Public License 1.0, which can be found in the file LICENSE.QPL included in * the packaging of this file. * * Alternatively, it may be distributed under the terms of the GNU General * Public License, either version 2 or 3, which can be found in the file * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this * file. */ #include "config.h" #include "platform.h" .globl objc_msg_lookup .globl objc_msg_lookup_stret .globl objc_msg_lookup_super .globl objc_msg_lookup_super_stret .section .text .macro generate_lookup name not_found \name: cmpwi %r3, 0 beq- ret_nil lwz %r5, 0(%r3) lwz %r5, 32(%r5) .Lmain_\name: lwz %r8, 0(%r4) #ifdef OF_SELUID24 rlwinm %r6, %r8, 18, 0x3FC #endif rlwinm %r7, %r8, 26, 0x3FC rlwinm %r8, %r8, 2, 0x3FC #ifdef OF_SELUID24 lwzx %r5, %r5, %r6 #endif lwzx %r5, %r5, %r7 lwzx %r5, %r5, %r8 cmpwi %r5, 0 beq- 0f mr %r3, %r5 blr 0: b \not_found@plt .type \name, @function .size \name, .-\name .endm .macro generate_lookup_super name lookup \name: mr %r5, %r3 lwz %r3, 0(%r3) cmpwi %r3, 0 beq- ret_nil lwz %r5, 4(%r5) lwz %r5, 32(%r5) b .Lmain_\lookup .type \name, @function .size \name, .-\name .endm generate_lookup objc_msg_lookup objc_method_not_found generate_lookup objc_msg_lookup_stret objc_method_not_found_stret generate_lookup_super objc_msg_lookup_super objc_msg_lookup generate_lookup_super objc_msg_lookup_super_stret objc_msg_lookup_stret ret_nil: mflr %r0 bl get_pc mtlr %r0 0: addi %r3, %r3, nil_method-0b blr nil_method: li %r3, 0 blr get_pc: mflr %r3 blr #ifdef OF_LINUX .section .note.GNU-stack, "", @progbits #endif |
Added src/runtime/lookup-asm/lookup-asm-powerpc-macho.S version [3611eb219c].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | /* * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 * Jonathan Schleifer <js@heap.zone> * * All rights reserved. * * This file is part of ObjFW. It may be distributed under the terms of the * Q Public License 1.0, which can be found in the file LICENSE.QPL included in * the packaging of this file. * * Alternatively, it may be distributed under the terms of the GNU General * Public License, either version 2 or 3, which can be found in the file * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this * file. */ #include "config.h" .globl _objc_msg_lookup .globl _objc_msg_lookup_stret .globl _objc_msg_lookup_super .globl _objc_msg_lookup_super_stret .section __TEXT, __text, regular, pure_instructions .macro generate_lookup $0: cmpwi r3, 0 beq- ret_nil lwz r5, 0(r3) lwz r5, 32(r5) Lmain_$0: lwz r8, 0(r4) #ifdef OF_SELUID24 rlwinm r6, r8, 18, 0x3FC #endif rlwinm r7, r8, 26, 0x3FC rlwinm r8, r8, 2, 0x3FC #ifdef OF_SELUID24 lwzx r5, r5, r6 #endif lwzx r5, r5, r7 lwzx r5, r5, r8 cmpwi r5, 0 beq- 0f mr r3, r5 blr 0: b $1 .endmacro .macro generate_lookup_super $0: mr r5, r3 lwz r3, 0(r3) cmpwi r3, 0 beq- ret_nil lwz r5, 4(r5) lwz r5, 32(r5) b Lmain_$1 .endmacro generate_lookup _objc_msg_lookup, _objc_method_not_found generate_lookup _objc_msg_lookup_stret, _objc_method_not_found_stret generate_lookup_super _objc_msg_lookup_super, _objc_msg_lookup generate_lookup_super _objc_msg_lookup_super_stret, _objc_msg_lookup_stret ret_nil: mflr r0 bl get_pc mtlr r0 0: addi r3, r3, lo16(nil_method-0b) blr nil_method: li r3, 0 blr get_pc: mflr r3 blr |
Deleted src/runtime/lookup-asm/lookup-asm-ppc-elf.S version [c3ef31f515].
|
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |
Deleted src/runtime/lookup-asm/lookup-asm-ppc-macho.S version [3611eb219c].
|
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |
Modified src/runtime/lookup-asm/lookup-asm.S from [6f76c17688] to [f4478b9e09].
︙ | ︙ | |||
24 25 26 27 28 29 30 | # elif defined(OF_X86) # include "lookup-asm-x86-elf.S" # elif defined(OF_ARM64) # include "lookup-asm-arm64-elf.S" # elif defined(OF_ARM) # include "lookup-asm-arm-elf.S" # elif defined(OF_POWERPC) | | | | | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | # elif defined(OF_X86) # include "lookup-asm-x86-elf.S" # elif defined(OF_ARM64) # include "lookup-asm-arm64-elf.S" # elif defined(OF_ARM) # include "lookup-asm-arm-elf.S" # elif defined(OF_POWERPC) # include "lookup-asm-powerpc-elf.S" # elif defined(OF_MIPS64_N64) # include "lookup-asm-mips64-n64-elf.S" # elif defined(OF_MIPS) # include "lookup-asm-mips-elf.S" # elif defined(OF_SPARC64) # include "lookup-asm-sparc64-elf.S" # elif defined(OF_SPARC) # include "lookup-asm-sparc-elf.S" # endif #elif defined(OF_MACH_O) # if defined(OF_X86_64) # include "lookup-asm-x86_64-macho.S" # elif defined(OF_POWERPC) # include "lookup-asm-powerpc-macho.S" # endif #elif defined(OF_WINDOWS) # if defined(OF_X86_64) # include "lookup-asm-x86_64-win64.S" # elif defined(OF_X86) # include "lookup-asm-x86-win32.S" # endif #endif |