summaryrefslogblamecommitdiffstats
path: root/c/src/lib/libbsp/i960/rxgen960/startup/asmstub.S
blob: 2a9327b54f95ac83006208176ef7a55098438e0c (plain) (tree)
1
2
3
4



       









































                                                                        
                           


















                                                                        
                                           
















                                                                        
                                           

           













                                                                        
                                          









































                                                                        
#
#  $Id$
#

#######################################
# asmstub.s                           #
# Last change : 20. 1.95              #
#######################################

########################################################################
#
# PURPOSE:	resets processor
#
# ARGUMENTS:	g0 = start point
#               g1 = prcb
#
# RETURNS:	none
########################################################################

	.text
	.globl	_asm_exit

	.text
_asm_exit:
	ldconst	0x300, g2
#	ldconst	_start, g1
#	ldconst	_ram_prcb, g2
	sysctl	g2, g0, g1
	ret

########################################################################
#
# PURPOSE:	execute sysctl instruction
#
# ARGUMENTS:	g0 = message type	(0x300 for reinitialize)
#		g1 = depends on type	(inst addr for reinitialize)
#		g2 = depends on type	(prcb addr for reinitialize)
#
# RETURNS:	none
########################################################################

	.text
	.globl	_asm_sysctl

	.text
_asm_sysctl:
	b	_asm_sysctl
	sysctl	g0, g1, g2
	ret

########################################################################
#
# PURPOSE:	alter a bit in the interrupt pending register
#
# ARGUMENTS:	g0 = interrupt number
#		g1 = 1 to set, 0 to clear
#
# RETURNS:	none
########################################################################

	.text
	.globl		_asm_ipend

	.text
_asm_ipend:
	chkbit	 0, g1
	/* alterbit g0, sf0, sf0 XXX JRS */
	ret
########################################################################
#
# PURPOSE:	alter a bit in the interrupt mask register
#
# ARGUMENTS:	g0 = interrupt number
#		g1 = 1 to set, 0 to clear
#
# RETURNS:	none
########################################################################

	.text
	.globl		_asm_imask

	.text
_asm_imask:
	chkbit	 0, g1
	/* alterbit g0, sf1, sf1 XXX JRS */
	ret

########################################################################
#
# PURPOSE:	get the value of the interrupt mask register
#
# ARGUMENTS:	none
#
# RETURNS:	value of IMASK reg
########################################################################

	.text
	.globl		_asm_get_imask

	.text
_asm_get_imask:
	/* mov		sf1, g0 XXX JRS */
	ret

########################################################################
#
# PURPOSE:	modify process-controls register
#
# ARGUMENTS:	g0 = value masked/stored in PC reg
#		g1 = mask of bits to be modified
#
# RETURNS:	g0 = initial value of PC reg
########################################################################

	.text
	.globl	_asm_modpc

	.text
_asm_modpc:
	modpc	g1, g1, g0
	ret

########################################################################
#
# PURPOSE:	change a cached interrupt vector
#
# ARGUMENTS:	g0 = interrupt number
#		g1 = new interrupt vector
#
# RETURNS:	none
########################################################################

	.text
	.globl		_asm_ivector

	.text
_asm_ivector:
	addo	1, g0, g0
	st	g1, [g0 * 4]
	ret

###############
# End of file #
###############