|
|
|
@ -32,6 +32,12 @@ trap_from_kernel:
|
|
|
|
|
* k1 = old stack pointer
|
|
|
|
|
* sp = kernel stack */
|
|
|
|
|
|
|
|
|
|
#ifdef board_thinpad
|
|
|
|
|
#define TRAPFRAME_SIZE 304
|
|
|
|
|
#else
|
|
|
|
|
#define TRAPFRAME_SIZE 176
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
# align stack pointer
|
|
|
|
|
andi k0, sp, 0xf
|
|
|
|
|
beqz k0, sp_aligned
|
|
|
|
@ -39,18 +45,12 @@ trap_from_kernel:
|
|
|
|
|
|
|
|
|
|
la k0, 0xfffffff0
|
|
|
|
|
and k0, sp, k0
|
|
|
|
|
sw sp, -176(k0)
|
|
|
|
|
sw sp, -TRAPFRAME_SIZE(k0)
|
|
|
|
|
move sp, k0
|
|
|
|
|
|
|
|
|
|
sp_aligned:
|
|
|
|
|
# allocate 38 / 70 words for trapframe + 6 extra words
|
|
|
|
|
|
|
|
|
|
#ifdef board_thinpad
|
|
|
|
|
#define TRAPFRAME_SIZE 304
|
|
|
|
|
#else
|
|
|
|
|
#define TRAPFRAME_SIZE 176
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
addiu sp, sp, -TRAPFRAME_SIZE
|
|
|
|
|
|
|
|
|
|
# save general registers
|
|
|
|
|