⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 debug.s

📁 SMDK2440 boot code, base on vivi
💻 S
字号:
/* *  vivi/arch/s3c24a0/debug.S * *  Based on linux/arch/arm/kernel/debug-armv.S * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * *  32-bit debugging code */#include <config.h>#include <linkage.h>#include <machine.h>		.text#if defined(CONFIG_S3C2440_SMDK2440)		.macro	_inituart		@ set GPIO for UART		mov	r0, #0x56000000		add	r0, r0, #0x70		ldr	r1, gpio_con_uart			str	r1, [r0, #0]		ldr	r1, gpio_up_uart		str	r1, [r0, #0x8]			mov	r0, #0x50000000		mov	r1, #0x0		str	r1, [r0, #0x08]		str	r1, [r0, #0x0C]		mov	r1, #0x3		str	r1, [r0, #0x00]		ldr	r1, ucon_val		str	r1, [r0, #0x04]		ldr	r1, ubrdiv_val		str	r1, [r0, #0x28]		.endm		.align 2ucon_val:	.long	0x245ubrdiv_val:	.long	((UART_REF_CLK / (CONFIG_SERIAL_DEFAULT_BAUDRATE * 16)) - 1)gpio_con_uart:	.long	vGPHCONgpio_up_uart:	.long	vGPHUP		.macro	adduart,rx		mov	\rx, #0x50000000		.endm		.macro	senduart,rd,rx		str	\rd, [\rx, #0x20]		.endm		.macro	busyuart,rd,rx		nop		.endm		.macro	waituart,rd,rx		mov	\rd, \rx1001:		ldr	\rd, [\rx, #0x10]		and	\rd, \rd, #UTRSTAT_TX_EMPTY		tst	\rd, #UTRSTAT_TX_EMPTY		beq	1001b		.endm#elif defined(CONFIG_S3C2440_MPORT3S) || defined(CONFIG_S3C2440_MPORT1S)		.macro	_inituart		@ set GPIO for UART		mov	r0, #0x56000000		add	r0, r0, #0x70		ldr	r1, gpio_con_uart			str	r1, [r0, #0]		ldr	r1, gpio_up_uart		str	r1, [r0, #0x8]			mov	r0, #0x50000000		add	r0, r0, #0x8000		mov	r1, #0x0		str	r1, [r0, #0x08]		str	r1, [r0, #0x0C]		mov	r1, #0x3		str	r1, [r0, #0x00]		ldr	r1, ucon_val		str	r1, [r0, #0x04]		ldr	r1, ubrdiv_val		str	r1, [r0, #0x28]		.endm		.align 2ucon_val:	.long	0x45ubrdiv_val:	.long	((UART_REF_CLK / (CONFIG_SERIAL_DEFAULT_BAUDRATE * 16)) - 1)gpio_con_uart:	.long	vGPHCONgpio_up_uart:	.long	vGPHUP		.macro	adduart,rx		mov	\rx, #0x50000000		add	\rx, \rx, #0x8000		.endm		.macro	senduart,rd,rx		str	\rd, [\rx, #0x20]		.endm		.macro	busyuart,rd,rx		nop		.endm		.macro	waituart,rd,rx		mov	\rd, \rx1001:		ldr	\rd, [\rx, #0x10]		and	\rd, \rd, #UTRSTAT_TX_EMPTY		tst	\rd, #UTRSTAT_TX_EMPTY		beq	1001b		.endm#else#error Unknown architecture#endif/* * Useful debugging routines */ENTRY(printhex8)		mov	r1, #8		b	printhexENTRY(printhex4)		mov	r1, #4		b	printhexENTRY(printhex2)		mov	r1, #2printhex:	adr	r2, hexbuf		add	r3, r2, r1		mov	r1, #0		strb	r1, [r3]1:		and	r1, r0, #15		mov	r0, r0, lsr #4		cmp	r1, #10		addlt	r1, r1, #'0'		addge	r1, r1, #'a' - 10		strb	r1, [r3, #-1]!		teq	r3, r2		bne	1b		mov	r0, r2		b	printascii		.ltorgENTRY(printascii)		adduart  r3		b	2f1:		waituart r2, r3		senduart r1, r3		busyuart r2, r3		teq	r1, #'\n'		moveq	r1, #'\r'		beq	1b2:		teq	r0, #0		ldrneb	r1, [r0], #1		teqne	r1, #0		bne	1b		mov	pc, lrENTRY(printch)		adduart r3		mov	r1, r0		mov	r0, #0		b	1bENTRY(inituart)		_inituart		mov	pc, lrhexbuf:		.space 16

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -