1.0.9.52: copy propagation interfering with local calls
[sbcl.git] / src / compiler / sparc / sanctify.lisp
1 ;;;; Do whatever is necessary to make the given code component
2 ;;;; executable.
3
4 ;;;; This software is part of the SBCL system. See the README file for
5 ;;;; more information.
6 ;;;;
7 ;;;; While most of SBCL is derived from the CMU CL system, the test
8 ;;;; files (like this one) were written from scratch after the fork
9 ;;;; from CMU CL.
10 ;;;;
11 ;;;; This software is in the public domain and is provided with
12 ;;;; absolutely no warranty. See the COPYING and CREDITS files for
13 ;;;; more information.
14
15 (in-package "SB!VM")
16
17 ;;; The comments in some of the cmucl source read that "the i and d
18 ;;; caches are unified, and so there is no need to flush them."
19 ;;;
20 ;;; Other bits of the cmucl source say that this is not true for
21 ;;; "newer machines, such as the SuperSPARC and MicroSPARC based
22 ;;; ones". Welcome to the 21st century... -- CSR, 2002-05-06
23 (defun sanctify-for-execution (component)
24   (without-gcing
25    (alien-funcall (extern-alien "os_flush_icache"
26                                 (function void
27                                           system-area-pointer
28                                           unsigned-long))
29                   (code-instructions component)
30                   (* (code-header-ref component code-code-size-slot)
31                      n-word-bytes)))
32   nil)