Date: Tue, 23 Apr 2013 19:40:44 -0700 From: Juli Mallett <jmallett@FreeBSD.org> To: Warner Losh <imp@freebsd.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r249790 - in head/sys/mips: include mips Message-ID: <CACVs6=8hrE3uQSfBPv=MXcr%2B9-WKrTP7XonZx15H4imk8DPyww@mail.gmail.com> In-Reply-To: <201304230938.r3N9cIV0047961@svn.freebsd.org> References: <201304230938.r3N9cIV0047961@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Also: the comment says that the trapframe layout must match regnum.h =E2=80= =94 I don't think that's really true. Why can't we just store things in the trapframe in whatever order we want? Why do they need to match the register numbers. More worrying, however, is that looking at regnum.h brought to my attention the fact that Juniper filed the original license off of the file, and placed a copyright without a license. The same file seems to have been published by SGI under a proprietary/unpublished copyright and under the GPL for Linux, but it's not clear to me that there's a public domain copy that it would have been acceptable for Juniper to assert sole copyright over. It's also definitely unacceptable that Juniper didn't provide a license for that file. I don't see why we shouldn't just replace regnum.h with the NetBSD version, and merge that to all active branches. Since you're trying to update these headers, Warner, it would be great if you could do that. I wish the project had never accepted any code for the MIPS port from Juniper, given their penchant (like OpenBSD's MIPS port =E2=80=94 what is i= t about MIPS ports?) for filing licenses off and placing on their own (or in Juniper's case, none at all.) That's just not acceptable for an open-source project. Juli. On Tue, Apr 23, 2013 at 2:38 AM, Warner Losh <imp@freebsd.org> wrote: > Author: imp > Date: Tue Apr 23 09:38:18 2013 > New Revision: 249790 > URL: http://svnweb.freebsd.org/changeset/base/249790 > > Log: > Update trapframe to be consistent with the changes made to regnum.h. Th= is > should fix the booting problems people have been seeing. > > Modified: > head/sys/mips/include/frame.h > head/sys/mips/include/regnum.h > head/sys/mips/mips/db_interface.c > head/sys/mips/mips/trap.c > head/sys/mips/mips/vm_machdep.c > > Modified: head/sys/mips/include/frame.h > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/sys/mips/include/frame.h Tue Apr 23 06:37:50 2013 (= r249789) > +++ head/sys/mips/include/frame.h Tue Apr 23 09:38:18 2013 (= r249790) > @@ -37,6 +37,8 @@ > #ifndef _MACHINE_FRAME_H_ > #define _MACHINE_FRAME_H_ > > +/* Note: This must also match regnum.h and regdef.h */ > + > struct trapframe { > register_t zero; > register_t ast; > @@ -46,6 +48,16 @@ struct trapframe { > register_t a1; > register_t a2; > register_t a3; > +#if defined(__mips_n32) || defined(__mips_n64) > + register_t a4; > + register_t a5; > + register_t a6; > + register_t a7; > + register_t t0; > + register_t t1; > + register_t t2; > + register_t t3; > +#else > register_t t0; > register_t t1; > register_t t2; > @@ -54,6 +66,7 @@ struct trapframe { > register_t t5; > register_t t6; > register_t t7; > +#endif > register_t s0; > register_t s1; > register_t s2; > > Modified: head/sys/mips/include/regnum.h > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/sys/mips/include/regnum.h Tue Apr 23 06:37:50 2013 (= r249789) > +++ head/sys/mips/include/regnum.h Tue Apr 23 09:38:18 2013 (= r249790) > @@ -87,10 +87,10 @@ > #define T1 9 > #define T2 10 > #define T3 11 > -#define TA0 12 > -#define TA1 13 > -#define TA2 14 > -#define TA3 15 > +#define T4 12 > +#define T5 13 > +#define T6 14 > +#define T7 15 > #endif > #define S0 16 > #define S1 17 > > Modified: head/sys/mips/mips/db_interface.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/sys/mips/mips/db_interface.c Tue Apr 23 06:37:50 2013 (= r249789) > +++ head/sys/mips/mips/db_interface.c Tue Apr 23 09:38:18 2013 (= r249790) > @@ -77,6 +77,16 @@ struct db_variable db_regs[] =3D { > { "a1", DB_OFFSET(a1), db_frame }, > { "a2", DB_OFFSET(a2), db_frame }, > { "a3", DB_OFFSET(a3), db_frame }, > +#if defined(__mips_n32) || defined(__mips_n64) > + { "a4", DB_OFFSET(a4), db_frame }, > + { "a5", DB_OFFSET(a5), db_frame }, > + { "a6", DB_OFFSET(a6), db_frame }, > + { "a7", DB_OFFSET(a7), db_frame }, > + { "t0", DB_OFFSET(t0), db_frame }, > + { "t1", DB_OFFSET(t1), db_frame }, > + { "t2", DB_OFFSET(t2), db_frame }, > + { "t3", DB_OFFSET(t3), db_frame }, > +#else > { "t0", DB_OFFSET(t0), db_frame }, > { "t1", DB_OFFSET(t1), db_frame }, > { "t2", DB_OFFSET(t2), db_frame }, > @@ -85,6 +95,7 @@ struct db_variable db_regs[] =3D { > { "t5", DB_OFFSET(t5), db_frame }, > { "t6", DB_OFFSET(t6), db_frame }, > { "t7", DB_OFFSET(t7), db_frame }, > +#endif > { "s0", DB_OFFSET(s0), db_frame }, > { "s1", DB_OFFSET(s1), db_frame }, > { "s2", DB_OFFSET(s2), db_frame }, > > Modified: head/sys/mips/mips/trap.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/sys/mips/mips/trap.c Tue Apr 23 06:37:50 2013 (r249789) > +++ head/sys/mips/mips/trap.c Tue Apr 23 09:38:18 2013 (r249790) > @@ -363,10 +363,10 @@ cpu_fetch_syscall_args(struct thread *td > /* > * Non-o32 ABIs support more arguments in registe= rs. > */ > - sa->args[3] =3D locr0->t4; > - sa->args[4] =3D locr0->t5; > - sa->args[5] =3D locr0->t6; > - sa->args[6] =3D locr0->t7; > + sa->args[3] =3D locr0->t0; > + sa->args[4] =3D locr0->t1; > + sa->args[5] =3D locr0->t2; > + sa->args[6] =3D locr0->t3; > nsaved +=3D 4; > #ifdef COMPAT_FREEBSD32 > } > @@ -389,10 +389,10 @@ cpu_fetch_syscall_args(struct thread *td > /* > * Non-o32 ABIs support more arguments in registe= rs. > */ > - sa->args[4] =3D locr0->t4; > - sa->args[5] =3D locr0->t5; > - sa->args[6] =3D locr0->t6; > - sa->args[7] =3D locr0->t7; > + sa->args[4] =3D locr0->t0; > + sa->args[5] =3D locr0->t1; > + sa->args[6] =3D locr0->t2; > + sa->args[7] =3D locr0->t3; > nsaved +=3D 4; > #ifdef COMPAT_FREEBSD32 > } > @@ -1294,12 +1294,19 @@ log_frame_dump(struct trapframe *frame) > log(LOG_ERR, "\ta0: %#jx\ta1: %#jx\ta2: %#jx\ta3: %#jx\n", > (intmax_t)frame->a0, (intmax_t)frame->a1, (intmax_t)frame->a2= , (intmax_t)frame->a3); > > +#if defined(__mips_n32) || defined(__mips_n64) > + log(LOG_ERR, "\ta4: %#jx\ta5: %#jx\ta6: %#jx\ta6: %#jx\n", > + (intmax_t)frame->a4, (intmax_t)frame->a5, (intmax_t)frame->a6= , (intmax_t)frame->a7); > + > + log(LOG_ERR, "\tt0: %#jx\tt1: %#jx\tt2: %#jx\tt3: %#jx\n", > + (intmax_t)frame->t0, (intmax_t)frame->t1, (intmax_t)frame->t2= , (intmax_t)frame->t3); > +#else > log(LOG_ERR, "\tt0: %#jx\tt1: %#jx\tt2: %#jx\tt3: %#jx\n", > (intmax_t)frame->t0, (intmax_t)frame->t1, (intmax_t)frame->t2= , (intmax_t)frame->t3); > > log(LOG_ERR, "\tt4: %#jx\tt5: %#jx\tt6: %#jx\tt7: %#jx\n", > (intmax_t)frame->t4, (intmax_t)frame->t5, (intmax_t)frame->t6= , (intmax_t)frame->t7); > - > +#endif > log(LOG_ERR, "\tt8: %#jx\tt9: %#jx\ts0: %#jx\ts1: %#jx\n", > (intmax_t)frame->t8, (intmax_t)frame->t9, (intmax_t)frame->s0= , (intmax_t)frame->s1); > > @@ -1334,13 +1341,19 @@ trap_frame_dump(struct trapframe *frame) > > printf("\ta0: %#jx\ta1: %#jx\ta2: %#jx\ta3: %#jx\n", > (intmax_t)frame->a0, (intmax_t)frame->a1, (intmax_t)frame->a2= , (intmax_t)frame->a3); > +#if defined(__mips_n32) || defined(__mips_n64) > + printf("\ta4: %#jx\ta5: %#jx\ta6: %#jx\ta7: %#jx\n", > + (intmax_t)frame->a4, (intmax_t)frame->a5, (intmax_t)frame->a6= , (intmax_t)frame->a7); > > printf("\tt0: %#jx\tt1: %#jx\tt2: %#jx\tt3: %#jx\n", > (intmax_t)frame->t0, (intmax_t)frame->t1, (intmax_t)frame->t2= , (intmax_t)frame->t3); > +#else > + printf("\tt0: %#jx\tt1: %#jx\tt2: %#jx\tt3: %#jx\n", > + (intmax_t)frame->t0, (intmax_t)frame->t1, (intmax_t)frame->t2= , (intmax_t)frame->t3); > > printf("\tt4: %#jx\tt5: %#jx\tt6: %#jx\tt7: %#jx\n", > (intmax_t)frame->t4, (intmax_t)frame->t5, (intmax_t)frame->t6= , (intmax_t)frame->t7); > - > +#endif > printf("\tt8: %#jx\tt9: %#jx\ts0: %#jx\ts1: %#jx\n", > (intmax_t)frame->t8, (intmax_t)frame->t9, (intmax_t)frame->s0= , (intmax_t)frame->s1); > > > Modified: head/sys/mips/mips/vm_machdep.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/sys/mips/mips/vm_machdep.c Tue Apr 23 06:37:50 2013 (= r249789) > +++ head/sys/mips/mips/vm_machdep.c Tue Apr 23 09:38:18 2013 (= r249790) > @@ -613,6 +613,16 @@ dump_trapframe(struct trapframe *trapfra > DB_PRINT_REG(trapframe, a1); > DB_PRINT_REG(trapframe, a2); > DB_PRINT_REG(trapframe, a3); > +#if defined(__mips_n32) || defined(__mips_n64) > + DB_PRINT_REG(trapframe, a4); > + DB_PRINT_REG(trapframe, a5); > + DB_PRINT_REG(trapframe, a6); > + DB_PRINT_REG(trapframe, a7); > + DB_PRINT_REG(trapframe, t0); > + DB_PRINT_REG(trapframe, t1); > + DB_PRINT_REG(trapframe, t2); > + DB_PRINT_REG(trapframe, t3); > +#else > DB_PRINT_REG(trapframe, t0); > DB_PRINT_REG(trapframe, t1); > DB_PRINT_REG(trapframe, t2); > @@ -621,6 +631,7 @@ dump_trapframe(struct trapframe *trapfra > DB_PRINT_REG(trapframe, t5); > DB_PRINT_REG(trapframe, t6); > DB_PRINT_REG(trapframe, t7); > +#endif > DB_PRINT_REG(trapframe, s0); > DB_PRINT_REG(trapframe, s1); > DB_PRINT_REG(trapframe, s2);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CACVs6=8hrE3uQSfBPv=MXcr%2B9-WKrTP7XonZx15H4imk8DPyww>