Update trapframe to be consistent with the changes made to regnum.h. This
should fix the booting problems people have been seeing.
This commit is contained in:
parent
e04d23c5df
commit
b6d3001ad9
@ -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;
|
||||
|
@ -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
|
||||
|
@ -77,6 +77,16 @@ struct db_variable db_regs[] = {
|
||||
{ "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[] = {
|
||||
{ "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 },
|
||||
|
@ -363,10 +363,10 @@ cpu_fetch_syscall_args(struct thread *td, struct syscall_args *sa)
|
||||
/*
|
||||
* Non-o32 ABIs support more arguments in registers.
|
||||
*/
|
||||
sa->args[3] = locr0->t4;
|
||||
sa->args[4] = locr0->t5;
|
||||
sa->args[5] = locr0->t6;
|
||||
sa->args[6] = locr0->t7;
|
||||
sa->args[3] = locr0->t0;
|
||||
sa->args[4] = locr0->t1;
|
||||
sa->args[5] = locr0->t2;
|
||||
sa->args[6] = locr0->t3;
|
||||
nsaved += 4;
|
||||
#ifdef COMPAT_FREEBSD32
|
||||
}
|
||||
@ -389,10 +389,10 @@ cpu_fetch_syscall_args(struct thread *td, struct syscall_args *sa)
|
||||
/*
|
||||
* Non-o32 ABIs support more arguments in registers.
|
||||
*/
|
||||
sa->args[4] = locr0->t4;
|
||||
sa->args[5] = locr0->t5;
|
||||
sa->args[6] = locr0->t6;
|
||||
sa->args[7] = locr0->t7;
|
||||
sa->args[4] = locr0->t0;
|
||||
sa->args[5] = locr0->t1;
|
||||
sa->args[6] = locr0->t2;
|
||||
sa->args[7] = locr0->t3;
|
||||
nsaved += 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);
|
||||
|
||||
|
@ -613,6 +613,16 @@ dump_trapframe(struct trapframe *trapframe)
|
||||
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 *trapframe)
|
||||
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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user