From: Larry V. <re...@us...> - 2009-01-03 14:58:31
Attachments:
hppa-hpux-20090103.tar.bz2
|
hppa-hpux updates for current cvs. Applicable in number order. Binaries at http://qqq.no-ip.org/valkama/software/lisp/sbcl-1.0.24.8-hppa-hpux-binary.tar.bz2 0-raw-slots remove raw slot support workaround on hppa, vop implemented instead 0-stack Thiemo Seufer's MIPS stack allocation work and other things by him ported over. 0-build adding and fixing the hpux-hppa target to the build tools 0-stub call stub needed to switch between hpux-heap-spaces 0-mmap solve overlapping mmap and munmap slices 0-cfix fix what seems to be namespace collision by hpux headers 0-c misc fixes to make it compile and run 0-contrib fix or disable what breaks in contrib, so not everything breaks 0-genesis Updates on how we deal with fixup 0-lisp misc fixed to make hpux-os smile 0-hpux-arch * hpux specific files * more separation of linux stuff versus common stuff (hpux vs linux) 1-vop a ball of mud containing vop updates cheers! |
From: Nikodemus S. <nik...@ra...> - 2009-01-03 16:29:34
|
On Sat, Jan 3, 2009 at 5:59 PM, Larry Valkama <re...@us...> wrote: > hppa-hpux updates for current cvs. Applicable in number order. Thank you! Merged most of these: > 0-raw-slots > remove raw slot support workaround on hppa, vop implemented instead 1.0.24.10 > 0-stack > Thiemo Seufer's MIPS stack allocation work and other things by him > ported over. 1.0.24.11 > 0-build > adding and fixing the hpux-hppa target to the build tools 1.0.24.12 > 0-stub > call stub needed to switch between hpux-heap-spaces I did not merge this yet, as it seems there is some #+hpux/hppa confusion here: Index: src/code/early-impl.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/code/early-impl.lisp,v retrieving revision 1.25 diff -u -r1.25 early-impl.lisp --- src/code/early-impl.lisp 30 Sep 2007 23:18:50 -0000 1.25 +++ src/code/early-impl.lisp 3 Jan 2009 15:51:28 -0000 @@ -33,6 +33,7 @@ ;; pseudo-atomicity too, but they handle it without ;; messing with special variables.) #!+(or x86 x86-64) *pseudo-atomic-bits* + #!+(or hppa) sb!vm::*c-lra* *allow-with-interrupts* *interrupts-enabled* *interrupt-pending* but Index: src/code/toplevel.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/code/toplevel.lisp,v retrieving revision 1.99 diff -u -r1.99 toplevel.lisp --- src/code/toplevel.lisp 17 Dec 2008 17:34:17 -0000 1.99 +++ src/code/toplevel.lisp 3 Jan 2009 15:51:28 -0000 @@ -20,6 +20,7 @@ (progn (defvar sb!vm::*current-catch-block*) (defvar sb!vm::*current-unwind-protect-block*) + #!+hpux (defvar sb!vm::*c-lra*) (defvar *free-interrupt-context-index*)) , etc. Should the stub-stuff be only on hpux, or for all hppaen? > 0-mmap > solve overlapping mmap and munmap slices 1.0.24.13 > 0-cfix > fix what seems to be namespace collision by hpux headers 1.0.24.14 > 0-c > misc fixes to make it compile and run Not merged yet. This patch consist of several repeats of Index: src/runtime/breakpoint.c =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/breakpoint.c,v retrieving revision 1.30 diff -u -r1.30 breakpoint.c --- src/runtime/breakpoint.c 19 Feb 2008 10:18:07 -0000 1.30 +++ src/runtime/breakpoint.c 3 Jan 2009 16:03:04 -0000 @@ -104,7 +104,7 @@ else { unsigned long code_start; struct code *codeptr = (struct code *)native_pointer(code); -#ifdef parisc +#ifdef LISP_FEATURE_HPPA unsigned long pc = *os_context_pc_addr(context) & ~3; #else unsigned long pc = *os_context_pc_addr(context); which seem like they might better be handled /in/ os_context_pc_addr -- or if that is not feasible, os_context_aligned_pc_addr or something. (Not that I quite understand why the PC needs to be aligned separately...) > 0-contrib > fix or disable what breaks in contrib, so not everything breaks 1.0.24.15 > 0-genesis > Updates on how we deal with fixup 1.0.24.16 > 0-lisp > misc fixed to make hpux-os smile 1.0.24.17 > 0-hpux-arch > * hpux specific files > * more separation of linux stuff versus common stuff (hpux vs linux) 1.0.24.18 > 1-vop > a ball of mud containing vop updates Pending while waiting for comments on the two patches above. Cheers, -- Nikodemus |
From: Larry V. <re...@us...> - 2009-01-03 20:17:45
|
> On Sat, Jan 3, 2009 at 5:59 PM, Larry Valkama > <re...@us...> wrote: > >> hppa-hpux updates for current cvs. Applicable in number order. > > Thank you! Merged most of these: > >> 0-raw-slots >> remove raw slot support workaround on hppa, vop implemented instead > > 1.0.24.10 > >> 0-stack >> Thiemo Seufer's MIPS stack allocation work and other things by him >> ported over. > > 1.0.24.11 > >> 0-build >> adding and fixing the hpux-hppa target to the build tools > > 1.0.24.12 > >> 0-stub >> call stub needed to switch between hpux-heap-spaces > > I did not merge this yet, as it seems there is some #+hpux/hppa confusion here: > > Index: src/code/early-impl.lisp > =================================================================== > RCS file: /cvsroot/sbcl/sbcl/src/code/early-impl.lisp,v > retrieving revision 1.25 > diff -u -r1.25 early-impl.lisp > --- src/code/early-impl.lisp 30 Sep 2007 23:18:50 -0000 1.25 > +++ src/code/early-impl.lisp 3 Jan 2009 15:51:28 -0000 > @@ -33,6 +33,7 @@ > ;; pseudo-atomicity too, but they handle it without > ;; messing with special variables.) > #!+(or x86 x86-64) *pseudo-atomic-bits* > + #!+(or hppa) sb!vm::*c-lra* > *allow-with-interrupts* > *interrupts-enabled* > *interrupt-pending* > > but > > Index: src/code/toplevel.lisp > =================================================================== > RCS file: /cvsroot/sbcl/sbcl/src/code/toplevel.lisp,v > retrieving revision 1.99 > diff -u -r1.99 toplevel.lisp > --- src/code/toplevel.lisp 17 Dec 2008 17:34:17 -0000 1.99 > +++ src/code/toplevel.lisp 3 Jan 2009 15:51:28 -0000 > @@ -20,6 +20,7 @@ > (progn > (defvar sb!vm::*current-catch-block*) > (defvar sb!vm::*current-unwind-protect-block*) > + #!+hpux (defvar sb!vm::*c-lra*) > (defvar *free-interrupt-context-index*)) > > , etc. > > Should the stub-stuff be only on hpux, or for all hppaen? > >> 0-mmap >> solve overlapping mmap and munmap slices > > 1.0.24.13 > >> 0-cfix >> fix what seems to be namespace collision by hpux headers > > 1.0.24.14 > >> 0-c >> misc fixes to make it compile and run > > Not merged yet. This patch consist of several repeats of > > Index: src/runtime/breakpoint.c > =================================================================== > RCS file: /cvsroot/sbcl/sbcl/src/runtime/breakpoint.c,v > retrieving revision 1.30 > diff -u -r1.30 breakpoint.c > --- src/runtime/breakpoint.c 19 Feb 2008 10:18:07 -0000 1.30 > +++ src/runtime/breakpoint.c 3 Jan 2009 16:03:04 -0000 > @@ -104,7 +104,7 @@ > else { > unsigned long code_start; > struct code *codeptr = (struct code *)native_pointer(code); > -#ifdef parisc > +#ifdef LISP_FEATURE_HPPA > unsigned long pc = *os_context_pc_addr(context) & ~3; > #else > unsigned long pc = *os_context_pc_addr(context); > > which seem like they might better be handled /in/ os_context_pc_addr -- > or if that is not feasible, os_context_aligned_pc_addr or something. > > (Not that I quite understand why the PC needs to be aligned separately...) > >> 0-contrib >> fix or disable what breaks in contrib, so not everything breaks > > 1.0.24.15 > >> 0-genesis >> Updates on how we deal with fixup > > 1.0.24.16 > >> 0-lisp >> misc fixed to make hpux-os smile > > 1.0.24.17 > >> 0-hpux-arch >> * hpux specific files >> * more separation of linux stuff versus common stuff (hpux vs linux) > > 1.0.24.18 > >> 1-vop >> a ball of mud containing vop updates > > Pending while waiting for comments on the two patches above. > > Cheers, > > -- Nikodemus > Thanks alot! Remade the stub so it is only for hpux. hppa-linux shouldn't need it. The confusion in chenegc.c and breakpoint.c is removed, wasn't needed. I thought calculation of code would get wrong but testing without it on hardware confirms it works without. The 1-vop is a mix of the old hppa-code and the mips backend. Cheers. |
From: Nikodemus S. <nik...@ra...> - 2009-01-04 07:50:03
|
On Sat, Jan 3, 2009 at 11:18 PM, Larry Valkama <re...@us...> wrote: > Remade the stub so it is only for hpux. hppa-linux shouldn't need it. > The confusion in chenegc.c and breakpoint.c is removed, wasn't needed. I > thought calculation of code would get wrong but testing without it on > hardware confirms it works without. > > The 1-vop is a mix of the old hppa-code and the mips backend. Thanks! Everything should now (as of 1.0.24.22) be merged -- given that, how would you characterize the status of the HPUX port? I added a couple of apparently missing #+hpuxs into the 0-stub2 patch: I hope they were right... Additionally, that patch contained the following: +#ifdef LISP_FEATURE_HPUX + return_from_lisp_stub = (void *) ((char *)*((unsigned long *) + ((char *)initial_function - 1)) + 23); +#endif I merged this as well, but I would strongly prefer a if the magic numbers here could be replaced with named constants or defines. Cheers, -- Nikodemus |
From: Larry V. <re...@us...> - 2009-01-04 17:41:56
|
> On Sat, Jan 3, 2009 at 11:18 PM, Larry Valkama > <re...@us...> wrote: > >> Remade the stub so it is only for hpux. hppa-linux shouldn't need it. >> The confusion in chenegc.c and breakpoint.c is removed, wasn't needed. I >> thought calculation of code would get wrong but testing without it on >> hardware confirms it works without. >> >> The 1-vop is a mix of the old hppa-code and the mips backend. > > Thanks! Everything should now (as of 1.0.24.22) be merged -- given > that, how would you characterize the status of the HPUX port? > > I added a couple of apparently missing #+hpuxs into the 0-stub2 patch: > I hope they were right... > > Additionally, that patch contained the following: > > +#ifdef LISP_FEATURE_HPUX > + return_from_lisp_stub = (void *) ((char *)*((unsigned long *) > + ((char *)initial_function - 1)) + 23); > +#endif > > I merged this as well, but I would strongly prefer a if the magic > numbers here could be replaced with named constants or defines. > > Cheers, > > -- Nikodemus > Thanks alot for the commit! Small fix in src/compiler/hppa/system.lisp needed: #!+hpux <-- was #+hpux (define-vop (setup-return-from-lisp-stub) What I've done with it so far: Load swank and slime can connect remotely. Install, load and tried cl-ppcre using asdf/asdf-install. Havn't dared to cd tests yet. There is still stuff left to be done. For example SIMPLE-ERROR will sigsegv and retreat to repl instead of invoking debugger. Also (DEBUG some-high-number) will sigsegv. Am sure tracing and ldb wont work. cheers |
From: Larry V. <re...@us...> - 2009-01-05 16:22:11
Attachments:
patch
|
>> On Sat, Jan 3, 2009 at 11:18 PM, Larry Valkama >> <re...@us...> wrote: >> >>> Remade the stub so it is only for hpux. hppa-linux shouldn't need it. >>> The confusion in chenegc.c and breakpoint.c is removed, wasn't needed. I >>> thought calculation of code would get wrong but testing without it on >>> hardware confirms it works without. >>> >>> The 1-vop is a mix of the old hppa-code and the mips backend. >> Thanks! Everything should now (as of 1.0.24.22) be merged -- given >> that, how would you characterize the status of the HPUX port? >> >> I added a couple of apparently missing #+hpuxs into the 0-stub2 patch: >> I hope they were right... >> >> Additionally, that patch contained the following: >> >> +#ifdef LISP_FEATURE_HPUX >> + return_from_lisp_stub = (void *) ((char *)*((unsigned long *) >> + ((char *)initial_function - 1)) + 23); >> +#endif >> >> I merged this as well, but I would strongly prefer a if the magic >> numbers here could be replaced with named constants or defines. >> >> Cheers, >> >> -- Nikodemus >> > Thanks alot for the commit! > > Small fix in src/compiler/hppa/system.lisp needed: > > #!+hpux <-- was #+hpux > (define-vop (setup-return-from-lisp-stub) > > What I've done with it so far: > Load swank and slime can connect remotely. > Install, load and tried cl-ppcre using asdf/asdf-install. > Havn't dared to cd tests yet. > > There is still stuff left to be done. For example SIMPLE-ERROR will > sigsegv and retreat to repl instead of invoking debugger. > Also (DEBUG some-high-number) will sigsegv. > Am sure tracing and ldb wont work. > > cheers > fixed and tested some more cleanups on hppa-hpux: * removed unneeded nops * explanation of magic numbers (but cant substitute them). cheers, /larry |
From: Nikodemus S. <nik...@ra...> - 2009-01-10 11:19:31
|
On Mon, Jan 5, 2009 at 7:22 PM, Larry Valkama <re...@us...> wrote: > fixed and tested some more cleanups on hppa-hpux: > * removed unneeded nops > * explanation of magic numbers (but cant substitute them). Thank you, merged as 1.0.24.30. I also took the liberty of changing occurances FIX-lav to FIXME-lav for better overall greppability, and adding semicolons to a bunch of comments to conform to the way they are generally used in SBCL: ;;;; Four for a section heading. ;;; Three for a block comment before a toplevel form, applying to that ;;; toplevel form. (Sometimes to multiple toplevel forms.) (defun foo () (bar) ;; Two for comment inside a body on it's own ;; line or few. (quux) (zot) ; One for a trailing comment. t) > #ifdef LISP_FEATURE_HPUX > + /* -1 = CLOSURE_FUN_OFFSET, 23 = SIMPLE_FUN_CODE_OFFSET, we are not in LANGUAGE_ASSEMBLY > + so we cant reach them. */ > return_from_lisp_stub = (void *) ((char *)*((unsigned long *) > - ((char *)initial_function - 1)) + 23); > + ((char *)initial_function + -1)) + 23); > #endif I wonder if having those defines available outside #define LANGUAGE_ASSEMBLY would be a good thing. I think I've wanted them myself on an occasion or two. Cheers, -- Nikodemus |