Changeset 6948
- Timestamp:
- Jul 21, 2007, 10:51:36 PM (14 years ago)
- Location:
- trunk/ccl/level-1
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/level-1/ppc-callback-support.lisp
r4260 r6948 21 21 (in-package "CCL") 22 22 23 ;;; Do nothing; it seems that we can safely be pretty casual about assuming24 ;;; that malloc()ed memory is executable on PPC.25 (defun reset-callback-storage ())26 23 27 24 … … 40 37 #.(subprim-name->offset '.SPpoweropen-callbackX) 41 38 #.(subprim-name->offset '.SPpoweropen-callback))) 42 (p ( malloc12)))39 (p (%allocate-callback-pointer 12))) 43 40 (setf (%get-long p 0) (logior (ldb (byte 8 16) index) 44 41 (ppc-lap-word (lis 11 ??))) ; unboxed index … … 62 59 (defun make-callback-trampoline (index &optional monitor-exception-ports) 63 60 (declare (ignorable monitor-exception-ports)) 64 (let* ((p ( malloc16)))61 (let* ((p (%allocate-callback-pointer 16))) 65 62 (setf (%%get-unsigned-longlong p 0) #.(subprim-name->offset '.SPpoweropen-callback) 66 63 (%%get-unsigned-longlong p 8) index) -
trunk/ccl/level-1/x86-callback-support.lisp
r6201 r6948 16 16 17 17 (in-package "CCL") 18 19 (defstatic *callback-alloc-lock* (make-lock))20 21 ;;;22 (defun %make-executable-page ()23 (#_mmap (%null-ptr)24 (#_getpagesize)25 (logior #$PROT_READ #$PROT_WRITE #$PROT_EXEC)26 (logior #$MAP_PRIVATE #$MAP_ANON)27 -128 0))29 30 (defstatic *available-bytes-for-callbacks* 0)31 (defstatic *current-callback-page* nil)32 33 (defun reset-callback-storage ()34 (setq *available-bytes-for-callbacks* (#_getpagesize)35 *current-callback-page* (%make-executable-page)))36 37 (defun %allocate-callback-pointer (n)38 (with-lock-grabbed (*callback-alloc-lock*)39 (when (< *available-bytes-for-callbacks* n)40 (reset-callback-storage))41 (decf *available-bytes-for-callbacks* n)42 (values (%inc-ptr *current-callback-page* *available-bytes-for-callbacks*))))43 18 44 19
Note: See TracChangeset
for help on using the changeset viewer.