| 
									
										
										
										
											2013-03-14 08:48:06 +01:00
										 |  |  | #include <linux/linkage.h> | 
					
						
							|  |  |  | #include <asm/assembler.h> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-29 16:57:30 +01:00
										 |  |  | #ifndef CONFIG_DEBUG_SEMIHOSTING | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-14 08:48:06 +01:00
										 |  |  | #include CONFIG_DEBUG_LL_INCLUDE | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ENTRY(putc) | 
					
						
							|  |  |  | 	addruart r1, r2, r3 | 
					
						
							|  |  |  | 	waituart r3, r1 | 
					
						
							|  |  |  | 	senduart r0, r1 | 
					
						
							|  |  |  | 	busyuart r3, r1 | 
					
						
							|  |  |  | 	mov	 pc, lr | 
					
						
							|  |  |  | ENDPROC(putc) | 
					
						
							| 
									
										
										
										
											2013-05-29 16:57:30 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | #else | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ENTRY(putc) | 
					
						
							|  |  |  | 	adr	r1, 1f | 
					
						
							|  |  |  | 	ldmia	r1, {r2, r3} | 
					
						
							|  |  |  | 	add	r2, r2, r1 | 
					
						
							|  |  |  | 	ldr	r1, [r2, r3] | 
					
						
							|  |  |  | 	strb	r0, [r1] | 
					
						
							|  |  |  | 	mov	r0, #0x03		@ SYS_WRITEC
 | 
					
						
							|  |  |  |    ARM(	svc	#0x123456	) | 
					
						
							|  |  |  |  THUMB(	svc	#0xab		) | 
					
						
							|  |  |  | 	mov	pc, lr | 
					
						
							|  |  |  | 	.align	2
 | 
					
						
							|  |  |  | 1:	.word	_GLOBAL_OFFSET_TABLE_ - . | 
					
						
							|  |  |  | 	.word	semi_writec_buf(GOT) | 
					
						
							|  |  |  | ENDPROC(putc) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	.bss | 
					
						
							|  |  |  | 	.global	semi_writec_buf
 | 
					
						
							|  |  |  | 	.type   semi_writec_buf, %object | 
					
						
							|  |  |  | semi_writec_buf: | 
					
						
							|  |  |  | 	.space	4
 | 
					
						
							|  |  |  | 	.size	semi_writec_buf, 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif |