Changeset 1df1905 in mainline for uspace/lib/c/arch/sparc32/src
- Timestamp:
- 2013-12-28T17:30:44Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 41b735f3
- Parents:
- c1023bcb
- Location:
- uspace/lib/c/arch/sparc32/src
- Files:
-
- 7 edited
-
entry.s (modified) (1 diff)
-
entryjmp.s (modified) (1 diff)
-
fibril.S (modified) (2 diffs)
-
stacktrace.c (modified) (3 diffs)
-
stacktrace_asm.S (modified) (1 diff)
-
thread_entry.s (modified) (2 diffs)
-
tls.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/arch/sparc32/src/entry.s
rc1023bcb r1df1905 42 42 # Create the first stack frame. 43 43 # 44 44 45 save %sp, -176, %sp 45 # XXX flushw 46 mov 7, %g1 47 1: subcc %g1, 1, %g1 48 bg 1b 49 save %sp, -64, %sp 50 46 ## XXX flushw 51 47 mov 7, %g1 52 1: subcc %g1, 1, %g1 53 bg 1b 54 restore 55 56 # XXX end flush 57 # add %g0, -0x7ff, %fp 48 1: 49 subcc %g1, 1, %g1 50 bg 1b 51 save %sp, -64, %sp 52 53 mov 7, %g1 54 1: 55 subcc %g1, 1, %g1 56 bg 1b 57 restore 58 59 ## XXX end flush 60 ## add %g0, -0x7ff, %fp 58 61 set 0x80000000, %fp 59 62 -
uspace/lib/c/arch/sparc32/src/entryjmp.s
rc1023bcb r1df1905 40 40 call %o0 41 41 nop 42 # fixme: use branch instead of call42 # FIXME: use branch instead of call -
uspace/lib/c/arch/sparc32/src/fibril.S
rc1023bcb r1df1905 40 40 # should a thread switch occur. 41 41 # 42 mov 7, %g1 43 1: subcc %g1, 1, %g1 44 bg 1b 45 save %sp, -64, %sp 46 42 47 43 mov 7, %g1 48 1: subcc %g1, 1, %g1 49 bg 1b 50 restore 51 44 1: 45 subcc %g1, 1, %g1 46 bg 1b 47 save %sp, -64, %sp 48 49 mov 7, %g1 50 1: 51 subcc %g1, 1, %g1 52 bg 1b 53 restore 54 52 55 CONTEXT_SAVE_ARCH_CORE %o0 53 56 retl 54 mov 1, %o0 ! context_save_arch returns 157 mov 1, %o0 ! context_save_arch returns 1 55 58 56 59 context_restore: … … 61 64 # windows mitigates this problem as CWP - 1 becomes the overlap window. 62 65 # 63 # XXX 64 # flushw 65 # ta 0x4f 66 # nop 67 mov 7, %g1 68 1: subcc %g1, 1, %g1 69 bg 1b 70 save %sp, -64, %sp 71 66 67 ## XXX 68 ## flushw 69 ## ta 0x4f 70 ## nop 72 71 mov 7, %g1 73 1: subcc %g1, 1, %g1 74 bg 1b 75 restore 72 1: 73 subcc %g1, 1, %g1 74 bg 1b 75 save %sp, -64, %sp 76 77 mov 7, %g1 78 1: 79 subcc %g1, 1, %g1 80 bg 1b 81 restore 76 82 77 83 CONTEXT_RESTORE_ARCH_CORE %o0 78 84 retl 79 xor %o0, %o0, %o0 ! context_restore_arch returns 085 xor %o0, %o0, %o0 ! context_restore_arch returns 0 -
uspace/lib/c/arch/sparc32/src/stacktrace.c
rc1023bcb r1df1905 39 39 #include <libarch/stack.h> 40 40 #include <errno.h> 41 42 41 #include <stacktrace.h> 43 42 44 #define FRAME_OFFSET_FP_PREV (14 * 4)45 #define FRAME_OFFSET_RA (15 * 4)43 #define FRAME_OFFSET_FP_PREV (14 * 4) 44 #define FRAME_OFFSET_RA (15 * 4) 46 45 47 46 bool stacktrace_fp_valid(stacktrace_t *st, uintptr_t fp) … … 54 53 { 55 54 uintptr_t bprev; 56 int rc; 57 58 rc = (*st->read_uintptr)(st->op_arg, fp + FRAME_OFFSET_FP_PREV, &bprev); 55 int rc = (*st->read_uintptr)(st->op_arg, fp + FRAME_OFFSET_FP_PREV, 56 &bprev); 59 57 if (rc == EOK) 60 58 *prev = bprev; 59 61 60 return rc; 62 61 } … … 64 63 int stacktrace_ra_get(stacktrace_t *st, uintptr_t fp, uintptr_t *ra) 65 64 { 66 return (*st->read_uintptr)(st->op_arg, fp + FRAME_OFFSET_RA, ra);65 return *st->read_uintptr(st->op_arg, fp + FRAME_OFFSET_RA, ra); 67 66 } 68 67 -
uspace/lib/c/arch/sparc32/src/stacktrace_asm.S
rc1023bcb r1df1905 37 37 stacktrace_prepare: 38 38 save %sp, -(STACK_WINDOW_SAVE_AREA_SIZE+STACK_ARG_SAVE_AREA_SIZE), %sp 39 39 40 # Flush all other windows to memory so that we can read their contents. 40 mov 7, %g1 41 1: subcc %g1, 1, %g1 42 bg 1b 43 save %sp, -64, %sp 44 41 45 42 mov 7, %g1 46 1: subcc %g1, 1, %g1 47 bg 1b 48 43 1: 44 subcc %g1, 1, %g1 45 bg 1b 46 save %sp, -64, %sp 47 48 mov 7, %g1 49 1: 50 subcc %g1, 1, %g1 51 bg 1b 52 49 53 ret 50 54 restore -
uspace/lib/c/arch/sparc32/src/thread_entry.s
rc1023bcb r1df1905 28 28 29 29 .text 30 30 31 31 .globl __thread_entry 32 32 … … 38 38 # Create the first stack frame. 39 39 # 40 40 41 save %sp, -176, %sp 41 # XXX flushw 42 mov 7, %g1 43 1: subcc %g1, 1, %g1 44 bg 1b 45 save %sp, -64, %sp 46 42 ## XXX flushw 47 43 mov 7, %g1 48 1: subcc %g1, 1, %g1 49 bg 1b 50 # XXX end flushw 44 1: 45 subcc %g1, 1, %g1 46 bg 1b 47 save %sp, -64, %sp 48 49 mov 7, %g1 50 1: 51 subcc %g1, 1, %g1 52 bg 1b 53 54 ## XXX end flushw 51 55 set 0x80000000, %fp 52 56 53 57 # 54 58 # Propagate the input arguments to the new window. 55 59 # 60 56 61 mov %i0, %o0 57 62 58 63 sethi %hi(_gp), %l7 59 call __thread_main ! %o0 contains address of uarg64 call __thread_main ! %o0 contains address of uarg 60 65 or %l7, %lo(_gp), %l7 61 66 -
uspace/lib/c/arch/sparc32/src/tls.c
rc1023bcb r1df1905 27 27 */ 28 28 29 /** @addtogroup libcsparc 64 sparc6429 /** @addtogroup libcsparc32 sparc32 30 30 * @ingroup lc 31 31 * @{
Note:
See TracChangeset
for help on using the changeset viewer.
