/[cmucl]/src/lisp/ppc-assem.S
ViewVC logotype

Log of /src/lisp/ppc-assem.S

Parent Directory Parent Directory | Revision Log Revision Log


Links to HEAD: (view) (annotate)
Links to ppc_gencgc_snap_2006-01-06: (view) (annotate)
Sticky Tag:

Revision 1.6.2.4 - (view) (annotate) - [select for diffs]
Mon Dec 19 01:10:14 2005 UTC (8 years, 4 months ago) by rtoy
Branch: ppc_gencgc_branch
CVS Tags: ppc_gencgc_snap_2005-12-17, ppc_gencgc_snap_2006-01-06
Changes since 1.6.2.3: +94 -20 lines
Diff to previous 1.6.2.3 , to branch point 1.6 , to next main 1.19
Merge code from main branch of 2005-12-17 to ppc gencgc branch.  Still
doesn't work of course.

Revision 1.6.2.3 - (view) (annotate) - [select for diffs]
Sun May 15 20:01:31 2005 UTC (8 years, 11 months ago) by rtoy
Branch: ppc_gencgc_branch
Changes since 1.6.2.2: +48 -77 lines
Diff to previous 1.6.2.2 , to branch point 1.6
Merge snapshot-2005-05 to this branch.

Revision 1.6.2.2 - (view) (annotate) - [select for diffs]
Tue Apr 5 03:41:10 2005 UTC (9 years ago) by rtoy
Branch: ppc_gencgc_branch
CVS Tags: ppc_gencgc_snap_2005-05-14
Changes since 1.6.2.1: +40 -2 lines
Diff to previous 1.6.2.1 , to branch point 1.6
Checkin the current code for gencgc.  This is a basic port of sparc
gencgc for ppc.  This is not yet functional.  Allocation seems to
work, but GC does not.  We're just making a checkpoint now.

compiler/ppc/macros.lisp:
o Update allocation macro to support gencgc.  Need a temp-tn as a
  scratch register for inline allocation.
o Update with-fixed-allocation to use allocation macro correctly for
  gencgc.

assembly/ppc/array.lisp:
o Update for new allocation macro for gencgc.

code/ppc-vm.lisp:
o Define *scavenge-read-only-space*

compiler/ppc/alloc.lisp:
compiler/ppc/array.lisp:
compiler/ppc/call.lisp:
o Update to use new allocation macro for gencgc.

compiler/ppc/parms.lisp:
o Add necessary static symbols to support gencgc.

lisp/Config.ppc_darwin:
o Update to build with gencgc as needed.

lisp/Darwin-os.c:
o Update C code for gencgc.  Mostly for checking if pointer is in the
  dynamic space.
o Many debugging printf's enabled.

lisp/gencgc.c:
o Adjust sparc version appropriately for ppc.
o Enable many gencgc self-checks.

lisp/gencgc.h:
o Update PAGE_SIZE for ppc, which is 4K.

lisp/ppc-arch.c:
o Add necessary code to handle the allocation traps for gencgc.
  Basically ported sparc version for ppc.

lisp/ppc-assem.S:
o The way pseudo-atomic is done has been changed, so make the assembly
  code match.  PA is now more like sparc where the LSB is the
  PA-interrupted bit.
o do_pending_interrupt may need work.

lisp/ppc-validate.h:
o Make the READ_ONLY_SPACE_SIZE right.
o Define CONTROL_STACK_END.

lisp/purify.c:
o Enable debugging printfs
o Adjust purify for gencgc, basically copying sparc version.

Revision 1.6.2.1 - (view) (annotate) - [select for diffs]
Sat Feb 12 16:14:15 2005 UTC (9 years, 2 months ago) by rtoy
Branch: ppc_gencgc_branch
Changes since 1.6: +12 -10 lines
Diff to previous 1.6
Change how pseudo-atomic works on Mac OS X.  Instead of using a
separate register for the flag, and using a negative alloc-tn to mean
the pseudo-atomic section was interrupted, we make it more like sparc,
where the pseudo-atomic interrupted is the least signficant bit of
alloc-tn.

* compiler/ppc/macros.lisp:
  o Make the PSEUDO-ATOMIC macro work as desired.

* lisp/ppc-arch.c
  o Set the LSB of alloc-tn when pseudo-atomic is interrupted.
  o Check for the twnei instruction which is now used to see if
    pseudo-atomic was interrupted.

* lisp/ppc/assem.S
  o Use the new pseudo-atomic scheme.

Revision 1.6 - (view) (annotate) - [select for diffs]
Wed Feb 9 00:50:30 2005 UTC (9 years, 2 months ago) by rtoy
Branch: MAIN
Branch point for: ppc_gencgc_branch
Changes since 1.5: +51 -18 lines
Diff to previous 1.5
Save FP register args before calling lazy_resolve_linkage.  (Might not
be necessary, but this is safe.)

Revision 1.5 - (view) (annotate) - [select for diffs]
Sun Feb 6 19:43:15 2005 UTC (9 years, 2 months ago) by rtoy
Branch: MAIN
Changes since 1.4: +117 -0 lines
Diff to previous 1.4
Initial support for linkage-tables on PPC/Darwin.  This is a
relatively straightforward port of the sparc version of
linkage-tables.  Some refinements are probably still needed, as well
as some testing.

Use boot-2005-02-ppc-linkage.lisp to bootstrap this change from the
2005-02 snapshot.

* code/ppc-vm.lisp
  o Add appropriate FOREIGN-SYMBOL-ADDRESS-AUX and FIND-FOREIGN-SYMBOL
    functions for linkage-table.

* compiler/generic/new-genesis.lisp
  o Basically do the same as the sparc port for linkage-tables.
  o need to extern-alien-name on the cold linkages since they C names
    depend on the backend conventions.

* compiler/ppc/alloc.lisp
  o Load "undefined_tramp" appropriately for linkage-tables.

* compiler/ppc/c-call.lisp
  o Define new vops (FOREIGN-SYMBOL-CODE-ADDRESS,
    FOREIGN-SYMBOL-DATA-ADDRESS) for linkage-tables so we can access
    correctly.

* compiler/ppc/cell.lisp
  o Load "closure_tramp" appropriately for linkage-tables
  o Load "undefined_tramp" appropriately for linkage-tables

* compiler/ppc/parms.lisp
  o Put the foreign linkage space start at the end of the static space
    to make it easier to bootstrap.  (We need already mapped memory.)
    We can move this later.
  o Correct TARGET-FOREIGN-LINKAGE-ENTRY-SIZE.
  o Add new static-symbol *linkage-table-data*
  o While were at it, add SPARE-9 and SPARE-0 static symbols so we
    have 10 spares.

* lisp/Config.ppc_darwin
  o Add -DLINKAGE_TABLE to CFLAGS/ASFLAGS if we have linkage-table
    support.

* lisp/Darwin-os.c
  o Add os_dlsym to support linkage-tables.  (This nees a little
    refactoring because we just copied the #defines for dlopen modes.)

* lisp/os-common.c
  o The checking of the linkage tables that is done for sparc almost
    works for ppc, but not quite.  Implement one for ppc.

* lisp/ppc-arch.c
  o Add PPC version of arch_make_jump_entry, arch_make_linkage_entry,
    arch_linkage_entry.

* lisp/ppc-assem.S
  o Add lazy_resolve_linkage to support linkage-tables.  This needs
    some more work.
  o Add undefined_foreign_symbol_trap.  This probably needs work, and
    definitely needs testing.

* lisp/ppc-validate.h
  o Define the start of the linkage space and size.

Revision 1.4 - (view) (annotate) - [select for diffs]
Fri Jul 30 00:53:41 2004 UTC (9 years, 8 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2004-09, snapshot-2004-10, snapshot-2004-11, snapshot-2004-12, snapshot-2005-01, snapshot-2005-02
Changes since 1.3: +11 -0 lines
Diff to previous 1.3
lispregs.h, sparc-lispregs.h:
  o Move the SC_OFFSET_{HI,LO} macros from sparc-lispregs to
    lispregs.h, so they can be used elsewhere.

ppc-lispregs.h:
  o Define the register numbers so they can be used in the SC_OFFSET
    macros.

ppc-assem.S:
  o Document what the byte 18<<2, 0, 0, 24 is supposed to do.
  o Use the SC_OFFSET macros in undefined_tramp instead of hard-wiring
    the register number.

Revision 1.3 - (view) (annotate) - [select for diffs]
Thu Jul 29 15:56:59 2004 UTC (9 years, 8 months ago) by rtoy
Branch: MAIN
Changes since 1.2: +1 -1 lines
Diff to previous 1.2
Fix typo introduced in previous fix.

Revision 1.2 - (view) (annotate) - [select for diffs]
Thu Jul 29 11:52:24 2004 UTC (9 years, 8 months ago) by rtoy
Branch: MAIN
Changes since 1.1: +9 -2 lines
Diff to previous 1.1
(defun foo () (zot)) when compiled and run gave a silly message about
#C(0d0 0d0) failing a typecase.  Then doing a backtrace gave another
error about some negative number not being a positive fixnum.

The former error is caused by a bad definition of undefined_tramp.
The latter error is caused by the debugger not being able to compute
the offset correctly.

(Fixes ported from sbcl.)

Revision 1.1 - (view) (annotate) - [select for diffs]
Tue Jul 13 00:26:22 2004 UTC (9 years, 9 months ago) by pmai
Branch: MAIN
CVS Tags: snapshot-2004-08
First merge of the C side of the OS X/Darwin port.  Besides adding Darwin
versions of all the required things, this commit separates the
interrupt handler proper (now interrupt_handle_now_handler) from the
actual work-horse (interrupt_handle_now), which is now only ever called
from the two interrupt handlers, interrupt_handle_now_handler and
maybe_now_maybe_later.  This follows similar changes in SBCL, and is in
fact needed in order to properly use sigreturn in signal handlers, as
required to work around a problem with the G5.

This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.

  Diffs between and
  Type of Diff should be a

Sort log by:

  ViewVC Help
Powered by ViewVC 1.1.5