Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
cmucl
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Carl Shapiro
cmucl
Commits
3bfa807a
Commit
3bfa807a
authored
27 years ago
by
dtc
Browse files
Options
Downloads
Patches
Plain Diff
Remove the prep_mind_warp and do_purify code which hasn't been needed
since purify was patched some time ago.
parent
7c7780cf
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
lisp/x86-assem.S
+4
-82
4 additions, 82 deletions
lisp/x86-assem.S
with
4 additions
and
82 deletions
lisp/x86-assem.S
+
4
−
82
View file @
3bfa807a
###
x86
-
assem.S
-*-
Mode
:
Asm
; -*-
/**
*
$Header
:
/
Volumes
/
share2
/
src
/
cmucl
/
cvs2git
/
cvsroot
/
src
/
lisp
/
x86
-
assem
.
S
,
v
1
.
7
1997
/
11
/
2
5
1
7
:
5
9
:
15
dtc
Exp
$
*
$Header
:
/
Volumes
/
share2
/
src
/
cmucl
/
cvs2git
/
cvsroot
/
src
/
lisp
/
x86
-
assem
.
S
,
v
1
.
8
1997
/
11
/
2
8
1
4
:
5
8
:
23
dtc
Exp
$
*
*
Authors
:
Paul
F
.
Werkowski
<
pw
@
snoopy
.
mv
.
com
>
*
Douglas
T
.
Crosher
...
...
@@ -34,22 +34,11 @@
#define align_8byte 3
#define align_16byte 4
#endif
.
text
.
global
GNAME
(
sigtrap_handler
)
.
global
GNAME
(
foreign_function_call_active
)
.
global
GNAME
(
purify
)
.
global
GNAME
(
collect_garbage
)
.
global
GNAME
(
current_control_stack_pointer
)
.
global
GNAME
(
call_into_c
)
.
type
GNAME
(
call_into_c
),
@
function
.
data
Cstack
:
.
long
0
Purify
:
.
long
GNAME
(
purify
)
.
text
.
global
GNAME
(
foreign_function_call_active
)
/*
*
The
C
function
will
preserve
ebx
,
esi
,
edi
,
and
ebp
across
its
*
function
call
-
ebx
is
used
to
save
the
return
lisp
address
.
...
...
@@ -127,81 +116,14 @@ Lfp_rtn_value:
jmp
*%
ebx
.
size
GNAME
(
call_into_c
),
.
-
GNAME
(
call_into_c
)
#ifdef WANT_CGC
.
align
align_16byte
,
0x90
.
type
prep_mind_warp
,
@
function
/*
Purify
wants
to
mess
with
the
control
stack
and
I
can
't really
*
do
that
if
I
am
also
running
on
that
stack
.
So
I
will
transfer
*
to
the
stack
that
was
left
at
initial
call_into_lisp
time
.
*/
prep_mind_warp
:
movl
%
esp
,
GNAME
(
current_control_stack_pointer
)
movl
%
esp
,%
ecx
#
temp
xchgl
%
esp
,
Cstack
#
now
on
C
stack
pushl
8
(%
ecx
)
#
arg
2
pushl
4
(%
ecx
)
#
arg
1
call
*%
eax
#
purify
addl
$
8
,%
esp
#
pop
2
args
xchgl
%
esp
,
Cstack
#
back
to
lisp
stack
/*
Purify
does
not
return
a
fp
value
,
so
don
't need to check,
*
just
setup
the
lisp
stack
for
Lisp
*/
fldz
#
insure
no
regs
are
not
empty
fldz
fldz
fldz
fldz
fldz
fldz
fldz
movl
$
0
,
GNAME
(
foreign_function_call_active
)
/*
Return
*/
jmp
%
ebx
.
size
prep_mind_warp
,
.
-
prep_mind_warp
.
type
GNAME
(
do_purify
),
@
function
.
global
GNAME
(
do_purify
)
/*
This
is
called
from
save
to
purge
dynamic
memory
.
*
*
dtc
:
We
are
now
on
the
lisp
stack
,
but
got
here
via
a
call_into_c
so
we
*
are
in
foreign_function
land
.
Since
a
lisp
image
is
being
saved
and
*
lisp
will
not
be
returned
to
it
's not important to preserve
*
state
which
is
not
significant
to
saving
an
image
.
*
*
Need
to
see
where
any
dynamic
objects
end
up
.
*
This
seems
like
an
incredible
hack
.
Maybe
I
can
fix
purify
.
*/
GNAME
(
do_purify
):
movl
%
esp
,
GNAME
(
current_control_stack_pointer
)
movl
%
esp
,%
ecx
#
temp
xchgl
%
esp
,
Cstack
#
now
on
C
stack
pushl
%
ebp
#
save
old
frame
pointer
movl
%
esp
,%
ebp
#
establish
new
frame
pushl
8
(%
ecx
)
#
arg
2
pushl
4
(%
ecx
)
#
arg
1
call
GNAME
(
purify
)
#
purify
addl
$
8
,%
esp
#
pop
2
args
popl
%
ebp
xchgl
%
esp
,
Cstack
#
back
to
lisp
stack
ret
.
size
GNAME
(
do_purify
),
.
-
GNAME
(
do_purify
)
#endif
.
text
.
global
GNAME
(
call_into_lisp
)
.
type
GNAME
(
call_into_lisp
),
@
function
/*
The
C
conventions
require
that
ebx
,
esi
,
edi
,
and
ebp
be
preserved
across
function
calls
.
*/
/*
The
*
alien
-
stack
*
pointer
is
setup
on
the
first
call_into_lisp
when
the
stack
changes
.
*/
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment