RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys

源代码在线查看: macros.inc

软件大小: 17702 K
上传用户: cocoplus
关键词: Multiprocessor Executive Real-Time real-time
下载地址: 免注册下载 普通下载 VIP

相关代码

				/* macros.inc				 *				 * This file assists the board independent startup code				 * by initializing the chip-select channels to 				 * reflect the proper memory configuration.				 *				 * NOTE: No stack has been established when this routine					 *       is invoked.  It returns to start.s through ldsegs				 *				 *  Submitted by:				 *				 *    Erik Ivanenko				 *    University of Toronto				 *    erik.ivanenko@utoronto.ca				 *				 *  The license and distribution terms for this file may be				 *  found in the file LICENSE in this distribution or at				 *  http://www.rtems.com/license/LICENSE.				 *				 *  $Id: macros.inc,v 1.1.8.1 2003/09/04 18:44:09 joel Exp $				 */								.set GDT_CODE_PTR	, 0x08				.set GDT_DATA_PTR	, 0x10									.set BOARD_SELECT  , 0x301				.set BOARD_DATA	   , 0x302				.set BOARD_LATCH   , 0x303												#define SetExRegByte(_register,_value) \				        movb       $ ## _value, al; \					movw	  $ ## _register, dx; \				        outb       al, dx								#define SetExRegWord(_register,_value) \				        movw      $ ## _value, ax; \					movw      $ ## _register, dx ; \				        outw      ax, dx												#define DESC2(lim_0_15, bas_0_15, bas_16_23, access, gran, bas_24_31) \				 .word lim_0_15 ; \				 .word bas_0_15 ; \				 .byte bas_16_23 ; \				 .byte access ; \				 .byte gran ; \				 .byte bas_24_31								#define DESC3( _base, _limit) \				.word _limit ; \				.long _base								/* THE GET_ACCESS IS CHANGED FROM 8E TO 9E */								#define INTERRUPT_GATE( _vector ) \					.word   _vector ; \					.word	GDT_CODE_PTR ; \					.byte   0x0 ; \					.byte	0x8E ; \					.word	0x0								#define rLOAD_INDEX( _selector, _segment_register) \				        movl     _selector , _segment_register ; \				        addb	al, ( eax )								#define rLOAD_SEGMENT( _reg, _segment_register) \				        mov     _reg , _segment_register ; \								/* #define rLOAD_SEGMENT( _reg, _segment_register) \					.code16 ; \				        mov     _reg , _segment_register ; \				        .code32 				*/				#define pLOAD_SEGMENT( _selector, _segment_register) \				        movl     $ ##  _selector , eax ; .code16 ; \				        mov      ax, _segment_register ; .code32 								/* #define MOVE_WORD( _immed32, _reg ) \					data16 ; \					movl    _immed32, _reg				*/								#define MOVE_WORD( _immed32, _reg ) \					movw    _immed32, _reg								/* #define MOVE_IMMED_WORD( _immed32, _reg ) \					data16 ; \					mov    $ ## _immed32, _reg								#define CS_OFF( _cs_symbol, _reg ) \					data16 ; \					mov	_cs_symbol, _reg ; \					data16 ;\					andl	$0x000ffff, _reg								#define _16_NOPS \					nop ; \					nop ; \					nop ; \					nop ; \					nop ; \					nop ; \					nop ; \					nop ; \					nop ; \					nop ; \					nop ; \					nop ; \					nop ; \					nop ; \					nop ; \					nop ; 				*/											

相关资源