Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
|Links to ppc_gencgc_snap_2005-05-14:||(view) (annotate)|
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.
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.
Move the static space location for ppc/darwin. For some reason, OS X 10.3 was putting some malloc'ed areas in the old (bigger) static space, which causes cmucl not to run. Moving the space to 0x10000000 makes it no longer overlap. I don't understand the reason for this. OS X 10.2 doesn't have this problem. Use boot-2004-10-1-ppc.lisp to cross-compile this change.
Increase the size of the read-only, static-space, control-stack, and binding-stack to 128 MB each. Increase the heap to a maximum of 512 MB, but leave the default heap at 128 MB. The control-stack and binding-stack were moved down just below the heap. No bootstrap or cross-compiled required.
Add script to massage nm output to get rid of the U lines that genesis doesn't like.
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.
|Powered by ViewVC 1.1.5|