Changeset 9616
- Timestamp:
- May 28, 2008, 2:48:44 PM (17 years ago)
- File:
-
- 1 edited
-
branches/ia32/lisp-kernel/x86-spentry32.s (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/ia32/lisp-kernel/x86-spentry32.s
r9588 r9616 1680 1680 __(cmpl lisp_global(oldspace_dnode_count),%imm0) 1681 1681 __(jae 0b) 1682 __(andl $~(1<<bitmap_shift-1),%temp0) 1683 __(shrl $bitmap_shift-fixnumshift,%temp0) 1684 __(andl $31,%imm0) 1685 __(addl lisp_global(refbits),%temp0) 1682 __(ref_global(refbits,%temp0)) 1686 1683 __(xorb $31,%imm0_b) 1687 1684 __(lock) … … 1702 1699 __(cmpl lisp_global(oldspace_dnode_count),%imm0) 1703 1700 __(jae 0b) 1704 __(andl $~(1<<bitmap_shift-1),%temp0) 1705 __(shrl $bitmap_shift-fixnumshift,%temp0) 1706 __(andl $31,%imm0) 1707 __(addl lisp_global(refbits),%temp0) 1701 __(ref_global(refbits,%temp0)) 1708 1702 __(xorb $31,%imm0_b) 1709 1703 __(lock) … … 1726 1720 __(cmpl lisp_global(oldspace_dnode_count),%imm0) 1727 1721 __(jae 0b) 1728 __(andl $~(1<<bitmap_shift-1),%temp0) 1729 __(shrl $bitmap_shift-fixnumshift,%temp0) 1730 __(andl $31,%imm0) 1731 __(addl lisp_global(refbits),%temp0) 1722 __(ref_global(refbits,%temp0)) 1732 1723 __(xorb $31,%imm0_b) 1733 1724 __(lock) … … 1752 1743 __(cmpl lisp_global(oldspace_dnode_count),%imm0) 1753 1744 __(jae 0b) 1754 __(push %temp0) 1755 __(andl $~(1<<bitmap_shift-1),%temp0) 1756 __(shrl $bitmap_shift-fixnumshift,%temp0) 1757 __(andl $31,%imm0) 1758 __(addl lisp_global(refbits),%temp0) 1745 __(ref_global(refbits,%temp1)) 1759 1746 __(xorb $31,%imm0_b) 1760 1747 __(lock) 1761 __(btsl %imm0,(%temp 0))1748 __(btsl %imm0,(%temp1)) 1762 1749 /* Now memoize the address of the hash vector */ 1763 __( pop%imm0)1750 __(movl %temp0,%imm0) 1764 1751 __(subl lisp_global(heap_start),%imm0) 1765 1752 __(shrl $dnode_shift,%imm0) 1766 __(andl $~(1<<bitmap_shift-1),%temp0)1767 __(shrl $bitmap_shift-fixnumshift,%temp0)1768 __(andl $31,%imm0)1769 __(addl lisp_global(refbits),%temp0)1770 1753 __(xorb $31,%imm0_b) 1771 1754 __(lock) 1772 __(btsl %imm0,(%temp 0))1755 __(btsl %imm0,(%temp1)) 1773 1756 __(ret) 1774 1757 _endsubp(set_hash_key) … … 1799 1782 __(cmpl lisp_global(oldspace_dnode_count),%imm0) 1800 1783 __(jae 2f) 1801 __(andl $~(1<<bitmap_shift-1),%temp0) 1802 __(shrl $bitmap_shift-fixnumshift,%temp0) 1803 __(andl $31,%imm0) 1804 __(addl lisp_global(refbits),%temp0) 1784 __(ref_global(refbits,%temp1)) 1805 1785 __(xorb $31,%imm0_b) 1806 1786 __(lock) 1807 __(btsl %imm0,(%temp 0))1787 __(btsl %imm0,(%temp1)) 1808 1788 .globl C(egc_write_barrier_end) 1809 1789 C(egc_write_barrier_end): … … 3077 3057 _endsubp(getu64) 3078 3058 3059 /* Make unsigned integer from value in mm0 */ 3079 3060 _spentry(makeu64) 3080 __(int $3) 3061 __(movq %mm0,%mm1) 3062 __(psrlq $32,%mm0) 3063 __(movd %mm0,%imm0) 3064 __(test %imm0,%imm0) 3065 __(js 3f) 3066 __(jnz 2f) 3067 __(movd %mm1,%imm0) 3068 __(cmpl $target_most_positive_fixnum,%imm0) 3069 __(ja 1f) 3070 __(box_fixnum(%imm0,%arg_z)) 3071 __(ret) 3072 1: /* maybe make a 1 digit bignum */ 3073 __(test %imm0,%imm0) 3074 __(js 2f) 3075 __(movl $one_digit_bignum_header,%imm0) 3076 __(movd %imm0,%mm0) 3077 __(Misc_Alloc_Fixed(%arg_z,aligned_bignum_size(1))) 3078 __(movd %mm1,misc_data_offset(%arg_z)) 3079 __(ret) 3080 /* make a 2 digit bignum */ 3081 2: __(movl $two_digit_bignum_header,%imm0) 3082 __(movd %imm0,%mm0) 3083 __(Misc_Alloc_Fixed(%arg_z,aligned_bignum_size(2))) 3084 __(movq %mm1,misc_data_offset(%arg_z)) 3085 __(ret) 3086 /* make a 3 digit bignum */ 3087 3: __(movl $three_digit_bignum_header,%imm0) 3088 __(movd %imm0,%mm0) 3089 __(Misc_Alloc_Fixed(%arg_z,aligned_bignum_size(3))) 3090 __(movq %mm1,misc_data_offset(%arg_z)) 3091 __(ret) 3081 3092 _endsubp(makeu64) 3082 3093 … … 3134 3145 /* Make a lisp integer from the unsigned value in imm0 */ 3135 3146 _spentry(makeu32) 3136 __(cmpl $ (1<<29),%imm0)3137 __(ja e0f) /* need to make a bignum */3147 __(cmpl $target_most_positive_fixnum,%imm0) 3148 __(ja 0f) /* need to make a bignum */ 3138 3149 __(box_fixnum(%imm0,%arg_z)) 3139 3150 __(ret)
Note:
See TracChangeset
for help on using the changeset viewer.
