[kaffe-siteadmin] CVS website (jserv): Members:

Kaffe CVS cvs-commits at kaffe.org
Sat May 14 03:19:20 PDT 2005


PatchSet 214 
Date: 2005/05/14 10:19:17
Author: jserv
Branch: HEAD
Tag: (none) 
Log:
Edouard G. Parmelan died Monday September 17, 2001 in a motorbike accident while he was going to work. We make a copy of this document from his old website ( http://egp.free.fr/oldsite/port-kaffe/ ).

Members: 
	documentation.shtml:1.22->1.23 
	doc/port-kaffe/index.html:INITIAL->1.1 
	doc/port-kaffe/port-kaffe-0.1.html:INITIAL->1.1 
	doc/port-kaffe/port-kaffe-0.1.tar.gz:INITIAL->1.1 
	doc/port-kaffe/port-kaffe-0.2.html:INITIAL->1.1 
	doc/port-kaffe/port-kaffe-0.2.tar.gz:INITIAL->1.1 

Index: website/documentation.shtml
diff -u website/documentation.shtml:1.22 website/documentation.shtml:1.23
--- website/documentation.shtml:1.22	Wed Apr  6 00:54:57 2005
+++ website/documentation.shtml	Sat May 14 10:19:17 2005
@@ -215,9 +215,10 @@
 
 	<ul type="disc">
 
-	  <li><a href="http://egp.free.fr/port-kaffe/port-kaffe-0.2.html">Porting Kaffe to a new platform</a><p>
+	  <li><a href="doc/port-kaffe/port-kaffe-0.2.html">Porting Kaffe to a new platform</a><p>
 
-	      By Edouard Parmelan.<p>
+	      By Edouard Parmelan.<br>
+	      NOTE: <a href="http://egp.free.fr/">Edouard G. Parmelan</a> died Monday September 17, 2001 in a motorbike accident while he was going to work. We make a copy of this document from his <a href="http://egp.free.fr/oldsite/port-kaffe/">old website</a>. Any comment and suggestions about Kaffe's porting issues are welcome to <a href="mailto:kaffe at kaffe.org">kaffe at kaffe.org</a>.<p>
 
 	  <li><a href="http://www.cs.pdx.edu/~sanseri/kaffe/kaffe.html">Porting Kaffe to the IA-64 Architecture</a><p>
 
===================================================================
Checking out website/doc/port-kaffe/index.html
RCS:  /home/cvs/kaffe/website/doc/port-kaffe/index.html,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ website/doc/port-kaffe/index.html	Sat May 14 10:19:20 2005
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Porting Kaffe to a new Plateforme</title>
+  </head>
+
+  <body>
+    <h1>Porting Kaffe to a new Plateforme</h1>
+
+    <blockquote>
+      I had port <tt>JIT</tt> engine to Alpha Tru64 and GNU/Linux Alpha in
+      the past and I know how it's difficult to understand correctly
+      <tt>intrp</tt> and <tt>JIT</tt> engines with only sources as
+      documentation.  I had write this document latter while I was porting
+      <tt>intrp</tt> engine to Darwin (Mac OS X) operating system.  In the
+      same time I was writing <tt>JIT back-end</tt> for PowerPC.
+    </blockquote>
+
+    <blockquote>
+      If you find some bullets in this document, send an email to <a
+      href="mailto:egp at free.fr">egp at free.fr</a>.  All comments are welcome.
+      If you want to fix typo or grammar use SGML sources only and send me
+      "<tt>diff -u</tt>" result.  Never fill-paragraph NOR reformat them.
+    </blockquote>
+
+    <h4>History</h4>
+    <table>
+      <tbody>
+	<tr>
+	  <td>August 30, 2001</td>
+	  <td>
+	    Publish version 0.2.
+	    Read <a href="port-kaffe-0.2.html">HTML</a>.
+	    Download source <a href="port-kaffe-0.2.tar.gz">port-kaffe-0.2.tar.gz</a>.
+	  </td>
+	</tr>
+
+	<tr>
+	  <td>August 19, 2001</td>
+	  <td>
+	    Publish version 0.1.
+	    Read <a href="port-kaffe-0.1.html">HTML</a>.
+	    Download source <a href="port-kaffe-0.1.tar.gz">port-kaffe-0.1.tar.gz</a>.
+	  </td>
+	</tr>
+      </tbody>
+    </table>
+
+
+    <hr>
+    <address>&copy 2001 <a href="mailto:egp at free.fr">Edouard G. Parmelan</a></address>
+<!-- Created: Thu Aug 30 23:36:04 CEST 2001 -->
+<!-- hhmts start -->
+Last modified: Thu Sep 13 14:29:31 CEST 2001<br>
+NOTE: <a href="http://egp.free.fr/">Edouard G. Parmelan</a> died Monday September 17, 2001 in a motorbike accident while he was going to work. We make a copy of this document from his <a href="http://egp.free.fr/oldsite/port-kaffe/">old website</a>. Any comment and suggestions about Kaffe's porting issues are welcome to <a href="mailto:kaffe at kaffe.org">kaffe at kaffe.org</a>.
+<!-- hhmts end -->
+  </body>
+</html>
===================================================================
Checking out website/doc/port-kaffe/port-kaffe-0.1.html
RCS:  /home/cvs/kaffe/website/doc/port-kaffe/port-kaffe-0.1.html,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ website/doc/port-kaffe/port-kaffe-0.1.html	Sat May 14 10:19:20 2005
@@ -0,0 +1,3327 @@
+<HTML
+><HEAD
+><TITLE
+>Porting Kaffe to a new platform</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.64
+"></HEAD
+><BODY
+CLASS="BOOK"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="BOOK"
+><A
+NAME="AEN1"
+></A
+><DIV
+CLASS="TITLEPAGE"
+><H1
+CLASS="TITLE"
+><A
+NAME="AEN2"
+>Porting Kaffe to a new platform</A
+></H1
+><H3
+CLASS="AUTHOR"
+><A
+NAME="AEN5"
+>Edouard G. Parmelan</A
+></H3
+><P
+CLASS="COPYRIGHT"
+>Copyright &copy; 2001 by Edouard G. Parmelan</P
+><DIV
+CLASS="LEGALNOTICE"
+><A
+NAME="AEN18"
+></A
+><P
+></P
+><P
+>	Permission is granted to copy, distribute and/or modify this document
+	under the terms of the GNU Free Documentation License, Version 1.1 or
+	any later version published by the Free Software Foundation; with no
+	Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+	Texts. A copy of the license is included in the section entitled "GNU
+	Free Documentation License".
+      </P
+><P
+></P
+></DIV
+><HR></DIV
+><DIV
+CLASS="TOC"
+><DL
+><DT
+><B
+>Table of Contents</B
+></DT
+><DT
+><A
+HREF="#AEN20"
+>Preface</A
+></DT
+><DT
+>1. <A
+HREF="#AEN53"
+>Overview</A
+></DT
+><DT
+>2. <A
+HREF="#PORT-INTRP-ENGINE"
+>Port Kaffe <TT
+CLASS="LITERAL"
+>intrp</TT
+> engine to a new
+      platform</A
+></DT
+><DD
+><DL
+><DT
+>2.1. <A
+HREF="#CONFIG-FILES"
+>Configuration files</A
+></DT
+><DT
+>2.2. <A
+HREF="#ALIGNMENT-OF-SIZE"
+>Alignment of various types</A
+></DT
+><DT
+>2.3. <A
+HREF="#UNIX-JTHREAD"
+>Threads subsystem</A
+></DT
+><DT
+>2.4. <A
+HREF="#AEN200"
+>Locks subsystem</A
+></DT
+><DT
+>2.5. <A
+HREF="#SYSDEPCALLMETHOD"
+>Function <TT
+CLASS="FUNCTION"
+>sysdepCallMethod()</TT
+></A
+></DT
+><DD
+><DL
+><DT
+>2.5.1. <A
+HREF="#CALLMETHODINFO"
+>The <TT
+CLASS="LITERAL"
+>callMethodInfo</TT
+> structure</A
+></DT
+><DT
+>2.5.2. <A
+HREF="#LIBFFI"
+><TT
+CLASS="LITERAL"
+>libffi</TT
+></A
+></DT
+></DL
+></DD
+><DT
+>2.6. <A
+HREF="#LIBTOOL"
+>GNU Libtool</A
+></DT
+></DL
+></DD
+><DT
+>3. <A
+HREF="#PORT-JIT-ENGINE"
+>Port Kaffe <TT
+CLASS="LITERAL"
+>JIT</TT
+> engine to a new platform</A
+></DT
+><DT
+>4. <A
+HREF="#NEW-JIT-ENGINE"
+>Write <TT
+CLASS="LITERAL"
+>JIT back-end</TT
+> for a new processor
+      family</A
+></DT
+><DD
+><DL
+><DT
+>4.1. <A
+HREF="#JIT-FUNCTIONS"
+>Overview of <TT
+CLASS="LITERAL"
+>JIT back-end</TT
+> functions.</A
+></DT
+><DD
+><DL
+><DT
+>4.1.1. <A
+HREF="#REG-SPILL-RELOAD"
+>Register spills and reloads</A
+></DT
+><DT
+>4.1.2. <A
+HREF="#AEN449"
+>Prologues and epilogues</A
+></DT
+><DT
+>4.1.3. <A
+HREF="#AEN473"
+>Conditional monitor management</A
+></DT
+><DT
+>4.1.4. <A
+HREF="#AEN485"
+>Moves</A
+></DT
+><DT
+>4.1.5. <A
+HREF="#AEN550"
+>Arithmetic operators</A
+></DT
+><DT
+>4.1.6. <A
+HREF="#AEN706"
+>Logical operators</A
+></DT
+><DT
+>4.1.7. <A
+HREF="#AEN713"
+>pushing parameters</A
+></DT
+></DL
+></DD
+><DT
+>4.2. <A
+HREF="#AEN720"
+>Registers description.</A
+></DT
+><DT
+>4.3. <A
+HREF="#AEN723"
+>Slots usage.</A
+></DT
+></DL
+></DD
+><DT
+>5. <A
+HREF="#AEN726"
+>Tips</A
+></DT
+><DT
+>A. <A
+HREF="#GFDL"
+>GNU Free Documentation License</A
+></DT
+><DD
+><DL
+><DT
+>0. <A
+HREF="#AEN750"
+>PREAMBLE</A
+></DT
+><DT
+>1. <A
+HREF="#AEN755"
+>APPLICABILITY AND DEFINITIONS</A
+></DT
+><DT
+>2. <A
+HREF="#AEN765"
+>VERBATIM COPYING</A
+></DT
+><DT
+>3. <A
+HREF="#AEN769"
+>COPYING IN QUANTITY</A
+></DT
+><DT
+>4. <A
+HREF="#AEN775"
+>MODIFICATIONS</A
+></DT
+><DT
+>5. <A
+HREF="#AEN811"
+>COMBINING DOCUMENTS</A
+></DT
+><DT
+>6. <A
+HREF="#AEN816"
+>COLLECTIONS OF DOCUMENTS</A
+></DT
+><DT
+>7. <A
+HREF="#AEN820"
+>AGGREGATION WITH INDEPENDENT WORKS</A
+></DT
+><DT
+>8. <A
+HREF="#AEN824"
+>TRANSLATION</A
+></DT
+><DT
+>9. <A
+HREF="#AEN827"
+>TERMINATION</A
+></DT
+><DT
+>10. <A
+HREF="#AEN830"
+>FUTURE REVISIONS OF THIS LICENSE</A
+></DT
+><DT
+><A
+HREF="#AEN835"
+>How to use this License for your documents</A
+></DT
+></DL
+></DD
+></DL
+></DIV
+><DIV
+CLASS="PREFACE"
+><HR><H1
+><A
+NAME="AEN20"
+>Preface</A
+></H1
+><P
+>      I had port <TT
+CLASS="LITERAL"
+>JIT</TT
+> engine to Alpha Tru64 and GNU/Linux
+      Alpha in the past and I know how it's difficult to understand correctly
+      <TT
+CLASS="LITERAL"
+>intrp</TT
+> and <TT
+CLASS="LITERAL"
+>JIT</TT
+> engines with only
+      sources as documentation.  I had write this document latter while I was
+      porting <TT
+CLASS="LITERAL"
+>intrp</TT
+> engine to Darwin (Mac OS X) operating
+      system.  In the same time I was writing <TT
+CLASS="LITERAL"
+>JIT back-end</TT
+>
+      for PowerPC.
+    </P
+><P
+>      This document is written in SGML DocBook with <A
+HREF="http://www.gnu.org/software/emacs"
+TARGET="_top"
+>GNU Emacs</A
+> and
+      <TT
+CLASS="LITERAL"
+>PSGML</TT
+> major mode.  Source of this document may be
+      found in <A
+HREF="http://www.kaffe.org/CVS.html"
+TARGET="_top"
+>Kaffe CVS
+	Tree</A
+> or in <A
+HREF="http://egp.free.fr/oldsite/kaffe"
+TARGET="_top"
+>my Kaffe
+	repository</A
+>.
+    </P
+><P
+>      If you find some bullets in this document, send an email to
+      <TT
+CLASS="EMAIL"
+>&#60;<A
+HREF="mailto:egp at free.fr"
+>egp at free.fr</A
+>&#62;</TT
+>.  All comments are welcome.  If you want to
+      fix typo or grammar use SGML sources only and send me "diff -u" result.
+      Never fill-paragraph NOR reformat them.
+    </P
+>
+.
+    </P
+><P
+>      Others persons have already written documents on this subject.  I some
+      time peek phrases, sections or inspiration from them.
+
+      <P
+></P
+><UL
+><LI
+><P
+>	    <A
+HREF="http://www.kaffe.org/"
+TARGET="_top"
+>Kaffe sources</A
+>.
+	  </P
+></LI
+><LI
+><P
+>	    Kiyo Inaba, <A
+HREF="http://www2.biglobe.ne.jp/~inaba/trampolines.html"
+TARGET="_top"
+>"What is
+	      trampoline code in Kaffe?"</A
+>, Aug 1998.
+	  </P
+></LI
+><LI
+><P
+>	    Kiyo Inaba, <A
+HREF="http://www2.biglobe.ne.jp/~inaba/sysdepCallMethod.html"
+TARGET="_top"
+>"How
+	      sysdepCallMethod works?"</A
+>, Jul 1998.
+	  </P
+></LI
+><LI
+><P
+>	    Samuel K. Sanseri <TT
+CLASS="EMAIL"
+>&#60;<A
+HREF="mailto:sanseri at cs.pdx.edu"
+>sanseri at cs.pdx.edu</A
+>&#62;</TT
+>, <A
+HREF="http://www.cs.pdx.edu/~sanseri/kaffe/kaffe.html"
+TARGET="_top"
+>"Porting
+	      Kaffe to the IA-64 Architecture"</A
+>, Feb 2000.
+	  </P
+></LI
+></UL
+>
+    </P
+></DIV
+><DIV
+CLASS="CHAPTER"
+><HR><H1
+><A
+NAME="AEN53"
+>Chapter 1. Overview</A
+></H1
+><P
+>      The first step to port Kaffe to a new platform or new processor family
+      is to port <TT
+CLASS="LITERAL"
+>intrp</TT
+> engine.  Then As soon as
+      <TT
+CLASS="LITERAL"
+>intrp</TT
+> engine works, you can port
+      <TT
+CLASS="LITERAL"
+>JIT</TT
+> engine (see <A
+HREF="#PORT-JIT-ENGINE"
+>Chapter 3</A
+>).  The biggest task will be to write
+      <TT
+CLASS="LITERAL"
+>JIT back-end</TT
+> for your processor family (see <A
+HREF="#NEW-JIT-ENGINE"
+>Chapter 4</A
+>).
+    </P
+><P
+>      I will try to covers all these tasks in this document.
+    </P
+></DIV
+><DIV
+CLASS="CHAPTER"
+><HR><H1
+><A
+NAME="PORT-INTRP-ENGINE"
+>Chapter 2. Port Kaffe <TT
+CLASS="LITERAL"
+>intrp</TT
+> engine to a new
+      platform</A
+></H1
+><P
+></P
+><UL
+><LI
+><P
+>	  Quick presentation of all configuration files for a new platform.
+	</P
+></LI
+><LI
+><P
+>	  Configuring <TT
+CLASS="LITERAL"
+>unix-jthreads</TT
+> subsystem.
+	</P
+></LI
+><LI
+><P
+>Locks subsystem.</P
+></LI
+><LI
+><P
+>	  Writing <TT
+CLASS="FUNCTION"
+>sysdepCallMethod()</TT
+> function.
+	</P
+></LI
+><LI
+><P
+>	  Build <TT
+CLASS="LITERAL"
+>intrp</TT
+> engine.
+	</P
+></LI
+></UL
+><DIV
+CLASS="SECTION"
+><HR><H1
+CLASS="SECTION"
+><A
+NAME="CONFIG-FILES"
+>2.1. Configuration files</A
+></H1
+><P
+>	<P
+></P
+><DIV
+CLASS="VARIABLELIST"
+><DL
+><DT
+><TT
+CLASS="FILENAME"
+>config/config.alias</TT
+></DT
+><DD
+><P
+>		This shell script maps <TT
+CLASS="FILENAME"
+>configure</TT
+>'s
+		variables <TT
+CLASS="VARNAME"
+>$host_cpu</TT
+> and
+		<TT
+CLASS="VARNAME"
+>$host_os</TT
+> to Kaffe cananical forms
+		<TT
+CLASS="VARNAME"
+>$Khost_os</TT
+> and <TT
+CLASS="VARNAME"
+>$Khost_os</TT
+>.
+		These variables define access paths to cpu family and platform
+		configuration files.
+	      </P
+></DD
+><DT
+><TT
+CLASS="FILENAME"
+>config/$Khost_cpu/Make.frag</TT
+></DT
+><DD
+><P
+>		Optional <TT
+CLASS="FILENAME"
+>Makefile</TT
+> fragments required for
+		this cpu family.
+	      </P
+></DD
+><DT
+><TT
+CLASS="FILENAME"
+>config/$Khost_cpu/common.h</TT
+></DT
+><DD
+><P
+>		Common definitions for all platforms of this cpu family.
+	      </P
+></DD
+><DT
+><TT
+CLASS="FILENAME"
+>config/$Khost_cpu/thread.h</TT
+></DT
+><DD
+><P
+>		Common thread definitions for all platforms of this cpu
+		family.
+	      </P
+></DD
+><DT
+><TT
+CLASS="FILENAME"
+>config/$Khost_cpu/$Khost_os/config.frag</TT
+></DT
+><DD
+><P
+>		<TT
+CLASS="FILENAME"
+>configure</TT
+>'s fragment for this platform.
+	      </P
+><P
+>		It may holds specials <TT
+CLASS="VARNAME"
+>$CFLAGS</TT
+> add-ons and
+		<I
+CLASS="EMPHASIS"
+>cross-compile</I
+> definitions.
+	      </P
+></DD
+><DT
+><TT
+CLASS="FILENAME"
+>config/$Khost_cpu/$Khost_os/md.h</TT
+>, <TT
+CLASS="FILENAME"
+>config/$Khost_cpu/$Khost_os/md.c</TT
+></DT
+><DD
+><P
+>		Platform dependent header and functions.
+	      </P
+><P
+>		File <TT
+CLASS="FILENAME"
+>md.h</TT
+> typically includes
+		<TT
+CLASS="FILENAME"
+>$Khost_cpu/common.h</TT
+> and
+		<TT
+CLASS="FILENAME"
+>$Khost_cpu/thread.h</TT
+> and defines
+		<TT
+CLASS="VARNAME"
+>SP_OFFSET</TT
+> macro.
+	      </P
+></DD
+><DT
+><TT
+CLASS="FILENAME"
+>config/$Khost_cpu/jit.h</TT
+>, <TT
+CLASS="FILENAME"
+>config/$Khost_cpu/jit-$Khost_cpu.def</TT
+>, <TT
+CLASS="FILENAME"
+>config/$Khost_cpu/jit-icode.h</TT
+>, <TT
+CLASS="FILENAME"
+>config/$Khost_cpu/jit3-$Khost_cpu.def</TT
+>, <TT
+CLASS="FILENAME"
+>config/$Khost_cpu/jit3-icode.h</TT
+></DT
+><DD
+><P
+>		JIT/JIT3 definitions for this cpu family.
+	      </P
+></DD
+><DT
+><TT
+CLASS="FILENAME"
+>config/$Khost_cpu/$Khost_os/jit-md.h</TT
+>, <TT
+CLASS="FILENAME"
+>config/$Khost_cpu/$Khost_os/jit3-md.h</TT
+></DT
+><DD
+><P
+>		Platform JIT/JIT3 dependent header.
+	      </P
+><P
+>		It includes <TT
+CLASS="FILENAME"
+>$Khost_cpu/jit.h</TT
+> and defines
+		<TT
+CLASS="VARNAME"
+>EXCEPTIONPROTO</TT
+> and
+		<TT
+CLASS="VARNAME"
+>EXCEPTIONFRAME</TT
+> macros.
+	      </P
+></DD
+></DL
+></DIV
+>
+      </P
+></DIV
+><DIV
+CLASS="SECTION"
+><HR><H1
+CLASS="SECTION"
+><A
+NAME="ALIGNMENT-OF-SIZE"
+>2.2. Alignment of various types</A
+></H1
+><P
+>	Fields inside classe objects must follow the alignment constraints of
+	the C calling conventions.  If alignment of type
+	<TT
+CLASS="REPLACEABLE"
+><I
+>TYPE</I
+></TT
+> is not
+	<TT
+CLASS="FUNCTION"
+>sizeof(<TT
+CLASS="REPLACEABLE"
+><I
+>TYPE</I
+></TT
+>)</TT
+> you must
+	define macro
+	<TT
+CLASS="FUNCTION"
+>ALIGNMENT_OF_SIZE(<TT
+CLASS="REPLACEABLE"
+><I
+>SIZE</I
+></TT
+>)</TT
+>
+	in file <TT
+CLASS="FILENAME"
+>config/$Khost_cpu/common.h</TT
+>.
+      </P
+><P
+>	The small C program
+	<TT
+CLASS="FILENAME"
+>developers/alignment_of_size.c</TT
+> may helps you to
+	discover correct alignment.  Simply compiles it and runs it.
+      </P
+></DIV
+><DIV
+CLASS="SECTION"
+><HR><H1
+CLASS="SECTION"
+><A
+NAME="UNIX-JTHREAD"
+>2.3. Threads subsystem</A
+></H1
+><P
+>	Sources of threads subsystems are located into directory
+	<TT
+CLASS="FILENAME"
+>kaffe/kaffevm/systems/</TT
+>.
+      </P
+><P
+>	The common threads subsystem is <TT
+CLASS="LITERAL"
+>unix-jthread</TT
+>.  It
+	uses <TT
+CLASS="FUNCTION"
+>setjmp()</TT
+> and <TT
+CLASS="FUNCTION"
+>longjmp()</TT
+>
+	functions.  In order to use it you must provide stack pointer offset
+	into <TT
+CLASS="VARNAME"
+>jmp_env</TT
+>.
+      </P
+><P
+>	The small C program <TT
+CLASS="FILENAME"
+>developers/sp_offset.c</TT
+> may
+	helps you to discover <TT
+CLASS="LITERAL"
+>SP_OFFSET</TT
+>.  Simply compiles it
+	and runs it.  It may leaves <TT
+CLASS="FILENAME"
+>core</TT
+> file in you
+	current directory.
+      </P
+><P
+>	Some platforms need to setup Frame-Pointer register when creating a
+	new thread stack.  In this case you must provide his offset
+	<TT
+CLASS="LITERAL"
+>FP_OFFSET</TT
+> into <TT
+CLASS="VARNAME"
+>jmp_env</TT
+>.
+      </P
+><P
+>	Macros <TT
+CLASS="LITERAL"
+>SP_OFFSET</TT
+> and <TT
+CLASS="LITERAL"
+>FP_OFFSET</TT
+>
+	should be defined in file
+	<TT
+CLASS="FILENAME"
+>config/$Khost_cpu/$Kost_os/md.h</TT
+>.
+      </P
+><P
+>	Define the macro <TT
+CLASS="LITERAL"
+>THREADSTACKSIZE</TT
+> in file
+	<TT
+CLASS="FILENAME"
+>config/$Khost_cpu/thread.h</TT
+> to the size in bytes
+	of each thread's stack.  This size may depends on
+	<TT
+CLASS="LITERAL"
+>INTERPRETER</TT
+> defined as <TT
+CLASS="LITERAL"
+>intrp</TT
+>
+	engine will need greater stack size than <TT
+CLASS="LITERAL"
+>JIT</TT
+>
+	engine.  Commun values are 64K for <TT
+CLASS="LITERAL"
+>intrp</TT
+> engine and
+	32K for <TT
+CLASS="LITERAL"
+>JIT</TT
+> engine.
+      </P
+><P
+>	You may want to use another threads subsystem specific to your
+	platform.  It is possible but it's not cover by this document.  Read
+	files <TT
+CLASS="FILENAME"
+>FAQ/FAQ.jsignal</TT
+> and
+	<TT
+CLASS="FILENAME"
+>FAQ/FAQ.locks</TT
+>.
+      </P
+><P
+>	To select another threads subsystem, configure with option
+	<TT
+CLASS="LITERAL"
+>--with-threads=<TT
+CLASS="REPLACEABLE"
+><I
+>thread-subsystem</I
+></TT
+></TT
+>.
+      </P
+></DIV
+><DIV
+CLASS="SECTION"
+><HR><H1
+CLASS="SECTION"
+><A
+NAME="AEN200"
+>2.4. Locks subsystem</A
+></H1
+><P
+>	Kaffe Fast Locking scheme (read <TT
+CLASS="FILENAME"
+>FAQ/FAQ.locks</TT
+>)
+	need a macro to atomic compare and exchange a lock address.  This
+	macro <TT
+CLASS="FUNCTION"
+>COMPARE_AND_EXCHANGE()</TT
+> must be
+	implemented in assembler.
+      </P
+><P
+>	Macro <TT
+CLASS="LITERAL"
+>COMPARE_AND_EXCHANGE()</TT
+> should be define in file
+	<TT
+CLASS="FILENAME"

*** Patch too long, truncated ***



More information about the kaffe-siteadmin mailing list