diff packages/hal/mn10300/arch/current/include/arch.inc @ 30:641b639be825 ecos-sw-1999-08-16

Merge from eCos master repository on 1999-08-16-22:01:37-BST
author jlarmour
date Mon, 16 Aug 1999 22:10:49 +0000
parents
children 5af43b635655
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/packages/hal/mn10300/arch/current/include/arch.inc
@@ -0,0 +1,229 @@
+#ifndef CYGONCE_HAL_ARCH_INC
+#define CYGONCE_HAL_ARCH_INC
+##=============================================================================
+##
+##	arch.inc
+##
+##	MN10300 assembler header file
+##
+##=============================================================================
+#####COPYRIGHTBEGIN####
+#
+# -------------------------------------------
+# The contents of this file are subject to the Cygnus eCos Public License
+# Version 1.0 (the "License"); you may not use this file except in
+# compliance with the License.  You may obtain a copy of the License at
+# http://sourceware.cygnus.com/ecos
+# 
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the
+# License for the specific language governing rights and limitations under
+# the License.
+# 
+# The Original Code is eCos - Embedded Cygnus Operating System, released
+# September 30, 1998.
+# 
+# The Initial Developer of the Original Code is Cygnus.  Portions created
+# by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions.  All Rights Reserved.
+# -------------------------------------------
+#
+#####COPYRIGHTEND####
+##=============================================================================
+#######DESCRIPTIONBEGIN####
+##
+## Author(s): 	nickg
+## Contributors:	nickg
+## Date:	1997-10-16
+## Purpose:	Architecture definitions.
+## Description:	This file contains various definitions and macros that are
+##              useful for writing assembly code for the MN10300 CPU family.
+## Usage:
+##		#include <cyg/hal/arch.inc>
+##		...
+##		
+##
+######DESCRIPTIONEND####
+##
+##=============================================================================
+
+#include <pkgconf/hal.h>
+	
+#include <cyg/hal/variant.inc>
+
+##-----------------------------------------------------------------------------
+## CPU specific macros. These provide a common assembler interface to
+## operations that may have CPU specific implementations on different
+## variants of the architecture.		
+
+#ifndef CYGPKG_HAL_MN10300_CPU_INIT_DEFINED
+	# Initialize CPU
+	.macro	hal_cpu_init
+	# Set up the PSW
+	mov	0x0700,d0
+	mov	d0,psw
+	.endm
+#endif
+
+	# Enable interrupts
+	.macro hal_cpu_int_enable
+	or	0x0800,psw
+	.endm		
+
+	# Disable interrupts
+	.macro hal_cpu_int_disable
+	and	0xF7ff,psw
+	.endm	
+
+	# Merge the interrupt enable state of the status register in
+	# \sr with the current sr.
+	.macro	hal_cpu_int_merge sr
+	and	0x00000F00,\sr		# isolate IE bit
+	mov	psw,d0
+	and	0xfffff0ff,d0
+	or	d0,\sr
+	mov	\sr,psw
+	.endm
+
+	# Enable further exception processing, and disable
+	# interrupt processing.
+	.macro hal_cpu_except_enable
+	.endm		
+	
+	# Return from exception.
+	.macro	hal_cpu_eret pc,sr
+	.endm
+	
+##-----------------------------------------------------------------------------
+# Default interrupt decoding macros.
+
+#ifndef CYGPKG_HAL_MN10300_INTC_DEFINED
+
+#ifndef CYGPKG_HAL_MN10300_INTC_INIT_DEFINED
+	# initialize all interrupts to disabled
+	.macro	hal_intc_init
+	.endm
+#endif
+
+	.macro	hal_intc_decode vnum
+	.endm
+
+#endif
+
+#------------------------------------------------------------------------------
+# MMU macros.
+	
+#ifndef CYGPKG_HAL_MN10300_MMU_DEFINED
+
+	.macro	hal_mmu_init
+	.endm
+
+#endif	
+
+#------------------------------------------------------------------------------
+# MEMC macros.
+	
+#ifndef CYGPKG_HAL_MN10300_MEMC_DEFINED
+
+	.macro	hal_memc_init
+	.endm
+
+#endif	
+	
+#------------------------------------------------------------------------------
+# Cache macros.
+	
+#ifndef CYGPKG_HAL_MN10300_CACHE_DEFINED
+
+	.macro	hal_cache_init
+	.endm
+
+#endif	
+
+#------------------------------------------------------------------------------
+# Diagnostics macros.
+	
+#ifndef CYGPKG_HAL_MN10300_DIAG_DEFINED
+
+	.macro	hal_diag_init
+	.endm
+
+	.macro	hal_diag_excpt_start
+	.endm
+
+	.macro	hal_diag_intr_start
+	.endm
+
+	.macro	hal_diag_restore
+	.endm
+
+	.macro	hal_diag_data
+	.endm
+#endif	
+
+#------------------------------------------------------------------------------
+# Timer initialization.
+	
+#ifndef CYGPKG_HAL_MN10300_TIMER_DEFINED
+
+	.macro	hal_timer_init
+	.endm
+
+#endif	
+
+#------------------------------------------------------------------------------
+# Monitor initialization.
+	
+#ifndef CYGPKG_HAL_MN10300_MON_DEFINED
+
+	.macro	hal_mon_init
+	.endm
+
+#endif	
+
+#------------------------------------------------------------------------------
+# temporary trace macros
+
+#if 0
+
+#ifdef CYGPKG_HAL_MN10300_AM31_STDEVAL1
+#define TRACE_BASE 0x48100000
+#else
+#error TRACE_BASE not defined for platform
+#endif
+
+	.macro traceinit
+	mov	TRACE_BASE,a2
+	mov	TRACE_BASE+0x10,d0
+	mov	d0,(a2)
+	.endm
+	
+	.macro trace,tag,arg1=0,arg2=0
+	movm	[d2,a2,a3],(sp)
+	mov	TRACE_BASE,a2
+	mov	(a2),a3
+	mov	\tag,d2
+	mov	d2,(a3)
+	mov	(12,a2),d2
+	mov	d2,(4,a3)
+	add	1,d2
+	mov	d2,(12,a2)
+	mov	\arg1,d2
+	mov	d2,(8,a3)
+	mov	\arg2,d2
+	mov	d2,(12,a3)
+	add	16,a3
+	mov	a3,(a2)
+	movm	(sp),[d2,a2,a3]
+	.endm
+#else
+	.macro traceinit
+	.endm
+
+	.macro trace,tag,arg1=0,arg2=0
+	.endm
+#endif
+
+
+#------------------------------------------------------------------------------
+#endif // ifndef CYGONCE_HAL_ARCH_INC
+# end of arch.inc