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