Mercurial > hg > xemacs-beta
annotate src/alloca.s @ 5096:e0587c615e8b
Updates to internals.texi
-------------------- ChangeLog entries follow: --------------------
man/ChangeLog addition:
2010-03-04 Ben Wing <ben@xemacs.org>
* internals/internals.texi (Top):
* internals/internals.texi (list-to-texinfo): Removed.
* internals/internals.texi (convert-list-to-texinfo): New.
* internals/internals.texi (table-to-texinfo): Removed.
* internals/internals.texi (convert-table-to-texinfo): New.
Update Lisp functions at top to newest versions.
* internals/internals.texi (A History of Emacs):
* internals/internals.texi (Through Version 18):
* internals/internals.texi (Lucid Emacs):
* internals/internals.texi (XEmacs):
* internals/internals.texi (The XEmacs Split):
* internals/internals.texi (Modules for Other Aspects of the Lisp Interpreter and Object System):
* internals/internals.texi (Introduction to Writing C Code):
* internals/internals.texi (Writing Good Comments):
* internals/internals.texi (Writing Macros):
* internals/internals.texi (Major Textual Changes):
* internals/internals.texi (Great Integral Type Renaming):
* internals/internals.texi (How to Regression-Test):
* internals/internals.texi (Creating a Branch):
* internals/internals.texi (Dynamic Arrays):
* internals/internals.texi (Allocation by Blocks):
* internals/internals.texi (mark_object):
* internals/internals.texi (gc_sweep):
* internals/internals.texi (Byte-Char Position Conversion):
* internals/internals.texi (Searching and Matching):
* internals/internals.texi (Introduction to Multilingual Issues #3):
* internals/internals.texi (Byte Types):
* internals/internals.texi (Different Ways of Seeing Internal Text):
* internals/internals.texi (Buffer Positions):
* internals/internals.texi (Basic internal-format APIs):
* internals/internals.texi (The DFC API):
* internals/internals.texi (General Guidelines for Writing Mule-Aware Code):
* internals/internals.texi (Mule-izing Code):
* internals/internals.texi (Locales):
* internals/internals.texi (More about code pages):
* internals/internals.texi (More about locales):
* internals/internals.texi (Unicode support under Windows):
* internals/internals.texi (The Frame):
* internals/internals.texi (The Non-Client Area):
* internals/internals.texi (The Client Area):
* internals/internals.texi (The Paned Area):
* internals/internals.texi (Text Areas):
* internals/internals.texi (The Displayable Area):
* internals/internals.texi (Event Queues):
* internals/internals.texi (Event Stream Callback Routines):
* internals/internals.texi (Focus Handling):
* internals/internals.texi (Future Work -- Autodetection):
Replace " with ``, '' (not complete, maybe about halfway through).
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Thu, 04 Mar 2010 07:19:03 -0600 |
parents | aa5ed11f473b |
children | 308d34e9f07d |
rev | line source |
---|---|
428 | 1 /* `alloca' standard 4.2 subroutine for 68000's and 16000's and others. |
2 Copyright (C) 1985, 1986, 1988 Free Software Foundation, Inc. | |
3 | |
4 This file is part of XEmacs. | |
5 | |
6 XEmacs is free software; you can redistribute it and/or modify it | |
7 under the terms of the GNU General Public License as published by the | |
8 Free Software Foundation; either version 2, or (at your option) any | |
9 later version. | |
10 | |
11 XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
14 for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with XEmacs; see the file COPYING. If not, write to | |
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
19 Boston, MA 02111-1307, USA. */ | |
20 | |
21 /* Synched up with: FSF 19.30. */ | |
22 | |
23 /* Both 68000 systems I have run this on have had broken versions of alloca. | |
24 Also, I am told that non-berkeley systems do not have it at all. | |
25 So replace whatever system-provided alloca there may be | |
26 on all 68000 systems. */ | |
27 | |
28 #define NOT_C_CODE | |
29 #ifdef emacs | |
30 #include <config.h> | |
31 #else | |
32 #include "config.h" | |
33 #endif | |
34 | |
35 #ifndef HAVE_ALLOCA /* define this to use system's alloca */ | |
36 | |
37 #ifndef m68k | |
38 #ifndef m68000 | |
39 you | |
40 lose!! | |
41 #endif /* m68000 */ | |
42 #endif /* m68k */ | |
43 | |
44 | |
45 #ifdef m68k /* SGS assembler totally different */ | |
46 file "alloca.s" | |
47 global alloca | |
48 alloca: | |
49 mov.l (%sp)+,%a1 # pop return addr from top of stack | |
50 mov.l (%sp)+,%d0 # pop size in bytes from top of stack | |
51 add.l &R%1,%d0 # round size up to long word | |
52 and.l &-4,%d0 # mask out lower two bits of size | |
53 sub.l %d0,%sp # allocate by moving stack pointer | |
54 tst.b P%1(%sp) # stack probe to allocate pages | |
55 mov.l %sp,%a0 # return pointer as pointer | |
56 mov.l %sp,%d0 # return pointer as int to avoid disaster | |
57 add.l &-4,%sp # new top of stack | |
58 jmp (%a1) # not a normal return | |
59 set S%1,64 # safety factor for C compiler scratch | |
60 set R%1,3+S%1 # add to size for rounding | |
61 set P%1,-132 # probe this far below current top of stack | |
62 | |
63 #else /* not m68k */ | |
64 | |
65 #ifdef m68000 | |
66 | |
67 /* Some systems want the _, some do not. Win with both kinds. */ | |
68 .globl _alloca | |
69 _alloca: | |
70 .globl alloca | |
71 alloca: | |
72 movl sp@+,a0 | |
73 movl a7,d0 | |
74 subl sp@,d0 | |
75 andl #~3,d0 | |
76 movl d0,sp | |
77 tstb sp@(0) /* Make stack pages exist */ | |
78 /* Needed on certain systems | |
79 that lack true demand paging */ | |
80 addql #4,d0 | |
81 jmp a0@ | |
82 | |
83 #endif /* m68000 */ | |
84 #endif /* not m68k */ | |
85 | |
86 #endif /* not HAVE_ALLOCA */ |