1/*
2 * arch/sh/kernel/ubc.S
3 *
4 * Set of management routines for the User Break Controller (UBC)
5 *
6 * Copyright (C) 2002 Paul Mundt
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License as published by the
10 * Free Software Foundation; either version 2 of the License, or (at your
11 * option) any later version.
12 */
13#include <linux/linkage.h>
14#include <asm/ubc.h>
15
16#define STBCR2		0xffc00010
17
18ENTRY(ubc_sleep)
19	mov	#0, r0
20
21	mov.l	1f, r1		! Zero out UBC_BBRA ..
22	mov.w	r0, @r1
23
24	mov.l	2f, r1		! .. same for BBRB ..
25	mov.w	r0, @r1
26
27	mov.l	3f, r1		! .. and again for BRCR.
28	mov.w	r0, @r1
29
30	mov.w	@r1, r0		! Dummy read BRCR
31
32	mov.l	4f, r1		! Set MSTP5 in STBCR2
33	mov.b	@r1, r0
34	or	#0x01, r0
35	mov.b	r0, @r1
36
37	mov.b	@r1, r0		! Two dummy reads ..
38	mov.b	@r1, r0
39
40	rts
41	nop
42
43ENTRY(ubc_wakeup)
44	mov.l	4f, r1		! Clear MSTP5
45	mov.b	@r1, r0
46	and	#0xfe, r0
47	mov.b	r0, @r1
48
49	mov.b	@r1, r0		! Two more dummy reads ..
50	mov.b	@r1, r0
51
52	rts
53	nop
54
551:	.long	UBC_BBRA
562:	.long	UBC_BBRB
573:	.long	UBC_BRCR
584:	.long	STBCR2
59
60