Changeset 04803bf in mainline for uspace/lib/c/arch/ia32/include
- Timestamp:
- 2011-03-21T22:00:17Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 143932e3
- Parents:
- b50b5af2 (diff), 7308e84 (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/ia32/include
- Files:
-
- 2 added
- 11 moved
-
atomic.h (moved) (moved from uspace/lib/libc/arch/ia32/include/atomic.h ) (2 diffs)
-
config.h (moved) (moved from uspace/lib/libc/arch/ia32/include/config.h )
-
ddi.h (moved) (moved from uspace/lib/libc/arch/ia32/include/ddi.h )
-
faddr.h (moved) (moved from uspace/lib/libc/arch/ia32/include/faddr.h )
-
fibril.h (moved) (moved from uspace/lib/libc/arch/ia32/include/fibril.h ) (2 diffs)
-
inttypes.h (added)
-
istate.h (added)
-
limits.h (moved) (moved from uspace/lib/libc/arch/ia32/include/limits.h )
-
stackarg.h (moved) (moved from uspace/lib/libc/arch/ia32/include/stackarg.h )
-
syscall.h (moved) (moved from uspace/lib/libc/arch/ia32/include/syscall.h ) (1 diff)
-
thread.h (moved) (moved from uspace/lib/libc/arch/ia32/include/thread.h )
-
tls.h (moved) (moved from uspace/lib/libc/arch/ia32/include/tls.h ) (1 diff)
-
types.h (moved) (moved from uspace/lib/libc/arch/ia32/include/types.h ) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/arch/ia32/include/atomic.h
rb50b5af2 r04803bf 36 36 #define LIBC_ia32_ATOMIC_H_ 37 37 38 static inline void atomic_inc(atomic_t *val) { 39 asm volatile ("lock incl %0\n" : "+m" (val->count)); 38 #define LIBC_ARCH_ATOMIC_H_ 39 40 #include <atomicdflt.h> 41 42 static inline void atomic_inc(atomic_t *val) 43 { 44 asm volatile ( 45 "lock incl %[count]\n" 46 : [count] "+m" (val->count) 47 ); 40 48 } 41 49 42 static inline void atomic_dec(atomic_t *val) { 43 asm volatile ("lock decl %0\n" : "+m" (val->count)); 50 static inline void atomic_dec(atomic_t *val) 51 { 52 asm volatile ( 53 "lock decl %[count]\n" 54 : [count] "+m" (val->count) 55 ); 44 56 } 45 57 46 static inline long atomic_postinc(atomic_t *val)58 static inline atomic_count_t atomic_postinc(atomic_t *val) 47 59 { 48 long r; 49 50 asm volatile ( 51 "movl $1, %0\n" 52 "lock xaddl %0, %1\n" 53 : "=r" (r), "+m" (val->count) 54 ); 55 56 return r; 57 } 58 59 static inline long atomic_postdec(atomic_t *val) 60 { 61 long r; 60 atomic_count_t r = 1; 62 61 63 62 asm volatile ( 64 " movl $-1, %0\n"65 "lock xaddl %0, %1\n"66 : "=r" (r), "+m" (val->count)63 "lock xaddl %[r], %[count]\n" 64 : [count] "+m" (val->count), 65 [r] "+r" (r) 67 66 ); 68 67 … … 70 69 } 71 70 72 #define atomic_preinc(val) (atomic_postinc(val) + 1) 73 #define atomic_predec(val) (atomic_postdec(val) - 1) 71 static inline atomic_count_t atomic_postdec(atomic_t *val) 72 { 73 atomic_count_t r = -1; 74 75 asm volatile ( 76 "lock xaddl %[r], %[count]\n" 77 : [count] "+m" (val->count), 78 [r] "+r" (r) 79 ); 80 81 return r; 82 } 83 84 #define atomic_preinc(val) (atomic_postinc(val) + 1) 85 #define atomic_predec(val) (atomic_postdec(val) - 1) 74 86 75 87 #endif -
uspace/lib/c/arch/ia32/include/fibril.h
rb50b5af2 r04803bf 44 44 #define SP_DELTA (12) 45 45 46 #define context_set(c, _pc, stack, size, ptls) \ 47 do { \ 48 (c)->pc = (sysarg_t) (_pc); \ 49 (c)->sp = ((sysarg_t) (stack)) + (size) - SP_DELTA; \ 50 (c)->tls = (sysarg_t) (ptls); \ 51 (c)->ebp = 0; \ 52 } while (0) 53 46 54 /* We include only registers that must be preserved 47 55 * during function call … … 59 67 } context_t; 60 68 69 static inline uintptr_t context_get_fp(context_t *ctx) 70 { 71 return ctx->ebp; 72 } 73 61 74 #endif 62 75 -
uspace/lib/c/arch/ia32/include/syscall.h
rb50b5af2 r04803bf 40 40 #include <kernel/syscall/syscall.h> 41 41 42 #define __syscall0 __syscall_sysenter43 #define __syscall1 __syscall_sysenter44 #define __syscall2 __syscall_sysenter45 #define __syscall3 __syscall_sysenter46 #define __syscall4 __syscall_sysenter47 #define __syscall5 __syscall_int48 #define __syscall6 __syscall_int42 #define __syscall0 __syscall_fast_func 43 #define __syscall1 __syscall_fast_func 44 #define __syscall2 __syscall_fast_func 45 #define __syscall3 __syscall_fast_func 46 #define __syscall4 __syscall_fast_func 47 #define __syscall5 __syscall_slow 48 #define __syscall6 __syscall_slow 49 49 50 extern sysarg_t 51 __syscall_sysenter(const sysarg_t, const sysarg_t, const sysarg_t, const sysarg_t,52 const sysarg_t, const sysarg_t,const syscall_t);50 extern sysarg_t (* __syscall_fast_func)(const sysarg_t, const sysarg_t, 51 const sysarg_t, const sysarg_t, const sysarg_t, const sysarg_t, 52 const syscall_t); 53 53 54 extern sysarg_t 55 __syscall_int(const sysarg_t, const sysarg_t, const sysarg_t, const sysarg_t, 56 const sysarg_t, const sysarg_t, const syscall_t); 54 extern sysarg_t __syscall_slow(const sysarg_t, const sysarg_t, const sysarg_t, 55 const sysarg_t, const sysarg_t, const sysarg_t, const syscall_t); 57 56 58 57 #endif -
uspace/lib/c/arch/ia32/include/tls.h
rb50b5af2 r04803bf 53 53 { 54 54 void *retval; 55 56 asm ("movl %%gs:0, %0" : "=r"(retval)); 55 56 asm ( 57 "movl %%gs:0, %0" 58 : "=r" (retval) 59 ); 60 57 61 return retval; 58 62 } -
uspace/lib/c/arch/ia32/include/types.h
rb50b5af2 r04803bf 36 36 #define LIBC_ia32_TYPES_H_ 37 37 38 typedef unsigned int sysarg_t; 38 #define __32_BITS__ 39 39 40 typedef char int8_t; 41 typedef short int int16_t; 42 typedef int int32_t; 43 typedef long long int int64_t; 40 #include <libarch/common.h> 44 41 45 typedef unsigned char uint8_t; 46 typedef unsigned short int uint16_t; 47 typedef unsigned int uint32_t; 48 typedef unsigned long long int uint64_t; 42 #define SIZE_MIN UINT32_MIN 43 #define SIZE_MAX UINT32_MAX 44 45 #define SSIZE_MIN INT32_MIN 46 #define SSIZE_MAX INT32_MAX 47 48 typedef uint32_t sysarg_t; 49 49 50 50 typedef int32_t ssize_t; … … 52 52 53 53 typedef uint32_t uintptr_t; 54 typedef uint32_t atomic_count_t; 55 typedef int32_t atomic_signed_t; 54 56 55 57 #endif
Note:
See TracChangeset
for help on using the changeset viewer.
