mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 14:30:50 +00:00 
			
		
		
		
	 2f2a2132ff
			
		
	
	
		2f2a2132ff
		
	
	
	
	
		
			
			MN10300 arch headers and place them instead in the same directories as contain the .c files for the processor and unit implementations. This permits the symlinks include/asm/proc and include/asm/unit to be dispensed with. This does, however, require that #include <asm/proc/xxx.h> be converted to #include <proc/xxx.h> and similarly for asm/unit -> unit. Signed-off-by: David Howells <dhowells@redhat.com>
		
			
				
	
	
		
			94 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| ###############################################################################
 | |
| #
 | |
| # MN10300 On-chip serial Rx interrupt handler for GDB stub I/O
 | |
| #
 | |
| # Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
 | |
| # Written by David Howells (dhowells@redhat.com)
 | |
| #
 | |
| # This program is free software; you can redistribute it and/or
 | |
| # modify it under the terms of the GNU General Public Licence
 | |
| # as published by the Free Software Foundation; either version
 | |
| # 2 of the Licence, or (at your option) any later version.
 | |
| #
 | |
| ###############################################################################
 | |
| #include <linux/sys.h>
 | |
| #include <linux/linkage.h>
 | |
| #include <asm/smp.h>
 | |
| #include <asm/thread_info.h>
 | |
| #include <asm/cpu-regs.h>
 | |
| #include <asm/frame.inc>
 | |
| #include <asm/intctl-regs.h>
 | |
| #include <unit/serial.h>
 | |
| #include "mn10300-serial.h"
 | |
| 
 | |
| 	.text
 | |
| 
 | |
| ###############################################################################
 | |
| #
 | |
| # GDB stub serial receive interrupt entry point
 | |
| # - intended to run at interrupt priority 0
 | |
| #
 | |
| ###############################################################################
 | |
| 	.globl	gdbstub_io_rx_handler
 | |
| 	.type	gdbstub_io_rx_handler,@function
 | |
| gdbstub_io_rx_handler:
 | |
| 	movm	[d2,d3,a2,a3],(sp)
 | |
| 
 | |
| 	mov	(gdbstub_rx_inp),a3
 | |
| gdbstub_io_rx_more:
 | |
| 	mov	a3,a2
 | |
| 	add	2,a3
 | |
| 	and	PAGE_SIZE_asm-1,a3
 | |
| 	mov	(gdbstub_rx_outp),d3
 | |
| 	cmp	a3,d3
 | |
| 	beq	gdbstub_io_rx_overflow
 | |
| 
 | |
| 	movbu	(SCgSTR),d3
 | |
| 	btst	SC01STR_RBF,d3
 | |
| 	beq	gdbstub_io_rx_done
 | |
| 	movbu	(SCgRXB),d2
 | |
| 	movbu	d3,(gdbstub_rx_buffer+1,a2)
 | |
| 	movbu	d2,(gdbstub_rx_buffer,a2)
 | |
| 	mov	a3,(gdbstub_rx_inp)
 | |
| 	bra	gdbstub_io_rx_more
 | |
| 
 | |
| gdbstub_io_rx_done:
 | |
| 	mov	GxICR_DETECT,d2
 | |
| 	movbu	d2,(GxICR(SCgRXIRQ))	# ACK the interrupt
 | |
| 	movhu	(GxICR(SCgRXIRQ)),d2	# flush
 | |
| 
 | |
| 	movm	(sp),[d2,d3,a2,a3]
 | |
| 	bset	0x01,(gdbstub_busy)
 | |
| 	beq	gdbstub_io_rx_enter
 | |
| 	rti
 | |
| 
 | |
| gdbstub_io_rx_overflow:
 | |
| 	bset	0x01,(gdbstub_rx_overflow)
 | |
| 	bra	gdbstub_io_rx_done
 | |
| 
 | |
| ###############################################################################
 | |
| #
 | |
| # debugging interrupt - enter the GDB stub proper
 | |
| #
 | |
| ###############################################################################
 | |
| gdbstub_io_rx_enter:
 | |
| 	or	EPSW_IE|EPSW_IM_1,epsw
 | |
| 	add	-4,sp
 | |
| 	SAVE_ALL
 | |
| 
 | |
| 	mov	0xffffffff,d0
 | |
| 	mov	d0,(REG_ORIG_D0,fp)
 | |
| 	mov	0x280,d1
 | |
| 
 | |
| 	mov	fp,d0
 | |
| 	call	gdbstub_rx_irq[],0	# gdbstub_io_rx_irq(regs,excep)
 | |
| 
 | |
| 	and	~EPSW_IE,epsw
 | |
| 	bclr	0x01,(gdbstub_busy)
 | |
| 
 | |
| 	.globl gdbstub_return
 | |
| gdbstub_return:
 | |
| 	RESTORE_ALL
 | |
| 
 | |
| 	.size	gdbstub_io_rx_handler,.-gdbstub_io_rx_handler
 |