/[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 release-19c-pre1: (view) (annotate)
Sticky Tag:

Revision 1.11 - (view) (annotate) - [select for diffs]
Wed Aug 17 03:40:16 2005 UTC (8 years, 8 months ago) by rtoy
Branch: MAIN
CVS Tags: release-19c, release-19c-base, release-19c-pre1, snapshot-2005-09, snapshot-2005-10
Branch point for: release-19c-branch
Changes since 1.10: +6 -6 lines
Diff to previous 1.10
Change ## to the traditional /**/ so that we can compile CMUCL on
Tiger (10.4) with gcc (4.x) or Jaguar (10.2) gcc (3.x).  Not the best
solution, but I think gcc 4 doesn't handle ## the same as gcc 3.  But
this allows using the default gcc on both platforms to compile CMUCL.

Revision 1.10 - (view) (annotate) - [select for diffs]
Sat Apr 16 02:03:22 2005 UTC (9 years ago) by rtoy
Branch: MAIN
CVS Tags: release-19b-base, release-19b-pre1, release-19b-pre2, snapshot-2005-05, snapshot-2005-06, snapshot-2005-07, snapshot-2005-08
Branch point for: release-19b-branch
Changes since 1.9: +22 -10 lines
Diff to previous 1.9
New pseudo-atomic scheme that looks more like sparc where we use the
LSB of alloc-tn to denote pseudo-atomic interrupted.  We still need
the flag-gn (hardwired to NL3) as a temporary though because we need
somewhere to store the LSB of alloc-tn so we can trap if it's not
zero.

ppc/macros.lisp:
o New pseudo-atomic macro implementing the change.

lisp/ppc-arch.c:
o Update arch_set_pseudo_atomic_interrupted to set the LSB of
  alloc-tn.
o Catch the TWNEI reg_NL3, 0 instruction that denotes a deferred
  interrupt.

lisp/ppc-assem.S:
o Update assembly to code to set and test pseudo-atomic stuff like the
  pseudo-atomic macro does.

Revision 1.9 - (view) (annotate) - [select for diffs]
Fri Apr 8 04:11:02 2005 UTC (9 years ago) by rtoy
Branch: MAIN
Changes since 1.8: +11 -37 lines
Diff to previous 1.8
The ppc port no longer uses the ppc-fun-hack where the
function-pointer and instance-pointer tags were swapped compared to
all other ports.

Remove code for ppc-fun-hack.

Revision 1.8 - (view) (annotate) - [select for diffs]
Fri Mar 18 05:30:50 2005 UTC (9 years, 1 month ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2005-04
Changes since 1.7: +26 -15 lines
Diff to previous 1.7
Port Helmut's trace/known-return to ppc.  Fix some bugs along the way
as well.

lisp/breakpoint.c:
o Enable function-end stuff in compute_offset for DARWIN too.
o Lots of printf's so we can see what's happening on ppc since gdb is
  majorly broken there.

lisp/ppc-assem.S:
o Actually implement the function-end breakpoint template.  Basically
  copied the sparc version, with appropriate mods.

lisp/ppc-arch.c:
o Add TWLLEI_R0 macro to create the appropriate trap instructions that
  we need, and use as appropriate.
o arch_install_breakpoint was actually broken and installed a twllgei
  instruction instead of twllei.
o arch_do_displaced_inst was also broken.  It didn't install the
  after-break-point trap after the breakpoint trap.  And it also
  didn't continue running the code and returned instead.  That's
  wrong.
o The trap_AfterBreakpoint case in sigill_handler was inserting the
  wrong instruction back.  (Probably too much copying of the sparc
  port.)

Revision 1.7 - (view) (annotate) - [select for diffs]
Thu Feb 24 04:07:59 2005 UTC (9 years, 1 month ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2005-03
Changes since 1.6: +11 -1 lines
Diff to previous 1.6
o Fix typo.
o When PPC_FUN_HACK is not defined, the raw_addr slot of an fdefn
  object should be on a word boundary, so change undefined_tramp and
  closure_tramp to be on such a boundary.  Previously, these had a
  lowtag of 1.  With this change, can we get rid of the other parts of
  a function definition that we don't use?

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