Changeset 8391
- Timestamp:
- Feb 1, 2008, 3:44:38 PM (17 years ago)
- Location:
- branches/ia32/lisp-kernel
- Files:
-
- 4 edited
-
x86-constants32.h (modified) (1 diff)
-
x86-constants32.s (modified) (1 diff)
-
x86-macros.s (modified) (1 diff)
-
x86-spentry32.s (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/ia32/lisp-kernel/x86-constants32.h
r8359 r8391 28 28 #define Iallocptr Itemp0 29 29 #define Ira0 Itemp0 30 #define Inargs I imm030 #define Inargs Itemp1 31 31 #define Ixfn Itemp1 32 32 -
branches/ia32/lisp-kernel/x86-constants32.s
r8382 r8391 45 45 define([allocptr],[temp0]) 46 46 47 define([nargs_b],[imm0_b]) 48 define([nargs_w],[imm0_w]) 49 define([nargs],[imm0]) 47 define([nargs],[temp1]) 50 48 51 49 define([ra0],[temp0]) -
branches/ia32/lisp-kernel/x86-macros.s
r8383 r8391 468 468 define([do_funcall],[ 469 469 new_macro_labels() 470 __(movl %imm0,%temp1) /* preserve nargs */471 470 extract_fulltag(%temp0,%imm0) 472 471 __(cmpb $fulltag_misc,%imm0_b) 473 __(movl %temp1,%imm0)474 472 __(jne macro_label(bad)) 475 473 __(cmpb $subtag_function,misc_subtag_offset(%temp0)) -
branches/ia32/lisp-kernel/x86-spentry32.s
r8350 r8391 942 942 943 943 _spentry(tcallsymslide) 944 __(int $3) 944 __(movl %ebp,%imm0) 945 __(subl %nargs,%imm0) /* new tos */ 946 __(push %imm0) 947 __(push %arg_y) 948 __(push %arg_z) 949 __(push %nargs) 950 __(lea (4-nargregs)*node_size(%esp,%nargs),%arg_y) /* src ptr */ 951 __(movl %ebp,%imm0) /* dst ptr */ 952 __(subl $fixnumone*nargregs,%nargs) 953 __(jmp 1f) 954 0: __(subl $node_size,%arg_y) 955 __(movl (%arg_y),%arg_z) 956 __(subl $node_size,%imm0) 957 __(movl %arg_z,(%imm0)) 958 1: __(subl $fixnumone,%nargs) 959 __(jge 0b) 960 __(pop %nargs) 961 __(pop %arg_z) 962 __(pop %arg_y) 963 __(pop %esp) 964 __(push -node_size(%ebp)) 965 __(movl 0(%ebp),%ebp) 966 __(jump_fname) 945 967 _endsubp(tcallsymslide) 946 968 … … 964 986 _endsubp(tcallnfnvsp) 965 987 988 /* Make a "raw" area on the foreign stack, stack-cons a macptr to point */ 989 /* to it, and return the macptr. Size (in bytes, boxed) is in arg_z */ 990 /* on entry; macptr in arg_z on exit. */ 966 991 _spentry(makestackblock) 967 __(int $3) 992 __(unbox_fixnum(%arg_z,%imm0)) 993 __(dnode_align(%imm0,tsp_frame.fixed_overhead+macptr.size,%imm0)) 994 __(cmpl $tstack_alloc_limit,%imm0) 995 __(jae 1f) 996 __(movd %rcontext:tcr.foreign_sp,%mm0) 997 __(subl %imm0,%rcontext:tcr.foreign_sp) 998 __(movl %rcontext:tcr.foreign_sp,%arg_z) 999 __(movd %mm0,(%arg_z)) 1000 __(lea macptr.size+tsp_frame.fixed_overhead(%arg_z),%imm0) 1001 __(movl $macptr_header,tsp_frame.fixed_overhead(%arg_z)) 1002 __(addl $fulltag_misc+tsp_frame.fixed_overhead,%arg_z) 1003 __(movl %imm0,macptr.address(%arg_z)) 1004 __(movss %fpzero,macptr.domain(%arg_z)) 1005 __(movss %fpzero,macptr.type(%arg_z)) 1006 __(ret) 1007 1: __(movd %rcontext:tcr.foreign_sp,%mm0) 1008 __(subl $dnode_size,%rcontext:tcr.foreign_sp) 1009 __(movl %rcontext:tcr.foreign_sp,%imm0) 1010 __(movd %mm0,(%imm0)) 1011 __(set_nargs(1)) 1012 __(movl $nrs.new_gcable_ptr,%fname) 1013 __(jump_fname()) 968 1014 _endsubp(makestackblock) 969 1015
Note:
See TracChangeset
for help on using the changeset viewer.
