| /* |
| * arch/sh/kernel/cpu/ubc.S |
| * |
| * Set of management routines for the User Break Controller (UBC) |
| * |
| * Copyright (C) 2002 Paul Mundt |
| * |
| * This program is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License as published by the |
| * Free Software Foundation; either version 2 of the License, or (at your |
| * option) any later version. |
| */ |
| #include <linux/linkage.h> |
| #include <asm/ubc.h> |
| |
| #define STBCR2 0xffc00010 |
| |
| ENTRY(ubc_sleep) |
| mov #0, r0 |
| |
| mov.l 1f, r1 ! Zero out UBC_BBRA .. |
| mov.w r0, @r1 |
| |
| mov.l 2f, r1 ! .. same for BBRB .. |
| mov.w r0, @r1 |
| |
| mov.l 3f, r1 ! .. and again for BRCR. |
| mov.w r0, @r1 |
| |
| mov.w @r1, r0 ! Dummy read BRCR |
| |
| mov.l 4f, r1 ! Set MSTP5 in STBCR2 |
| mov.b @r1, r0 |
| or #0x01, r0 |
| mov.b r0, @r1 |
| |
| mov.b @r1, r0 ! Two dummy reads .. |
| mov.b @r1, r0 |
| |
| rts |
| nop |
| |
| ENTRY(ubc_wakeup) |
| mov.l 4f, r1 ! Clear MSTP5 |
| mov.b @r1, r0 |
| and #0xfe, r0 |
| mov.b r0, @r1 |
| |
| mov.b @r1, r0 ! Two more dummy reads .. |
| mov.b @r1, r0 |
| |
| rts |
| nop |
| |
| 1: .long UBC_BBRA |
| 2: .long UBC_BBRB |
| 3: .long UBC_BRCR |
| 4: .long STBCR2 |
| |