Skip to content

Commit

Permalink
sh: shared register saving code for sh3/sh4/sh4a
Browse files Browse the repository at this point in the history
This patch reworks the sh3/sh4/sh4a register saving code in
the following ways:
 - break out prepare_stack_save_dsp() from handle_exception()
 - break out save_regs() from handle_exception()
 - the register saving order is unchanged
 - align new functions to fit in cache lines
 - separate exception code from interrupt code
 - keep main code flow in a single cache line per exception vector
 - use bsr/rts for regular functions (save pr first)
 - keep data in one shared cache line (exception_data)
 - document the functions
 - tie in the hp6xx code

Signed-off-by: Magnus Damm <damm@igel.co.jp>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
  • Loading branch information
Magnus Damm authored and Paul Mundt committed Feb 27, 2009
1 parent b233b28 commit 1d015cf
Show file tree
Hide file tree
Showing 2 changed files with 155 additions and 149 deletions.
31 changes: 8 additions & 23 deletions arch/sh/boards/mach-hp6xx/pm_wakeup.S
Original file line number Diff line number Diff line change
Expand Up @@ -10,47 +10,32 @@
#include <linux/linkage.h>
#include <cpu/mmu_context.h>

#define k0 r0
#define k1 r1
#define k2 r2
#define k3 r3
#define k4 r4

/*
* Kernel mode register usage:
* k0 scratch
* k1 scratch
* k2 scratch (Exception code)
* k3 scratch (Return address)
* k4 scratch
* k5 reserved
* k6 Global Interrupt Mask (0--15 << 4)
* k7 CURRENT_THREAD_INFO (pointer to current thread info)
* For more details, please have a look at entry.S
*/

#define k0 r0
#define k1 r1

ENTRY(wakeup_start)
! clear STBY bit
mov #-126, k2
mov #-126, k1
and #127, k0
mov.b k0, @k2
mov.b k0, @k1
! enable refresh
mov.l 5f, k1
mov.w 6f, k0
mov.w k0, @k1
! jump to handler
mov.l 2f, k2
mov.l 3f, k3
mov.l @k2, k2

mov.l 4f, k1
jmp @k1
nop
nop

.align 2
1: .long EXPEVT
2: .long INTEVT
3: .long ret_from_irq
4: .long handle_exception
4: .long handle_interrupt
5: .long 0xffffff68
6: .word 0x0524

Expand Down
Loading

0 comments on commit 1d015cf

Please sign in to comment.