60 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
/*
 | 
						|
 * 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
 | 
						|
 |