- Timestamp:
- Jul 9, 2010, 4:46:08 PM (14 years ago)
- Location:
- branches/arm
- Files:
-
- 8 edited
-
compiler/ARM/arm-arch.lisp (modified) (5 diffs)
-
compiler/optimizers.lisp (modified) (2 diffs)
-
lisp-kernel/arm-constants.h (modified) (3 diffs)
-
lisp-kernel/arm-constants.s (modified) (4 diffs)
-
lisp-kernel/arm-gc.c (modified) (2 diffs)
-
lisp-kernel/lisp_globals.h (modified) (3 diffs)
-
lisp-kernel/platform-linuxarm.h (modified) (1 diff)
-
xdump/xarmfasload.lisp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/arm/compiler/ARM/arm-arch.lisp
r13926 r13948 528 528 (ccl::defenum () 529 529 fulltag-even-fixnum ; I suppose EVENP/ODDP might care; nothing else does. 530 fulltag- cons ; a real (non-null) cons. Shares TAG with fulltag-nil.530 fulltag-nil ; NIL and nothing but. (Note that there's still a hidden NILSYM.) 531 531 fulltag-nodeheader ; Header of heap-allocated object that contains lisp-object pointers 532 532 fulltag-imm ; a "real" immediate object. Shares TAG with fulltag-immheader. 533 533 fulltag-odd-fixnum ; 534 fulltag- nil ; NIL and nothing but. (Note that there's still a hidden NILSYM.)534 fulltag-cons ; a real (non-null) cons. Shares TAG with fulltag-nil. 535 535 fulltag-misc ; Pointer "real" tag-misc object. Shares TAG with fulltag-nodeheader. 536 536 fulltag-immheader ; Header of heap-allocated object that contains unboxed data. … … 543 543 544 544 545 (defconstant canonical-nil-value (+ #x 10000000 fulltag-nil))545 (defconstant canonical-nil-value (+ #x04000000 fulltag-nil)) 546 546 (defconstant nil-value canonical-nil-value) 547 547 548 548 ;;; T is almost adjacent to NIL: since NIL is a misaligned CONS, it spans 549 549 ;;; two doublewords. The arithmetic difference between T and NIL is 550 ;;; such that the least-significant bit and exactly one other bit is551 ;;; set in the result.552 553 (defconstant t-offset (+ dnode-size(- dnode-size fulltag-nil) fulltag-misc))550 ;;; not inherently interesting; it should be possible to express that 551 ;;; difference as an ARM constant, but that's the only real constraint. 552 553 (defconstant t-offset (+ (- dnode-size fulltag-nil) fulltag-misc)) 554 554 555 555 … … 674 674 ;;; too many tricks to be played with predecrement/preincrement addressing. 675 675 ;;; Keep them in the confusing MCL 3.0 order, to avoid confusion. 676 (define-lisp-object cons tag-list676 (define-lisp-object cons fulltag-cons 677 677 cdr 678 678 car) … … 936 936 (let* ((pos (position sym arm::*arm-kernel-globals* :test #'string=))) 937 937 (if pos 938 (- (* ( 1+pos) 4))938 (- (* (+ 3 pos) 4)) 939 939 (error "Unknown kernel global : ~s ." sym)))) 940 940 … … 942 942 (let* ((pos (position sym arm::*arm-kernel-globals* :test #'string=))) 943 943 (if pos 944 (- (* ( 1+pos) 4))944 (- (* (+ 3 pos) 4)) 945 945 (error "Unknown kernel global : ~s ." sym)))) 946 946 -
branches/arm/compiler/optimizers.lisp
r13780 r13948 1826 1826 (define-compiler-macro listp (n) 1827 1827 (let* ((arch (backend-target-arch *target-backend*)) 1828 (cons-tag (arch::target-cons-tag arch)) 1828 (list-tag (logand (arch::target-cons-tag arch) 1829 (1- (ash 1 (arch::target-nlisptagbits arch))))) 1829 1830 (nil-tag (arch::target-null-tag arch)) 1830 1831 (symbol-tag (arch::target-symbol-tag arch))) … … 1833 1834 `(let* ((,nvar ,n)) 1834 1835 (if ,nvar (consp ,nvar) t))) 1835 `(eql (lisptag ,n) , cons-tag))))1836 `(eql (lisptag ,n) ,list-tag)))) 1836 1837 1837 1838 (define-compiler-macro consp (&whole call n) -
branches/arm/lisp-kernel/arm-constants.h
r13921 r13948 84 84 85 85 #define fulltag_even_fixnum 0 /* I suppose EVENP/ODDP might care; nothing else does. */ 86 #define fulltag_ cons 1 /* a real (non_null) cons. Shares TAG with fulltag_nil.*/86 #define fulltag_nil 1 /* NIL and nothing but. (Note that there's still a hidden NILSYM.) */ 87 87 #define fulltag_nodeheader 2 /* Header of heap_allocated object that contains lisp_object pointers */ 88 88 #define fulltag_imm 3 /* a "real" immediate object. Shares TAG with fulltag_immheader. */ 89 89 #define fulltag_odd_fixnum 4 /* */ 90 #define fulltag_ nil 5 /* NIL and nothing but. (Note that there's still a hidden NILSYM.)*/90 #define fulltag_cons 5 /* a real (non_null) cons. Shares TAG with fulltag_nil. */ 91 91 #define fulltag_misc 6 /* Pointer "real" tag_misc object. Shares TAG with fulltag_nodeheader. */ 92 92 #define fulltag_immheader 7 /* Header of heap-allocated object that contains unboxed data. */ … … 272 272 273 273 274 #define nil_value (0x 10000000+fulltag_nil)274 #define nil_value (0x04000000+fulltag_nil) 275 275 276 276 … … 332 332 #define log2_heap_segment_size 16 333 333 334 #define STATIC_BASE_ADDRESS 0x0 ffff000334 #define STATIC_BASE_ADDRESS 0x03fff000 335 335 336 336 #define PSR_N_MASK (1<<31) -
branches/arm/lisp-kernel/arm-constants.s
r13925 r13948 118 118 119 119 fulltag_even_fixnum = 0 /* I suppose EVENP/ODDP might care; nothing else does. */ 120 fulltag_ cons = 1 /* a real (non_null) cons. Shares TAG with fulltag_nil.*/120 fulltag_nil = 1 /* NIL and nothing but. (Note that there's still a hidden NILSYM.) */ 121 121 fulltag_nodeheader = 2 /* Header of heap_allocated object that contains lisp_object pointers */ 122 122 fulltag_imm = 3 /* a "real" immediate object. Shares TAG with fulltag_immheader. */ 123 123 fulltag_odd_fixnum = 4 /* */ 124 fulltag_ nil = 5 /* NIL and nothing but. (Note that there's still a hidden NILSYM.)*/124 fulltag_cons = 5 /* a real (non_null) cons. Shares TAG with fulltag_nil. */ 125 125 fulltag_misc = 6 /* Pointer "real" tag_misc object. Shares TAG with fulltag_nodeheader. */ 126 126 fulltag_immheader = 7 /* Header of heap-allocated object that contains unboxed data. */ 127 127 128 nil_value = (0x 10000000+fulltag_nil)128 nil_value = (0x04000000+fulltag_nil) 129 129 misc_bias = fulltag_misc 130 cons_bias = tag_list130 cons_bias = fulltag_cons 131 131 132 132 unsigned_byte_24_mask = 0xe0000003 /* bits that should be clear in a boxed */ … … 172 172 /* set in the result. */ 173 173 174 t_offset = ( dnode_size+(dnode_size-fulltag_nil)+fulltag_misc)174 t_offset = ((dnode_size-fulltag_nil)+fulltag_misc) 175 175 t_value = nil_value+t_offset 176 176 … … 397 397 398 398 _struct(nrs,0) 399 _struct_pad(dnode_size +dnode_size-fulltag_nil)399 _struct_pad(dnode_size-fulltag_nil) 400 400 401 401 _struct_pad(fulltag_misc) … … 689 689 num_lisp_globals = 49 /* MUST UPDATE THIS !!! */ 690 690 691 _struct(lisp_globals,-(fulltag_nil+ (num_lisp_globals*node_size)))691 _struct(lisp_globals,-(fulltag_nil+dnode_size+(num_lisp_globals*node_size))) 692 692 _node(weakvll) /* all populations as of last GC */ 693 693 _node(initial_tcr) /* initial thread tcr */ -
branches/arm/lisp-kernel/arm-gc.c
r13925 r13948 533 533 MarkCons: 534 534 next = deref(this,1); 535 this += node_size;535 this = untag(this)+fulltag_nil; 536 536 tag_n = fulltag_of(next); 537 537 if (!is_node_fulltag(tag_n)) goto MarkCdr; … … 551 551 MarkCdr: 552 552 next = deref(this, 0); 553 this -= node_size;553 this = untag(this)+fulltag_cons; 554 554 tag_n = fulltag_of(next); 555 555 if (!is_node_fulltag(tag_n)) goto Climb; -
branches/arm/lisp-kernel/lisp_globals.h
r13785 r13948 83 83 #define G2_THRESHOLD (-507) 84 84 #else 85 #ifdef ARM 86 #define LISP_HEAP_THRESHOLD (-1021) 87 #define EGC_ENABLED (-1020) 88 #define G0_THRESHOLD (-1019) 89 #define G1_THRESHOLD (-1018) 90 #define G2_THRESHOLD (-1017) 91 #else 85 92 #define LISP_HEAP_THRESHOLD (-1023) 86 93 #define EGC_ENABLED (-1022) … … 88 95 #define G1_THRESHOLD (-1020) 89 96 #define G2_THRESHOLD (-1019) 97 #endif 90 98 #endif 91 99 … … 111 119 112 120 #ifdef ARM 113 #define lisp_global(g) (((LispObj *) ( 0x10000000))[(g)])114 #define nrs_symbol(s) (((lispsymbol *) ( 0x10000010))[(s)])121 #define lisp_global(g) (((LispObj *) (nil_value-fulltag_nil-dnode_size))[(g)]) 122 #define nrs_symbol(s) (((lispsymbol *) (nil_value-fulltag_nil+dnode_size))[(s)]) 115 123 #endif 116 124 -
branches/arm/lisp-kernel/platform-linuxarm.h
r13789 r13948 27 27 28 28 #define MAXIMUM_MAPPABLE_MEMORY (256<<20) /* uh, no */ 29 #define IMAGE_BASE_ADDRESS 0x 1000100029 #define IMAGE_BASE_ADDRESS 0x04001000 30 30 31 31 #include "lisptypes.h" -
branches/arm/xdump/xarmfasload.lisp
r13789 r13948 69 69 70 70 (defun arm-initialize-static-space () 71 (xload-make-word-ivector arm::subtag-u32-vector 102 3*xload-static-space*)71 (xload-make-word-ivector arm::subtag-u32-vector 1021 *xload-static-space*) 72 72 ;; Make NIL. Note that NIL is sort of a misaligned cons (it 73 73 ;; straddles two doublewords.) … … 87 87 :subdirs '("ccl:level-0;ARM;") 88 88 :compiler-target-name :linuxarm 89 :image-base-address (+ ( ash 1 28) (ash 1 12))89 :image-base-address (+ (- arm::nil-value arm::fulltag-nil) (ash 1 12)) 90 90 :nil-relative-symbols arm::*arm-nil-relative-symbols* 91 91 :static-space-init-function 'arm-initialize-static-space 92 92 :purespace-reserve (ash 8 20) 93 :static-space-address (- ( ash 1 28) (ash 1 12))93 :static-space-address (- (- arm::nil-value arm::fulltag-nil) (ash 1 12)) 94 94 )) 95 95
Note:
See TracChangeset
for help on using the changeset viewer.
