Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
Merge changes from utf16 branch to update to snapshot 2008-12.
Merge Snapshot 2008-12 to this branch. Some tweaks needed in boot-2008-05-cross-unicode-x86.lisp and the Config files. FreeBSD and Darwin/x86 untested, but Linux and Solaris build ok.
Merge in SSE2 changes from sse2-packed-branch (tag sse2-packed-2008-11-12).
Change arch_init everywhere (almost) to take the fpu_mode_t argument. Basically ignored everywhere except for x86.
Always use prototype style function definitions. Consistently use the void keyword to specify empty parameter lists.
Add new interface to ieee754_rem_pio2. No longer need to pass in an array. The new function returns 2 new output values. code/irrat.lisp: o Rename the original %ieee754-rem-pi/2 to %%ieee754-rem-pi-2. o Define the new %ieee754-rem-pi/2 function. This returns the output as two output values instead of an array. o Use the new function. We should have wrapped the original with without-gcing, but we don't have to anymore. lisp/ppc-arch.c: lisp/x86-arch.c: o Implement the new C interface to __ieee754_rem_pio2 lisp/Config.linux_gencgc: o Use -ffloat-store when compiling e_rem_pio2.c and k_rem_pio2.c, just to be sure.
The SAVE_CONTEXT macro expands to meaningful code on the SPARC and is a no-op on all other architectures. Remove SAVE_CONTEXT references in places that are not touched by a SPARC target.
Remove no-op macros.
Remove the unused and bogus check for a valid pc. The information we need is in the DAR register.
Oops. Indent code according to style.
Merge ppc_gencgc_branch to HEAD.
Indent gencgc stuff according to coding style.
Some more changes to gencgc. With these changes, CLEM (Cyrus Harmon's matrix package) will compile. Previously, it was causing gc invariant lossage during compilation. src/compiler/ppc/macros.lisp: o Fix typo in comment. o Change how pseudo-atomic sets and resets the pseudo-atomic bit. Instead of adding/subtracting 4, we "or" in 4, or reset that bit. This is what sparc does. src/lisp/gencgc.c: o Need to define valid_dynamic_space_pointer function for some error-checking (that we aren't currently doing, I think). src/lisp/gencgc.h: o Change PAGE_SIZE to 16k. (Still needs more testing.) src/lisp/ppc-arch.c: o In sigill_handler, we need to return after the allocation trap is handled. Otherwise, we just blow past everthing and call interrupt_handle_now at the end, which isn't what we want.
Merge code from main branch of 2005-12-17 to ppc gencgc branch. Still doesn't work of course.
Add a few debugging printfs.
Indent all source files using GNU indent using the config in .indent.pro.
Merge snapshot-2005-05 to this branch.
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.
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.
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.)
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.
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.
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|