亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? start.s

?? 國產CPU-龍芯(loongson)BIOS源代碼
?? S
字號:
#include <asm.h>#include <include/mipsregs.h>#include <include/address.h>/*#define FCR_COM1_BASE  0xbf004080*/#define FCR_COM1_BASE  0xbf004090#define FCR_COM1_DATA  (FCR_COM1_BASE + 0x0)#define FCR_COM1_FCR   (FCR_COM1_BASE + 0x2)#define FCR_COM1_LSR   (FCR_COM1_BASE + 0x5)#define PRINTSTR(x) \        .rdata;98: .asciz x; .text; la a0, 98b; bal puts; nop#define REGSZ		4#define CACHELINE	32#define STKSIZE 0x3000################### UART          ###################define UART_OUTCH(a)	\	li	a0, (a) ; \	bal	tgt_putchar	;\	nop#######################################  ROM Exception Entry	             #######################################	.text	.ent	reset_exceptionreset_exception:	.set noreorder	.set noat	b		start		# Reset Exception Entry	move	k0, zero	.set reorder	.org 0x380		b		excHandler	# General Exception Entry, in ROM						# it located at physaddr 0x1bfc0380	.end	reset_exception	####################################### 		ROM BIOS Entry       #######################################	.comm	stack, STKSIZE		# Stack area 									.set	at	.globl 	start	.ent 	startstart:					# This is the entry point of the BIOS ROM Image.	.globl 	__start__start:	move	k0, zero########################################### 	Force Code to Run in K1 Seg.	 ##	Now the cache of CPU is invalid  ###########################################	.set	noreorder	.set	nomacro	bal		1f	lui		t0, K1BASE>>16		# in fact, here a nop instruction inserted1:	or		ra, t0			# by compiler in case of the delay slots effect.	addiu		ra, 16			# 16 = 4 * sizeof(LX-1 inst size).	j		ra			# now ra = . + 1	nop	.set	macro	.set	reorder	####################################### 	Set up a K1seg stack         #######################################	.set reorder1:	la      sp, stack + STKSIZE - 24	or      sp, sp, K1BASE#######################################   Calculate Re-location code	     #######################################	bal		1f1:	la		t1, 1b			# Little trick to calculate relocation offset.	subu		s8, ra, t1	#if 1##################################   Init COM Port in fcr soc    ##################################	li	a0, FCR_COM1_BASE	li		t1, 0x80	# set DLAB = 1	addu	a2, a0, 3					sb		t1, (a2)	# LCR (Line Control Register)#	li		t1, 0xD9        # Crystal:33.3MHz, Baudrate = 9600bps ->0xD9	li		t1, 0x6C        # Crystal:16.6MHz, Baudrate = 9600bps ->0x6C	addu	a2, a0, 0	sb		t1, (a2)	# DLL (Divide Latch, LSB)		li		t1, 0x00	# Baudrate=9600. MSB should be 0	addu	a2, a0, 1	sb		t1, (a2)	# DLM (Divisor Latch, MSB) 	li		t1, 0x0b	# 8N1	addu	a2, a0, 3	sb		t1, (a2)	# LCR (Line Control Register)		li		t1, 0x47	# RCVR Trigger & FIFO Enable	addu	a2, a0, 2		# reset Tx/Rx Fifo	sb		t1, (a2)	# FCR (Fifo Control Register)#endif	UART_OUTCH('S')	UART_OUTCH('T')	UART_OUTCH('A')	UART_OUTCH('R')	UART_OUTCH('T')	UART_OUTCH('.')	UART_OUTCH('.')#################################   Initailize SDRAM Interface #################################        li  a0,0xbf000000#config	li a1, 0x20000000	    sw  a1,4(a0)#timing	li  a1,0x01040242    sw  a1,0(a0)#config	li a1, 0x209800c6	    sw  a1,4(a0)#	bal doMemTestX	# test SDRAM module####################################### 	ROM => RAM, Text RAM Section #######################################	la		t0, _ftext	add		t0, s8		# t0 = ROM addr of text segs end	la		t1, _ftext	# t1	destination	t1  	or		t1, K1BASE	la		t2,_etext	# t2 is the length of textram+rodat segs.	or		t2, K1BASE	addu	t2, REGSZ - 1	and		t2, -REGSZ		# end address aligned	.set	noreorder1:	lw		t3, 0(t0)		# t3: source context	addu	t0, REGSZ			# t0: source address register	addu	t1, REGSZ			# t1: destination address register	bne		t1, t2, 1b		# t2: end address register    	 sw		t3, -REGSZ(t1)####################################### 	ROM => RAM, Data  Sections   #######################################	.set	reorder2:	la		t0, _etext	addu	t0, s8			# RELOC	or		t0, K1BASE	# t0: data section start address in ROM	la		t1, _etext	or		t1, K1BASE	# t1: data section start address in RAM	la		t2, _edata	or		t2, K1BASE	# t2: data section end address in RAM	beq		t1, t2, zbss	.set	noreorder1:	lw		t3, 0(t0)	addu	t0, REGSZ	addu	t1, REGSZ	bne		t1, t2, 1b    	 sw		t3, -REGSZ(t1)####################################### 	  Clean BSS sections         #######################################	.set	reorderzbss:		# clear bss	la		v0, _fbss		# BSS section pre-compiled start in RAM	la		v1, end			# BSS section pre-compiled end in RAM	or		v0, K1BASE	or		v1, K1BASE	1:	.set	noreorder	sw		$0, 0(v0)	sw		$0, 4(v0)	sw		$0, 8(v0)	addu	v0, 16	bltu	v0, v1, 1b	sw		$0, -4(v0)		# use delay slot to fill 12(v0)####################################### Copy Exception Vectors to RAM      #######################################	.set	reorder	la      a0, excHandler	la      a1, eExcHandler	li      a2, 0x0000180           	bal     copyExcVec	nop#######################################     Disable Interrupt              #######################################	mfc0	t0, CP0_STATUS	and 	t0, 0xfffffffe	# By default it will be disabled.	mtc0	t0, CP0_STATUS	# Set CPU to disable interrupt.	nop	####################################### 	  Init&Flush the Cache of CPU	 #######################################	mfc0	t0, CP0_CONFIG	and		t0, 0xfffffff8	or		t0, 0x2			# disable,!default value is not it!	mtc0	t0, CP0_CONFIG			# Set CPU to disable cache.	nop####################################### Re-set stack pointer for C code    #######################################	la      sp, stack + STKSIZE - 24	# Re-Set stack pointer####################################### 	Jump to normal BIOS startup code #	  #######################################	la		a0, start_bios	la		a0, initmips	jr		a0	nop1:		bal		1b	nop	j		start	.end start################################################### 	copyExcVec Function Entry		 ##						 ##	Params:					 ##		a0 = Src ExcVec Start Addr	 ##		a1 = Src ExcVec End   Addr	 ##		a2 = Dst ExcVec Addr		 ##	Volatile:				 ##		a0, a1				 ###################################################	.globl copyExcVec	.ent copyExcVec	copyExcVec:	or      t0, a0, K1BASE			# Force a0&a1 to K1 Seg	or      t1, a1, K1BASE	or      a2, K1BASE			# Although a2 in K1, but it is in RAM1:  lw      v0, (t0)	sw      v0, (a2)	addu    t0, REGSZ	addu    a2, REGSZ	bltu    t0, t1, 1b	j       ra	.end copyExcVec####################################### 	General Exception Handler Entry  #######################################	.globl 	excHandler	.ent 	excHandler#if __mips >= 3	.align	3#endif	excHandler:	.set noat	PRINTSTR("EXCEPTION!CAUSE=");	mfc0	a0, CP0_CAUSE	la	t1, put32	jalr    t1 	nop	PRINTSTR(" EPC=");	mfc0	a0, CP0_EPC	la	t1, put32	jalr	t1	nop	PRINTSTR(" BADVADDR=");	mfc0	a0, CP0_BADVADDR	la 	t1, put32	jalr	t1	nop	PRINTSTR(" STATUS=");	mfc0	a0, CP0_STATUS	la 	t1, put32	jalr	t1	nop		.set mips3	eret	.set mips0eExcHandler:					# End of General Exception Handler	.set at	.end excHandler#define TXWAIT		(0x13)#define __TXWAIT	(0x12)/* destroy: t0,t1,ra */LEAF(tgt_putchar)	.set noreorder   	li	t0, TXWAIT			# timeout1:	lbu	t1, (FCR_COM1_LSR)		# get LSR	and	t1, 0x20			# tx ready?	bnez	t1, 1f				# can write	nop2:	li	t1, __TXWAIT			# Wait a while3:	subu	t1, 1	bnez	t1, 3b	nop	subu	t0, 1				# continue until timeout 	bnez	t0, 1b	nop1:	sb	a0, (FCR_COM1_DATA)		# write data	j	ra	nopEND(tgt_putchar)####################################### Print 32bit Integer in reg a0      #######################################LEAF(put32)	.set noreorder	move	t9, ra	move	t6, a0	li	t7, 322:	subu	t7, 4	srl a0, t7	and a0, 0x0F	blt	a0, 0x0A, 3f	nop	subu	a0, 0x0a	addu	a0, 'A'	j	4f	nop3:	addu	a0, '0'4:	bal	tgt_putchar	nop	move	a0, t6	bnez	t7, 2b	nop		move	ra, t9	j	ra	nop	.set reorderEND(put32)/* * Simple character printing routine used before full initialization *//* destroy: a0,a1 t0,t1(tgt_putchar), t9 */LEAF(puts)	.set noreorder        move    t9, ra        move    a1, a0        lbu     a0, 0(a1)1:        beqz    a0, 2f        nop        bal     tgt_putchar        addiu   a1, 1        b       1b        lbu     a0, 0(a1)2:        j       t9        nop	.set reorderEND(puts)####################################### 	Test SDRAM Module            #######################################LEAF(doMemTestX)	.set macro	.set noreorder#if 0#define MEM_BOT		(0xA0000000)		/* 64MB */#define MEM_TOP		(0xA4000000)		/* 64MB */#define	MEM_STEP	      (0x04)#else	#define MEM_BOT		(0xA0000000)		/* */#define MEM_TOP		(0xA8000000)		/* 128MB */#define	MEM_STEP	   (0x01000)#endif	move	t9, ra/* Store data into SDRAM */	PRINTSTR("\r\nSDRAM Testing...");	li	a1, 0x0	li	a2, 0x0	li	a3, 0x0	li	s0, 0x1	li	s1, 0x2	li	s2, 0x3	li	s3, 0x4	nop		li	t2, MEM_BOT	li	t3, MEM_TOP1:	sw	s0, (t2)	sh	s1, 4(t2)	sb	s2, 6(t2)	move 	a0,  t2			nop	bal	put32	nop	PRINTSTR("\r\n")	lw	s3, (t2)	bne	s3, s0, 3f	nop	lhu	s4, 4(t2)	and     t4, s1, 0xffff	bne	s4, t4, 3f	nop	lbu	s5, 6(t2)	and     t4, s2, 0xff	bne	s5, t4, 3f	nop	2:	addiu	t2, MEM_STEP	addiu	s0, 0x1	addiu	s1, 0x1	addiu	s2, 0x1	bne	t2, t3, 1b	nop	PRINTSTR("\r\nTest end.\r\n")		move	ra, t9	j	ra	nop######################### some error occured ! #########################3:		PRINTSTR("\r\nMISMATCH at locate:")	move 	a0,  t2			nop	bal	put32	nop	PRINTSTR("\r\nExpect:")	move	a0, s0	bal	put32		nop	UART_OUTCH(' ')	move	a0, s1	bal	put32		nop	UART_OUTCH(' ')	move	a0, s2	bal	put32		nop	PRINTSTR(" Got:")	move	a0, s3 	bal	put32		nop	UART_OUTCH(' ')	move	a0, s4	bal	put32		nop	UART_OUTCH(' ')	move	a0, s5	bal	put32		nop	PRINTSTR("\r\n")	b	2b	nop	.set reorderEND(doMemTestX)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91视频com| 2020国产精品自拍| 8x8x8国产精品| 国产精品免费av| 久久激情五月激情| 九九在线精品视频| 国产成人综合精品三级| 成人高清在线视频| 欧美mv日韩mv国产| 亚洲国产裸拍裸体视频在线观看乱了| 日本在线观看不卡视频| 丁香一区二区三区| 在线精品视频免费观看| 中文字幕欧美日本乱码一线二线| 一区二区三区欧美视频| 成人v精品蜜桃久久一区| 欧美精品少妇一区二区三区| 中文字幕乱码久久午夜不卡 | 国产一级精品在线| 欧美理论在线播放| 亚洲自拍偷拍av| 一本久久a久久精品亚洲| 亚洲精品一线二线三线| 蜜桃精品视频在线观看| 日本国产一区二区| 国产蜜臀av在线一区二区三区| 亚洲高清不卡在线| 91精品国产高清一区二区三区 | 麻豆一区二区99久久久久| 国产美女精品一区二区三区| 日韩欧美高清一区| 日韩和欧美的一区| 欧美大黄免费观看| 乱中年女人伦av一区二区| 久久美女艺术照精彩视频福利播放 | 欧美高清www午色夜在线视频| 亚洲免费色视频| 欧美日韩视频在线观看一区二区三区| 亚洲妇熟xx妇色黄| 91精品在线一区二区| 亚洲一二三四区| 日韩一区二区电影| 粉嫩久久99精品久久久久久夜| 国产精品理论片| 91福利在线导航| 国产美女一区二区三区| 亚洲乱码精品一二三四区日韩在线| 欧美卡1卡2卡| 成人性生交大片免费看中文 | 91蜜桃视频在线| 婷婷丁香久久五月婷婷| 国产午夜精品久久| 欧美色大人视频| av在线这里只有精品| 亚洲码国产岛国毛片在线| 欧美精品丝袜中出| aaa亚洲精品一二三区| 日韩国产一二三区| 午夜电影久久久| **性色生活片久久毛片| 在线不卡中文字幕| 成人黄色在线网站| 国产精品一区二区三区乱码| 亚洲精品国产视频| 国产精品国产三级国产aⅴ中文| 欧美一区二区日韩| 欧美揉bbbbb揉bbbbb| 91麻豆成人久久精品二区三区| 国产一区二区精品在线观看| 婷婷成人激情在线网| 天堂一区二区在线| 精品一区二区三区香蕉蜜桃| 精品一区二区免费在线观看| 国产精品456露脸| 日韩国产欧美视频| 国产一区二区福利| 99久久国产免费看| 欧美老女人第四色| 国产精品青草久久| 亚洲永久精品大片| 国产一区在线精品| 在线亚洲免费视频| 久久精品一区四区| 精品国内二区三区| 日韩一级成人av| 久久久久久麻豆| 国产精品国产三级国产普通话99| 日韩欧美另类在线| 国产精品国产三级国产aⅴ中文 | 69久久夜色精品国产69蝌蚪网| 亚洲mv大片欧洲mv大片精品| 欧美一区二区成人6969| 精品少妇一区二区三区免费观看 | 亚洲不卡av一区二区三区| 精品一区二区三区香蕉蜜桃| 欧美男生操女生| 视频一区视频二区中文字幕| 日韩免费视频线观看| 国产寡妇亲子伦一区二区| 在线观看亚洲精品视频| 18成人在线观看| 丁香啪啪综合成人亚洲小说 | 大桥未久av一区二区三区中文| 日韩一区二区三区高清免费看看| 中文字幕一区av| jizzjizzjizz欧美| 最新国产精品久久精品| 99久精品国产| 亚洲精品视频在线观看网站| 色婷婷综合五月| 亚洲午夜电影在线| 色哟哟亚洲精品| 亚洲精品视频一区| 91福利小视频| 人人超碰91尤物精品国产| 555夜色666亚洲国产免| 亚洲丝袜美腿综合| 成人综合在线网站| 中文天堂在线一区| 欧美日韩在线免费视频| 日本在线不卡视频一二三区| 精品美女一区二区| a美女胸又www黄视频久久| 亚洲精品亚洲人成人网| 欧美剧在线免费观看网站| 蜜桃视频在线观看一区| 国产精品久久久久久户外露出| 国产一区二区免费视频| 欧美激情资源网| 国产精品影视在线观看| 久久综合久久综合久久综合| 韩国av一区二区| 国产精品天干天干在观线| 成人福利视频在线| 亚洲午夜久久久久久久久久久| 精品嫩草影院久久| 日本韩国欧美一区| 懂色中文一区二区在线播放| 免费的成人av| 亚洲线精品一区二区三区| 国产精品毛片大码女人| 欧美精品乱码久久久久久| 在线免费观看日本一区| 成人午夜电影网站| 亚洲日本一区二区三区| 日韩欧美黄色影院| 色综合天天综合给合国产| 国产成人在线视频播放| 亚洲国产精品久久艾草纯爱| 国产欧美日韩久久| 91精品国产综合久久久久久久| 国产永久精品大片wwwapp| 久久色成人在线| 精品亚洲porn| 亚洲成人777| 亚洲成人av一区二区三区| 久久精品日韩一区二区三区| 欧美日韩在线三级| 91福利在线播放| 色婷婷亚洲精品| 在线观看日韩av先锋影音电影院| 大桥未久av一区二区三区中文| 国产一区999| 国产精品一二三四| 不卡欧美aaaaa| 99久久国产综合精品色伊| 粉嫩一区二区三区在线看 | 天天影视涩香欲综合网| 亚洲国产成人tv| 狠狠色狠狠色综合系列| 国产suv一区二区三区88区| 不卡一区二区三区四区| 一本色道久久综合精品竹菊| 欧美综合在线视频| 精品国产成人系列| 亚洲欧美色图小说| 男人操女人的视频在线观看欧美| 国产乱子轮精品视频| 色综合久久中文字幕综合网| 欧美一区二区久久久| 国产蜜臀av在线一区二区三区| 亚洲国产成人高清精品| 国产**成人网毛片九色 | 麻豆久久久久久久| 91久久免费观看| 国产欧美一区二区精品婷婷| 视频一区二区中文字幕| 午夜国产精品一区| 成人av在线观| 久久久久久久久97黄色工厂| 亚洲一区中文在线| 91浏览器入口在线观看| 国产日韩欧美一区二区三区乱码| 亚洲精品欧美激情| 99麻豆久久久国产精品免费| 精品国产伦一区二区三区观看体验| 一区二区三区高清| 成人99免费视频| 欧美激情一区二区在线| 国产麻豆精品95视频|