Overview
Comment: | Add ARM/ELF assembly lookup implementation. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
714c6029ceffd14d121322768f54bc06 |
User & Date: | js on 2012-07-20 18:43:35 |
Other Links: | manifest | tags |
Context
2012-07-20
| ||
23:46 | Fix the ARM architecture detection mess. check-in: 7e7d14b815 user: js tags: trunk | |
18:43 | Add ARM/ELF assembly lookup implementation. check-in: 714c6029ce user: js tags: trunk | |
17:17 | Add iOS to PLATFORMS.md. check-in: ab92512d10 user: js tags: trunk | |
Changes
Modified configure.ac from [f68f9de071] to [aa58ef1743].
︙ | ︙ | |||
269 270 271 272 273 274 275 276 277 278 279 280 281 282 | #if defined(__ppc__) || defined(__PPC__) # ifdef __ELF__ yes # endif #endif ], [ AC_SUBST(LOOKUP_S, lookup-ppc-elf.S) AC_DEFINE(OF_ASM_LOOKUP, 1, [Whether to use assembly for lookup]) ]) AS_IF([test x"$enable_seluid16" = x"yes"], [ AC_DEFINE(OF_SELUID16, 1, [Whether to use 16 bit selector UIDs]) | > > > > > > > > > > > > | 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 | #if defined(__ppc__) || defined(__PPC__) # ifdef __ELF__ yes # endif #endif ], [ AC_SUBST(LOOKUP_S, lookup-ppc-elf.S) AC_DEFINE(OF_ASM_LOOKUP, 1, [Whether to use assembly for lookup]) ]) AC_EGREP_CPP(yes, [ #if defined(__arm__) || defined(__ARM__) # ifdef __ELF__ yes # endif #endif ], [ AC_SUBST(LOOKUP_S, lookup-arm-elf.S) AC_DEFINE(OF_ASM_LOOKUP, 1, [Whether to use assembly for lookup]) ]) AS_IF([test x"$enable_seluid16" = x"yes"], [ AC_DEFINE(OF_SELUID16, 1, [Whether to use 16 bit selector UIDs]) |
︙ | ︙ |
Added src/runtime/lookup-arm-elf.S version [4dc54acce5].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | /* * Copyright (c) 2008, 2009, 2010, 2011, 2012 * Jonathan Schleifer <js@webkeks.org> * * 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_super .section .text objc_msg_lookup: cmp r0, #0 beq ret_nil ldr r2, [r0, #0] ldr r2, [r2, #32] lookup: #ifndef OF_SELUID16 ldrb r3, [r1, #2] ldr r2, [r2, r3, lsl #2] #endif ldrb r3, [r1, #1] ldr r2, [r2, r3, lsl #2] ldrb r3, [r1, #0] ldr r2, [r2, r3, lsl #2] cmp r2, #0 beq objc_not_found_handler(PLT) mov r0, r2 bx lr objc_msg_lookup_super: ldr r2, [r0, #0] cmp r0, #0 beq ret_nil ldr r2, [r0, #4] ldr r2, [r2, #32] b lookup ret_nil: adr r0, nil_method bx lr nil_method: mov r0, #0 bx lr .type objc_msg_lookup, %function .type objc_msg_lookup_super, %function .size objc_msg_lookup, objc_msg_lookup_super-objc_msg_lookup .size objc_msg_lookup_super, ret_nil-objc_msg_lookup_super |