Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[linux-2.6] / arch / sh / boards / mach-hp6xx / pm_wakeup.S
1 /*
2  * Copyright (c) 2006 Andriy Skulysh <askulsyh@gmail.com>
3  *
4  * This file is subject to the terms and conditions of the GNU General Public
5  * License.  See the file "COPYING" in the main directory of this archive
6  * for more details.
7  *
8  */
9
10 #include <linux/linkage.h>
11 #include <cpu/mmu_context.h>
12
13 #define k0      r0
14 #define k1      r1
15 #define k2      r2
16 #define k3      r3
17 #define k4      r4
18
19 /*
20  * Kernel mode register usage:
21  *      k0      scratch
22  *      k1      scratch
23  *      k2      scratch (Exception code)
24  *      k3      scratch (Return address)
25  *      k4      scratch
26  *      k5      reserved
27  *      k6      Global Interrupt Mask (0--15 << 4)
28  *      k7      CURRENT_THREAD_INFO (pointer to current thread info)
29  */
30
31 ENTRY(wakeup_start)
32 ! clear STBY bit
33         mov     #-126, k2
34         and     #127, k0
35         mov.b   k0, @k2
36 ! enable refresh
37         mov.l   5f, k1
38         mov.w   6f, k0
39         mov.w   k0, @k1
40 ! jump to handler
41         mov.l   2f, k2
42         mov.l   3f, k3
43         mov.l   @k2, k2
44
45         mov.l   4f, k1
46         jmp     @k1
47         nop
48
49         .align  2
50 1:      .long   EXPEVT
51 2:      .long   INTEVT
52 3:      .long   ret_from_irq
53 4:      .long   handle_exception
54 5:      .long   0xffffff68
55 6:      .word   0x0524
56
57 ENTRY(wakeup_end)
58         nop