OpenCores
URL https://opencores.org/ocsvn/darkriscv/darkriscv/trunk

Subversion Repositories darkriscv

[/] [darkriscv/] [trunk/] [src/] [main.s] - Rev 2

Go to most recent revision | Compare with Previous | Blame | View Log

	.file	"main.c"
	.option nopic
	.text
	.globl	__mulsi3
	.globl	__udivsi3
	.globl	__modsi3
	.globl	__divsi3
	.section	.text.startup,"ax",@progbits
	.align	2
	.globl	main
	.type	main, @function
main:
	addi	sp,sp,-120
	sw	s0,112(sp)
	lui	s0,%hi(io)
	lbu	a0,%lo(io)(s0)
	sw	ra,116(sp)
	sw	s1,108(sp)
	call	board_name
	lbu	a2,%lo(io)(s0)
	mv	a1,a0
	lui	a0,%hi(.LC3)
	addi	a0,a0,%lo(.LC3)
	call	printf
	lui	a1,%hi(.LC4)
	lui	a0,%hi(.LC5)
	addi	a1,a1,%lo(.LC4)
	addi	a0,a0,%lo(.LC5)
	call	printf
	addi	a5,s0,%lo(io)
	lui	s1,%hi(threads)
	lbu	t1,1(a5)
	lbu	t0,2(a5)
	lw	a4,%lo(threads)(s1)
	li	a5,1
	andi	t1,t1,0xff
	andi	t0,t0,0xff
	addi	s0,s0,%lo(io)
	bgt	a4,a5,.L29
	lui	a4,%hi(.LC1)
	addi	a4,a4,%lo(.LC1)
.L2:
	li	a2,16
	li	a1,16
	li	a0,1000
	sw	a4,8(sp)
	sw	t0,4(sp)
	sw	t1,0(sp)
	call	mac
	li	a5,1256
	lw	t1,0(sp)
	lw	t0,4(sp)
	lw	a4,8(sp)
	beq	a0,a5,.L30
	lui	a5,%hi(.LC1)
	addi	a5,a5,%lo(.LC1)
.L3:
	lui	a3,%hi(.LC6)
	lui	a0,%hi(.LC7)
	mv	a2,t0
	mv	a1,t1
	addi	a3,a3,%lo(.LC6)
	addi	a0,a0,%lo(.LC7)
	call	printf
	sw	zero,%lo(threads)(s1)
	lhu	a1,6(s0)
	lui	a0,%hi(.LC8)
	addi	a0,a0,%lo(.LC8)
	call	printf
	lbu	a0,1(s0)
	lbu	s1,2(s0)
	lw	a4,12(s0)
	lw	a2,12(s0)
	li	a1,999424
	addi	a1,a1,576
	sw	a2,4(sp)
	sw	a4,8(sp)
	call	__mulsi3
	andi	s1,s1,0xff
	li	a1,8192
	sw	a0,0(sp)
	addi	a1,a1,1808
	mv	a0,s1
	call	__mulsi3
	lw	a4,8(sp)
	lw	a5,0(sp)
	addi	a1,a4,1
	add	a0,a5,a0
	call	__udivsi3
	lw	a2,4(sp)
	mv	a1,a0
	lui	a0,%hi(.LC9)
	addi	a0,a0,%lo(.LC9)
	call	printf
	li	a0,10
	call	putchar
	lui	a0,%hi(.LC10)
	addi	a0,a0,%lo(.LC10)
	call	puts
	li	a0,10
	call	usleep
.L28:
	lui	a5,%hi(.LC11)
	addi	a0,a5,%lo(.LC11)
	call	printf
	li	a2,64
	li	a1,0
	addi	a0,sp,44
	call	memset
	li	a1,64
	addi	a0,sp,44
	call	gets
	li	s1,0
	addi	a0,sp,44
	lui	a4,%hi(.LC12)
.L4:
	addi	a1,a4,%lo(.LC12)
	call	strtok
	addi	a4,sp,108
	slli	a5,s1,2
	add	a5,a4,a5
	sw	a0,-96(a5)
	lui	a4,%hi(.LC12)
	beqz	a0,.L5
	addi	s1,s1,1
	li	a5,8
	li	a0,0
	bne	s1,a5,.L4
.L5:
	lw	s1,12(sp)
	beqz	s1,.L28
	lui	a1,%hi(.LC13)
	addi	a1,a1,%lo(.LC13)
	mv	a0,s1
	call	strcmp
	bnez	a0,.L9
	lui	a0,%hi(.LC14)
	addi	a0,a0,%lo(.LC14)
	call	printf
	j	.L28
.L29:
	lui	a4,%hi(.LC0)
	addi	a4,a4,%lo(.LC0)
	j	.L2
.L30:
	lui	a5,%hi(.LC2)
	addi	a5,a5,%lo(.LC2)
	j	.L3
.L9:
	lui	a1,%hi(.LC15)
	addi	a1,a1,%lo(.LC15)
	mv	a0,s1
	call	strcmp
	beqz	a0,.L50
	lui	a1,%hi(.LC18)
	addi	a1,a1,%lo(.LC18)
	mv	a0,s1
	call	strcmp
	bnez	a0,.L11
	lw	s1,16(sp)
	beqz	s1,.L12
	mv	a0,s1
	call	xtoi
	mv	s1,a0
.L12:
	addi	a5,s1,256
	sw	a5,0(sp)
.L16:
	lui	a5,%hi(.LC19)
	mv	a1,s1
	addi	a0,a5,%lo(.LC19)
	call	printf
	li	a4,0
	lui	a2,%hi(.LC20)
.L13:
	add	a3,s1,a4
	lbu	a1,0(a3)
	addi	a0,a2,%lo(.LC20)
	sw	a4,4(sp)
	call	printf
	lw	a4,4(sp)
	li	a3,16
	lui	a2,%hi(.LC20)
	addi	a4,a4,1
	bne	a4,a3,.L13
	li	a4,0
.L15:
	add	a3,s1,a4
	lbu	a0,0(a3)
	li	a2,94
	addi	a3,a0,-32
	andi	a3,a3,0xff
	bleu	a3,a2,.L14
	li	a0,46
.L14:
	sw	a4,4(sp)
	call	putchar
	lw	a4,4(sp)
	li	a3,16
	addi	a4,a4,1
	bne	a4,a3,.L15
	li	a0,10
	call	putchar
	lw	a5,0(sp)
	addi	s1,s1,16
	bne	s1,a5,.L16
	j	.L28
.L11:
	lui	a1,%hi(.LC21)
	addi	a1,a1,%lo(.LC21)
	mv	a0,s1
	call	strcmp
	bnez	a0,.L18
	lw	a0,16(sp)
	beqz	a0,.L19
	call	xtoi
	slli	a0,a0,16
	srli	a0,a0,16
	sh	a0,8(s0)
.L19:
	lhu	a1,8(s0)
	lui	a0,%hi(.LC22)
	addi	a0,a0,%lo(.LC22)
.L52:
	call	printf
	j	.L28
.L18:
	lui	a1,%hi(.LC23)
	addi	a1,a1,%lo(.LC23)
	mv	a0,s1
	call	strcmp
	bnez	a0,.L20
	lw	a0,16(sp)
	beqz	a0,.L21
	call	atoi
	sw	a0,12(s0)
.L21:
	lui	a0,%hi(.LC24)
	lw	a1,12(s0)
	addi	a0,a0,%lo(.LC24)
	j	.L52
.L20:
	lui	a1,%hi(.LC25)
	addi	a1,a1,%lo(.LC25)
	mv	a0,s1
	call	strcmp
	bnez	a0,.L22
	lw	a0,16(sp)
	beqz	a0,.L23
	call	xtoi
	slli	a0,a0,16
	srli	a0,a0,16
	sh	a0,10(s0)
.L23:
	lui	a0,%hi(.LC26)
	lhu	a1,10(s0)
	addi	a0,a0,%lo(.LC26)
	j	.L52
.L22:
	lui	a1,%hi(.LC27)
	addi	a1,a1,%lo(.LC27)
	mv	a0,s1
	call	strcmp
	bnez	a0,.L24
	lw	a0,16(sp)
	call	atoi
	mv	s1,a0
	lw	a0,20(sp)
	call	atoi
	mv	a1,a0
	mv	a0,s1
	call	__mulsi3
	mv	a1,a0
	lui	a0,%hi(.LC28)
	addi	a0,a0,%lo(.LC28)
	j	.L52
.L24:
	lui	a1,%hi(.LC29)
	addi	a1,a1,%lo(.LC29)
	mv	a0,s1
	call	strcmp
	bnez	a0,.L25
	lw	a0,16(sp)
	call	atoi
	mv	s1,a0
	lw	a0,20(sp)
	call	atoi
	mv	a1,a0
	sw	a0,4(sp)
	mv	a0,s1
	call	__modsi3
	lw	a5,4(sp)
	sw	a0,0(sp)
	mv	a0,s1
	mv	a1,a5
	call	__divsi3
	lw	a2,0(sp)
	mv	a1,a0
	lui	a0,%hi(.LC30)
	addi	a0,a0,%lo(.LC30)
.L53:
	call	printf
	j	.L28
.L25:
	lui	a1,%hi(.LC31)
	addi	a1,a1,%lo(.LC31)
	mv	a0,s1
	call	strcmp
	bnez	a0,.L26
	lw	a0,16(sp)
	call	atoi
	mv	s1,a0
	lw	a0,20(sp)
	call	atoi
	sw	a0,0(sp)
	lw	a0,24(sp)
	call	atoi
	lw	a1,0(sp)
	slli	a2,a0,16
	srai	a2,a2,16
	slli	a1,a1,16
	srai	a1,a1,16
	mv	a0,s1
	call	mac
	mv	a1,a0
	lui	a0,%hi(.LC32)
	addi	a0,a0,%lo(.LC32)
	j	.L52
.L26:
	lui	a1,%hi(.LC33)
	addi	a1,a1,%lo(.LC33)
	mv	a0,s1
	call	strcmp
	bnez	a0,.L27
	lw	a0,16(sp)
	call	xtoi
	mv	a1,a0
	srai	a2,a0,1
	lui	a0,%hi(.LC34)
	addi	a0,a0,%lo(.LC34)
	j	.L53
.L27:
	lbu	a5,0(s1)
	beqz	a5,.L28
	lui	a0,%hi(.LC35)
	mv	a1,s1
	addi	a0,a0,%lo(.LC35)
	j	.L52
.L50:
	lui	a0,%hi(.LC16)
	addi	a0,a0,%lo(.LC16)
	call	printf
	li	s0,999424
	addi	a0,s0,576
	call	usleep
	li	a0,46
	call	putchar
	addi	a0,s0,576
	call	usleep
	li	a0,46
	call	putchar
	addi	a0,s0,576
	call	usleep
	li	a0,46
	call	putchar
	lui	a0,%hi(.LC17)
	addi	a0,a0,%lo(.LC17)
	call	puts
	lw	ra,116(sp)
	lw	s0,112(sp)
	lw	s1,108(sp)
	li	a0,0
	addi	sp,sp,120
	jr	ra
	.size	main, .-main
	.section	.rodata.str1.4,"aMS",@progbits,1
	.align	2
.LC0:
	.string	"+MT"
.LC1:
	.string	""
	.zero	3
.LC2:
	.string	"+MAC"
	.zero	3
.LC3:
	.string	"board: %s (id=%d)\n"
	.zero	1
.LC4:
	.string	"Sun, 10 Jan 2021 18:33:44 -0200"
.LC5:
	.string	"build: darkriscv fw build %s\n"
	.zero	2
.LC6:
	.string	"rv32e"
	.zero	2
.LC7:
	.string	"core0: darkriscv@%d.%dMHz with %s%s%s\n"
	.zero	1
.LC8:
	.string	"uart0: 115200 bps (div=%d)\n"
.LC9:
	.string	"timr0: periodic timer=%dHz (io.timer=%d)\n"
	.zero	2
.LC10:
	.string	"Welcome to DarkRISCV!"
	.zero	2
.LC11:
	.string	"> "
	.zero	1
.LC12:
	.string	" "
	.zero	2
.LC13:
	.string	"clear"
	.zero	2
.LC14:
	.string	"\033[H\033[2J"
.LC15:
	.string	"reboot"
	.zero	1
.LC16:
	.string	"core0: reboot in 3 seconds"
	.zero	1
.LC17:
	.string	"done."
	.zero	2
.LC18:
	.string	"dump"
	.zero	3
.LC19:
	.string	"%x: "
	.zero	3
.LC20:
	.string	"%x "
.LC21:
	.string	"led"
.LC22:
	.string	"led = %x\n"
	.zero	2
.LC23:
	.string	"timer"
	.zero	2
.LC24:
	.string	"timer = %d\n"
.LC25:
	.string	"gpio"
	.zero	3
.LC26:
	.string	"gpio = %x\n"
	.zero	1
.LC27:
	.string	"mul"
.LC28:
	.string	"mul = %d\n"
	.zero	2
.LC29:
	.string	"div"
.LC30:
	.string	"div = %d, mod = %d\n"
.LC31:
	.string	"mac"
.LC32:
	.string	"mac = %d\n"
	.zero	2
.LC33:
	.string	"srai"
	.zero	3
.LC34:
	.string	"srai %x >> 1 = %x\n"
	.zero	1
.LC35:
	.string	"command: [%s] not found.\nvalid commands: clear, dump <hex>, led <hex>, timer <dec>, gpio <hex>\n                mul <dec> <dec>, div <dec> <dec>, mac <dec> <dec> <dec>\n                rd[m][bwl] <hex> [<hex> when m], wr[m][bwl] <hex> <hex> [<hex> when m]\n"
	.ident	"GCC: (GNU) 9.0.0 20180818 (experimental)"
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.