Changeset bc73be3 in mainline for uspace/lib/c/arch/ppc32/src
- Timestamp:
- 2019-06-27T08:51:20Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 8add15e0
- Parents:
- ad40b74b (diff), aeba767 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- uspace/lib/c/arch/ppc32/src
- Files:
-
- 2 added
- 3 edited
- 1 moved
-
crt0.S (moved) (moved from uspace/lib/c/arch/ppc32/src/entry.S )
-
fibril.S (modified) (1 diff)
-
rtld/dynamic.c (added)
-
rtld/reloc.c (added)
-
syscall.c (modified) (1 diff)
-
tls.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/arch/ppc32/src/fibril.S
rad40b74b rbc73be3 33 33 #include <libarch/fibril_context.h> 34 34 35 FUNCTION_BEGIN(__ setjmp)36 stw sp, CONTEXT_OFFSET_SP(r3)37 stw r2, CONTEXT_OFFSET_TLS(r3)38 stw r13, CONTEXT_OFFSET_R13(r3)39 stw r14, CONTEXT_OFFSET_R14(r3)40 stw r15, CONTEXT_OFFSET_R15(r3)41 stw r16, CONTEXT_OFFSET_R16(r3)42 stw r17, CONTEXT_OFFSET_R17(r3)43 stw r18, CONTEXT_OFFSET_R18(r3)44 stw r19, CONTEXT_OFFSET_R19(r3)45 stw r20, CONTEXT_OFFSET_R20(r3)46 stw r21, CONTEXT_OFFSET_R21(r3)47 stw r22, CONTEXT_OFFSET_R22(r3)48 stw r23, CONTEXT_OFFSET_R23(r3)49 stw r24, CONTEXT_OFFSET_R24(r3)50 stw r25, CONTEXT_OFFSET_R25(r3)51 stw r26, CONTEXT_OFFSET_R26(r3)52 stw r27, CONTEXT_OFFSET_R27(r3)53 stw r28, CONTEXT_OFFSET_R28(r3)54 stw r29, CONTEXT_OFFSET_R29(r3)55 stw r30, CONTEXT_OFFSET_R30(r3)56 stw r31, CONTEXT_OFFSET_R31(r3)35 FUNCTION_BEGIN(__context_save) 36 stw sp, __CONTEXT_OFFSET_SP(r3) 37 stw r2, __CONTEXT_OFFSET_TLS(r3) 38 stw r13, __CONTEXT_OFFSET_R13(r3) 39 stw r14, __CONTEXT_OFFSET_R14(r3) 40 stw r15, __CONTEXT_OFFSET_R15(r3) 41 stw r16, __CONTEXT_OFFSET_R16(r3) 42 stw r17, __CONTEXT_OFFSET_R17(r3) 43 stw r18, __CONTEXT_OFFSET_R18(r3) 44 stw r19, __CONTEXT_OFFSET_R19(r3) 45 stw r20, __CONTEXT_OFFSET_R20(r3) 46 stw r21, __CONTEXT_OFFSET_R21(r3) 47 stw r22, __CONTEXT_OFFSET_R22(r3) 48 stw r23, __CONTEXT_OFFSET_R23(r3) 49 stw r24, __CONTEXT_OFFSET_R24(r3) 50 stw r25, __CONTEXT_OFFSET_R25(r3) 51 stw r26, __CONTEXT_OFFSET_R26(r3) 52 stw r27, __CONTEXT_OFFSET_R27(r3) 53 stw r28, __CONTEXT_OFFSET_R28(r3) 54 stw r29, __CONTEXT_OFFSET_R29(r3) 55 stw r30, __CONTEXT_OFFSET_R30(r3) 56 stw r31, __CONTEXT_OFFSET_R31(r3) 57 57 58 58 mflr r4 59 stw r4, CONTEXT_OFFSET_PC(r3)59 stw r4, __CONTEXT_OFFSET_PC(r3) 60 60 61 61 mfcr r4 62 stw r4, CONTEXT_OFFSET_CR(r3)62 stw r4, __CONTEXT_OFFSET_CR(r3) 63 63 64 # __ setjmpreturns 064 # __context_save returns 0 65 65 li r3, 0 66 66 blr 67 FUNCTION_END(__ setjmp)67 FUNCTION_END(__context_save) 68 68 69 FUNCTION_BEGIN(__ longjmp)70 lwz sp, CONTEXT_OFFSET_SP(r3)71 lwz r2, CONTEXT_OFFSET_TLS(r3)72 lwz r13, CONTEXT_OFFSET_R13(r3)73 lwz r14, CONTEXT_OFFSET_R14(r3)74 lwz r15, CONTEXT_OFFSET_R15(r3)75 lwz r16, CONTEXT_OFFSET_R16(r3)76 lwz r17, CONTEXT_OFFSET_R17(r3)77 lwz r18, CONTEXT_OFFSET_R18(r3)78 lwz r19, CONTEXT_OFFSET_R19(r3)79 lwz r20, CONTEXT_OFFSET_R20(r3)80 lwz r21, CONTEXT_OFFSET_R21(r3)81 lwz r22, CONTEXT_OFFSET_R22(r3)82 lwz r23, CONTEXT_OFFSET_R23(r3)83 lwz r24, CONTEXT_OFFSET_R24(r3)84 lwz r25, CONTEXT_OFFSET_R25(r3)85 lwz r26, CONTEXT_OFFSET_R26(r3)86 lwz r27, CONTEXT_OFFSET_R27(r3)87 lwz r28, CONTEXT_OFFSET_R28(r3)88 lwz r29, CONTEXT_OFFSET_R29(r3)89 lwz r30, CONTEXT_OFFSET_R30(r3)90 lwz r31, CONTEXT_OFFSET_R31(r3)69 FUNCTION_BEGIN(__context_restore) 70 lwz sp, __CONTEXT_OFFSET_SP(r3) 71 lwz r2, __CONTEXT_OFFSET_TLS(r3) 72 lwz r13, __CONTEXT_OFFSET_R13(r3) 73 lwz r14, __CONTEXT_OFFSET_R14(r3) 74 lwz r15, __CONTEXT_OFFSET_R15(r3) 75 lwz r16, __CONTEXT_OFFSET_R16(r3) 76 lwz r17, __CONTEXT_OFFSET_R17(r3) 77 lwz r18, __CONTEXT_OFFSET_R18(r3) 78 lwz r19, __CONTEXT_OFFSET_R19(r3) 79 lwz r20, __CONTEXT_OFFSET_R20(r3) 80 lwz r21, __CONTEXT_OFFSET_R21(r3) 81 lwz r22, __CONTEXT_OFFSET_R22(r3) 82 lwz r23, __CONTEXT_OFFSET_R23(r3) 83 lwz r24, __CONTEXT_OFFSET_R24(r3) 84 lwz r25, __CONTEXT_OFFSET_R25(r3) 85 lwz r26, __CONTEXT_OFFSET_R26(r3) 86 lwz r27, __CONTEXT_OFFSET_R27(r3) 87 lwz r28, __CONTEXT_OFFSET_R28(r3) 88 lwz r29, __CONTEXT_OFFSET_R29(r3) 89 lwz r30, __CONTEXT_OFFSET_R30(r3) 90 lwz r31, __CONTEXT_OFFSET_R31(r3) 91 91 92 lwz r5, CONTEXT_OFFSET_CR(r3)92 lwz r5, __CONTEXT_OFFSET_CR(r3) 93 93 mtcr r5 94 94 95 lwz r5, CONTEXT_OFFSET_PC(r3)95 lwz r5, __CONTEXT_OFFSET_PC(r3) 96 96 mtlr r5 97 97 98 # __ longjmpreturns second argument98 # __context_restore returns second argument 99 99 mr r3, r4 100 100 blr 101 FUNCTION_END(__ longjmp)101 FUNCTION_END(__context_restore) -
uspace/lib/c/arch/ppc32/src/syscall.c
rad40b74b rbc73be3 58 58 "r" (__ppc32_reg_r8), 59 59 "r" (__ppc32_reg_r9) 60 : 61 /* 62 * Clobber memory too as some arguments might be 63 * actually pointers. 64 */ 65 "memory" 60 66 ); 61 67 -
uspace/lib/c/arch/ppc32/src/tls.c
rad40b74b rbc73be3 1 1 /* 2 * Copyright (c) 2019 Jiri Svoboda 2 3 * Copyright (c) 2006 Ondrej Palkovsky 3 4 * All rights reserved. … … 36 37 #include <stddef.h> 37 38 39 #ifdef CONFIG_RTLD 40 #include <rtld/rtld.h> 41 #endif 42 38 43 tcb_t *tls_alloc_arch(size_t size, size_t align) 39 44 { … … 46 51 } 47 52 53 /* 54 * Rtld TLS support 55 */ 56 57 typedef struct { 58 unsigned long int ti_module; 59 unsigned long int ti_offset; 60 } tls_index; 61 62 int __tls_debug = 0; 63 64 void *__tls_get_addr(tls_index *ti); 65 66 void *__tls_get_addr(tls_index *ti) 67 { 68 uint8_t *tls; 69 70 #ifdef CONFIG_RTLD 71 if (runtime_env != NULL) { 72 return rtld_tls_get_addr(runtime_env, __tcb_get(), 73 ti->ti_module, ti->ti_offset) + 0x8000; 74 } 75 #endif 76 /* Get address of static TLS block */ 77 tls = tls_get(); 78 return tls + ti->ti_offset + 0x8000; 79 } 80 48 81 /** @} 49 82 */
Note:
See TracChangeset
for help on using the changeset viewer.
