2019-06-04 10:11:33 +02:00
/* SPDX-License-Identifier: GPL-2.0-only */
2011-01-15 18:22:19 +08:00
/ *
* linux/ a r c h / u n i c o r e 3 2 / k e r n e l / d e b u g - m a c r o . S
*
* Code s p e c i f i c t o P K U n i t y S o C a n d U n i C o r e I S A
*
* Copyright ( C ) 2 0 0 1 - 2 0 1 0 G U A N X u e - t a o
*
* Debugging m a c r o i n c l u d e h e a d e r
* /
# include < g e n e r a t e d / a s m - o f f s e t s . h >
# include < m a c h / h a r d w a r e . h >
.macro put_ w o r d _ o c d , r d , r x =r16
1001 : movc \ r x , p1 . c0 , #0
cand. a \ r x , #2
bne 1 0 0 1 b
movc p1 . c1 , \ r d , #1
.endm
# ifdef C O N F I G _ D E B U G _ O C D
/* debug using UniCore On-Chip-Debugger */
.macro addruart, r x
.endm
.macro senduart, r d , r x
put_ w o r d _ o c d \ r d , \ r x
.endm
.macro busyuart, r d , r x
.endm
.macro waituart, r d , r x
.endm
# else
# define U A R T _ C L K _ D E F A U L T 3 6 8 6 4 0 0 * 2 0
/* Uartclk = MCLK/ 2, The MCLK on my board is 3686400 * 40 */
# define B A U D _ R A T E _ D E F A U L T 1 1 5 2 0 0
/* The baud rate of the serial port */
# define U A R T _ D I V I S O R _ D E F A U L T ( U A R T _ C L K _ D E F A U L T \
/ ( 1 6 * BAUD_ R A T E _ D E F A U L T ) - 1 )
.macro addruart,r x
mrc p0 , #0 , \ r x , c1 , c0
tst \ r x , #1 @ MMU enabled?
moveq \ r x , #0xee000000 @ physical base address
movne \ r x , #0x6e000000 @ virtual address
@ We probe for the active serial port here
@ However, now we assume UART0 is active: epip4d
@ We assume r1 and r2 can be clobbered.
movl r2 , #U A R T _ D I V I S O R _ D E F A U L T
mov r1 , #0x80
str r1 , [ \ r x , #U A R T _ L C R _ O F F S E T ]
and r1 , r2 , #0xff00
mov r1 , r1 , l s r #8
str r1 , [ \ r x , #U A R T _ D L H _ O F F S E T ]
and r1 , r2 , #0xff
str r1 , [ \ r x , #U A R T _ D L L _ O F F S E T ]
mov r1 , #0x7
str r1 , [ \ r x , #U A R T _ F C R _ O F F S E T ]
mov r1 , #0x3
str r1 , [ \ r x , #U A R T _ L C R _ O F F S E T ]
mov r1 , #0x0
str r1 , [ \ r x , #U A R T _ I E R _ O F F S E T ]
.endm
.macro senduart,r d ,r x
str \ r d , [ \ r x , #U A R T _ T H R _ O F F S E T ]
.endm
.macro waituart,r d ,r x
1001 : ldr \ r d , [ \ r x , #U A R T _ L S R _ O F F S E T ]
tst \ r d , #U A R T _ L S R _ T H R E
beq 1 0 0 1 b
.endm
.macro busyuart,r d ,r x
1001 : ldr \ r d , [ \ r x , #U A R T _ L S R _ O F F S E T ]
tst \ r d , #U A R T _ L S R _ T E M T
bne 1 0 0 1 b
.endm
# endif