Changeset 1433ecda in mainline for uspace/lib/c/arch
- Timestamp:
- 2018-04-04T15:42:37Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 2c4e1cc
- Parents:
- 47b2d7e3
- Location:
- uspace/lib/c/arch
- Files:
-
- 25 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/arch/abs32le/include/libarch/elf_linux.h
r47b2d7e3 r1433ecda 43 43 static inline void istate_to_elf_regs(istate_t *istate, elf_regs_t *elf_regs) 44 44 { 45 (void) istate; (void) elf_regs; 45 (void) istate; 46 (void) elf_regs; 46 47 } 47 48 -
uspace/lib/c/arch/abs32le/src/entryjmp.c
r47b2d7e3 r1433ecda 36 36 void entry_point_jmp(void *entry_point, void *pcb) 37 37 { 38 while (true); 38 while (true) 39 ; 39 40 } 40 41 -
uspace/lib/c/arch/abs32le/src/fibril.c
r47b2d7e3 r1433ecda 40 40 void __longjmp(context_t *ctx, int val) 41 41 { 42 while (true); 42 while (true) 43 ; 43 44 } 44 45 -
uspace/lib/c/arch/abs32le/src/tls.c
r47b2d7e3 r1433ecda 34 34 #include <stdint.h> 35 35 36 tcb_t * 36 tcb_t *tls_alloc_arch(void **data, size_t size) 37 37 { 38 38 return tls_alloc_variant_2(data, size); -
uspace/lib/c/arch/amd64/include/libarch/atomic.h
r47b2d7e3 r1433ecda 46 46 #ifdef __PCC__ 47 47 asm volatile ( 48 49 48 "lock incq %0\n" 49 : "+m" (val->count) 50 50 ); 51 51 #else 52 52 asm volatile ( 53 54 53 "lock incq %[count]\n" 54 : [count] "+m" (val->count) 55 55 ); 56 56 #endif … … 61 61 #ifdef __PCC__ 62 62 asm volatile ( 63 64 63 "lock decq %0\n" 64 : "+m" (val->count) 65 65 ); 66 66 #else 67 67 asm volatile ( 68 69 68 "lock decq %[count]\n" 69 : [count] "+m" (val->count) 70 70 ); 71 71 #endif … … 78 78 #ifdef __PCC__ 79 79 asm volatile ( 80 81 82 80 "lock xaddq %1, %0\n" 81 : "+m" (val->count), 82 "+r" (r) 83 83 ); 84 84 #else 85 85 asm volatile ( 86 87 88 86 "lock xaddq %[r], %[count]\n" 87 : [count] "+m" (val->count), 88 [r] "+r" (r) 89 89 ); 90 90 #endif … … 99 99 #ifdef __PCC__ 100 100 asm volatile ( 101 102 103 101 "lock xaddq %1, %0\n" 102 : "+m" (val->count), 103 "+r" (r) 104 104 ); 105 105 #else 106 106 asm volatile ( 107 108 109 107 "lock xaddq %[r], %[count]\n" 108 : [count] "+m" (val->count), 109 [r] "+r" (r) 110 110 ); 111 111 #endif -
uspace/lib/c/arch/arm32/include/libarch/atomic.h
r47b2d7e3 r1433ecda 56 56 */ 57 57 asm volatile ( 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 58 "1:\n" 59 " adr %[ret], 1b\n" 60 " str %[ret], %[rp0]\n" 61 " adr %[ret], 2f\n" 62 " str %[ret], %[rp1]\n" 63 " ldr %[ret], %[addr]\n" 64 " cmp %[ret], %[ov]\n" 65 " streq %[nv], %[addr]\n" 66 "2:\n" 67 " moveq %[ret], #1\n" 68 " movne %[ret], #0\n" 69 : [ret] "+&r" (ret), 70 [rp0] "=m" (ras_page[0]), 71 [rp1] "=m" (ras_page[1]), 72 [addr] "+m" (val->count) 73 : [ov] "r" (ov), 74 [nv] "r" (nv) 75 : "memory" 76 76 ); 77 77 78 78 ras_page[0] = 0; 79 79 asm volatile ( 80 80 "" ::: "memory" 81 81 ); 82 82 ras_page[1] = 0xffffffff; … … 103 103 */ 104 104 asm volatile ( 105 106 107 108 109 110 111 112 113 114 115 116 117 118 105 "1:\n" 106 " adr %[ret], 1b\n" 107 " str %[ret], %[rp0]\n" 108 " adr %[ret], 2f\n" 109 " str %[ret], %[rp1]\n" 110 " ldr %[ret], %[addr]\n" 111 " add %[ret], %[ret], %[imm]\n" 112 " str %[ret], %[addr]\n" 113 "2:\n" 114 : [ret] "+&r" (ret), 115 [rp0] "=m" (ras_page[0]), 116 [rp1] "=m" (ras_page[1]), 117 [addr] "+m" (val->count) 118 : [imm] "r" (i) 119 119 ); 120 120 121 121 ras_page[0] = 0; 122 122 asm volatile ( 123 123 "" ::: "memory" 124 124 ); 125 125 ras_page[1] = 0xffffffff; -
uspace/lib/c/arch/arm32/src/syscall.c
r47b2d7e3 r1433ecda 62 62 63 63 asm volatile ( 64 65 66 67 68 69 70 71 72 64 "swi 0" 65 : "=r" (__arm_reg_r0) 66 : "r" (__arm_reg_r0), 67 "r" (__arm_reg_r1), 68 "r" (__arm_reg_r2), 69 "r" (__arm_reg_r3), 70 "r" (__arm_reg_r4), 71 "r" (__arm_reg_r5), 72 "r" (__arm_reg_r6) 73 73 ); 74 74 -
uspace/lib/c/arch/ia32/include/libarch/atomic.h
r47b2d7e3 r1433ecda 44 44 #ifdef __PCC__ 45 45 asm volatile ( 46 47 46 "lock incl %0\n" 47 : "+m" (val->count) 48 48 ); 49 49 #else 50 50 asm volatile ( 51 52 51 "lock incl %[count]\n" 52 : [count] "+m" (val->count) 53 53 ); 54 54 #endif … … 59 59 #ifdef __PCC__ 60 60 asm volatile ( 61 62 61 "lock decl %0\n" 62 : "+m" (val->count) 63 63 ); 64 64 #else 65 65 asm volatile ( 66 67 66 "lock decl %[count]\n" 67 : [count] "+m" (val->count) 68 68 ); 69 69 #endif … … 76 76 #ifdef __PCC__ 77 77 asm volatile ( 78 79 80 78 "lock xaddl %1, %0\n" 79 : "+m" (val->count), 80 "+r" (r) 81 81 ); 82 82 #else 83 83 asm volatile ( 84 85 86 84 "lock xaddl %[r], %[count]\n" 85 : [count] "+m" (val->count), 86 [r] "+r" (r) 87 87 ); 88 88 #endif … … 97 97 #ifdef __PCC__ 98 98 asm volatile ( 99 100 101 99 "lock xaddl %1, %0\n" 100 : "+m" (val->count), 101 "+r" (r) 102 102 ); 103 103 #else 104 104 asm volatile ( 105 106 107 105 "lock xaddl %[r], %[count]\n" 106 : [count] "+m" (val->count), 107 [r] "+r" (r) 108 108 ); 109 109 #endif -
uspace/lib/c/arch/ia32/include/libarch/ddi.h
r47b2d7e3 r1433ecda 44 44 45 45 asm volatile ( 46 47 48 46 "inb %w[port], %b[val]\n" 47 : [val] "=a" (val) 48 : [port] "d" (port) 49 49 ); 50 50 … … 60 60 61 61 asm volatile ( 62 63 64 62 "inw %w[port], %w[val]\n" 63 : [val] "=a" (val) 64 : [port] "d" (port) 65 65 ); 66 66 … … 76 76 77 77 asm volatile ( 78 79 80 78 "inl %w[port], %[val]\n" 79 : [val] "=a" (val) 80 : [port] "d" (port) 81 81 ); 82 82 … … 95 95 if (port < (ioport8_t *) IO_SPACE_BOUNDARY) { 96 96 asm volatile ( 97 98 97 "outb %b[val], %w[port]\n" 98 :: [val] "a" (val), [port] "d" (port) 99 99 ); 100 100 } else … … 106 106 if (port < (ioport16_t *) IO_SPACE_BOUNDARY) { 107 107 asm volatile ( 108 109 108 "outw %w[val], %w[port]\n" 109 :: [val] "a" (val), [port] "d" (port) 110 110 ); 111 111 } else … … 117 117 if (port < (ioport32_t *) IO_SPACE_BOUNDARY) { 118 118 asm volatile ( 119 120 119 "outl %[val], %w[port]\n" 120 :: [val] "a" (val), [port] "d" (port) 121 121 ); 122 122 } else -
uspace/lib/c/arch/ia32/src/rtld/reloc.c
r47b2d7e3 r1433ecda 207 207 { 208 208 /* Unused */ 209 (void)m; (void)rt; (void)rt_size; 209 (void)m; 210 (void)rt; 211 (void)rt_size; 210 212 } 211 213 -
uspace/lib/c/arch/ia32/src/tls.c
r47b2d7e3 r1433ecda 64 64 } tls_index; 65 65 66 void __attribute__ ((__regparm__(1)))66 void __attribute__((__regparm__(1))) 67 67 *___tls_get_addr(tls_index *ti); 68 68 69 void __attribute__ ((__regparm__(1)))69 void __attribute__((__regparm__(1))) 70 70 *___tls_get_addr(tls_index *ti) 71 71 { -
uspace/lib/c/arch/ia64/include/libarch/atomic.h
r47b2d7e3 r1433ecda 45 45 46 46 asm volatile ( 47 48 49 47 "fetchadd8.rel %[v] = %[count], 1\n" 48 : [v] "=r" (v), 49 [count] "+m" (val->count) 50 50 ); 51 51 } … … 56 56 57 57 asm volatile ( 58 59 60 58 "fetchadd8.rel %[v] = %[count], -1\n" 59 : [v] "=r" (v), 60 [count] "+m" (val->count) 61 61 ); 62 62 } … … 67 67 68 68 asm volatile ( 69 70 71 69 "fetchadd8.rel %[v] = %[count], 1\n" 70 : [v] "=r" (v), 71 [count] "+m" (val->count) 72 72 ); 73 73 … … 80 80 81 81 asm volatile ( 82 83 84 82 "fetchadd8.rel %[v] = %[count], -1\n" 83 : [v] "=r" (v), 84 [count] "+m" (val->count) 85 85 ); 86 86 … … 93 93 94 94 asm volatile ( 95 96 97 95 "fetchadd8.rel %[v] = %[count], 1\n" 96 : [v] "=r" (v), 97 [count] "+m" (val->count) 98 98 ); 99 99 … … 106 106 107 107 asm volatile ( 108 109 110 108 "fetchadd8.rel %[v] = %[count], -1\n" 109 : [v] "=r" (v), 110 [count] "+m" (val->count) 111 111 ); 112 112 -
uspace/lib/c/arch/ia64/src/stacktrace.c
r47b2d7e3 r1433ecda 43 43 bool stacktrace_fp_valid(stacktrace_t *st, uintptr_t fp) 44 44 { 45 (void) st; (void) fp; 45 (void) st; 46 (void) fp; 46 47 return false; 47 48 } … … 49 50 errno_t stacktrace_fp_prev(stacktrace_t *st, uintptr_t fp, uintptr_t *prev) 50 51 { 51 (void) st; (void) fp; (void) prev; 52 (void) st; 53 (void) fp; 54 (void) prev; 52 55 return ENOTSUP; 53 56 } … … 55 58 errno_t stacktrace_ra_get(stacktrace_t *st, uintptr_t fp, uintptr_t *ra) 56 59 { 57 (void) st; (void) fp; (void) ra; 60 (void) st; 61 (void) fp; 62 (void) ra; 58 63 return ENOTSUP; 59 64 } -
uspace/lib/c/arch/mips32/include/libarch/atomic.h
r47b2d7e3 r1433ecda 64 64 65 65 asm volatile ( 66 67 68 69 70 71 72 73 74 75 76 77 66 "1:\n" 67 " ll %0, %1\n" 68 " addu %0, %0, %3\n" /* same as add, but never traps on overflow */ 69 " move %2, %0\n" 70 " sc %0, %1\n" 71 " beq %0, %4, 1b\n" /* if the atomic operation failed, try again */ 72 " nop\n" 73 : "=&r" (tmp), 74 "+m" (val->count), 75 "=&r" (v) 76 : "r" (i), 77 "i" (0) 78 78 ); 79 79 -
uspace/lib/c/arch/mips32/src/stacktrace.c
r47b2d7e3 r1433ecda 43 43 bool stacktrace_fp_valid(stacktrace_t *st, uintptr_t fp) 44 44 { 45 (void) st; (void) fp; 45 (void) st; 46 (void) fp; 46 47 return false; 47 48 } … … 49 50 errno_t stacktrace_fp_prev(stacktrace_t *st, uintptr_t fp, uintptr_t *prev) 50 51 { 51 (void) st; (void) fp; (void) prev; 52 (void) st; 53 (void) fp; 54 (void) prev; 52 55 return ENOTSUP; 53 56 } … … 55 58 errno_t stacktrace_ra_get(stacktrace_t *st, uintptr_t fp, uintptr_t *ra) 56 59 { 57 (void) st; (void) fp; (void) ra; 60 (void) st; 61 (void) fp; 62 (void) ra; 58 63 return ENOTSUP; 59 64 } -
uspace/lib/c/arch/mips32/src/syscall.c
r47b2d7e3 r1433ecda 48 48 49 49 asm volatile ( 50 51 52 53 54 55 56 57 58 50 "syscall\n" 51 : "=r" (__mips_reg_v0) 52 : "r" (__mips_reg_a0), 53 "r" (__mips_reg_a1), 54 "r" (__mips_reg_a2), 55 "r" (__mips_reg_a3), 56 "r" (__mips_reg_t0), 57 "r" (__mips_reg_t1), 58 "r" (__mips_reg_v0) 59 59 /* 60 60 * We are a function call, although C 61 61 * does not know it. 62 62 */ 63 63 : "%ra" 64 64 ); 65 65 -
uspace/lib/c/arch/mips32/src/tls.c
r47b2d7e3 r1433ecda 37 37 #include <stddef.h> 38 38 39 tcb_t * 39 tcb_t *tls_alloc_arch(void **data, size_t size) 40 40 { 41 41 return tls_alloc_variant_1(data, size); -
uspace/lib/c/arch/ppc32/include/libarch/atomic.h
r47b2d7e3 r1433ecda 45 45 46 46 asm volatile ( 47 48 49 50 51 52 53 54 55 56 47 "1:\n" 48 "lwarx %0, 0, %2\n" 49 "addic %0, %0, 1\n" 50 "stwcx. %0, 0, %2\n" 51 "bne- 1b" 52 : "=&r" (tmp), 53 "=m" (val->count) 54 : "r" (&val->count), 55 "m" (val->count) 56 : "cc" 57 57 ); 58 58 } … … 63 63 64 64 asm volatile ( 65 66 67 68 69 70 71 72 73 74 65 "1:\n" 66 "lwarx %0, 0, %2\n" 67 "addic %0, %0, -1\n" 68 "stwcx. %0, 0, %2\n" 69 "bne- 1b" 70 : "=&r" (tmp), 71 "=m" (val->count) 72 : "r" (&val->count), 73 "m" (val->count) 74 : "cc" 75 75 ); 76 76 } -
uspace/lib/c/arch/ppc32/include/libarch/tls.h
r47b2d7e3 r1433ecda 50 50 51 51 asm volatile ( 52 53 54 52 "mr %%r2, %0\n" 53 : 54 : "r" (tp) 55 55 ); 56 56 } 57 57 58 static inline tcb_t * 58 static inline tcb_t *__tcb_get(void) 59 59 { 60 void * 60 void *retval; 61 61 62 62 asm volatile ( 63 64 63 "mr %0, %%r2\n" 64 : "=r" (retval) 65 65 ); 66 66 -
uspace/lib/c/arch/ppc32/src/syscall.c
r47b2d7e3 r1433ecda 49 49 50 50 asm volatile ( 51 52 53 54 55 56 57 58 59 51 "sc\n" 52 : "=r" (__ppc32_reg_r3) 53 : "r" (__ppc32_reg_r3), 54 "r" (__ppc32_reg_r4), 55 "r" (__ppc32_reg_r5), 56 "r" (__ppc32_reg_r6), 57 "r" (__ppc32_reg_r7), 58 "r" (__ppc32_reg_r8), 59 "r" (__ppc32_reg_r9) 60 60 ); 61 61 -
uspace/lib/c/arch/riscv64/src/entryjmp.c
r47b2d7e3 r1433ecda 36 36 void entry_point_jmp(void *entry_point, void *pcb) 37 37 { 38 while (true); 38 while (true) 39 ; 39 40 } 40 41 -
uspace/lib/c/arch/riscv64/src/fibril.c
r47b2d7e3 r1433ecda 40 40 void __longjmp(context_t *ctx, int ret) 41 41 { 42 while (true); 42 while (true) 43 ; 43 44 } 44 45 -
uspace/lib/c/arch/sparc64/include/libarch/atomic.h
r47b2d7e3 r1433ecda 63 63 64 64 asm volatile ( 65 66 67 68 65 "casx %0, %2, %1\n" 66 : "+m" (*((atomic_count_t *) ptr)), 67 "+r" (b) 68 : "r" (a) 69 69 ); 70 70 } while (a != b); -
uspace/lib/c/arch/sparc64/include/libarch/ddi.h
r47b2d7e3 r1433ecda 39 39 { 40 40 asm volatile ( 41 42 41 "membar #LoadLoad | #StoreStore\n" 42 ::: "memory" 43 43 ); 44 44 } -
uspace/lib/c/arch/sparc64/include/libarch/elf_linux.h
r47b2d7e3 r1433ecda 47 47 { 48 48 /* TODO */ 49 (void) istate; (void) elf_regs; 49 (void) istate; 50 (void) elf_regs; 50 51 } 51 52
Note:
See TracChangeset
for help on using the changeset viewer.