Remove stray white spaces.

This commit is contained in:
Ralf Corsepius
2004-04-21 10:43:04 +00:00
parent 48ea3df90c
commit 6128a4aa5e
575 changed files with 8073 additions and 7970 deletions

View File

@@ -1,5 +1,5 @@
/*-------------------------------------------------------------------------+ /*-------------------------------------------------------------------------+
| bsp.h - ARM BSP | bsp.h - ARM BSP
+--------------------------------------------------------------------------+ +--------------------------------------------------------------------------+
| This include file contains definitions related to the ARM BSP. | This include file contains definitions related to the ARM BSP.
+--------------------------------------------------------------------------+ +--------------------------------------------------------------------------+
@@ -10,7 +10,7 @@
| The license and distribution terms for this file may be | The license and distribution terms for this file may be
| found in found in the file LICENSE in this distribution or at | found in found in the file LICENSE in this distribution or at
| http://www.rtems.com/license/LICENSE. | http://www.rtems.com/license/LICENSE.
| |
| $Id$ | $Id$
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
@@ -28,7 +28,7 @@ extern "C" {
#include <rtems/iosupp.h> #include <rtems/iosupp.h>
#include <rtems/console.h> #include <rtems/console.h>
#include <rtems/clockdrv.h> #include <rtems/clockdrv.h>
/* /*
* Define the interrupt mechanism for Time Test 27 * Define the interrupt mechanism for Time Test 27
* *
@@ -38,11 +38,11 @@ extern "C" {
#define MUST_WAIT_FOR_INTERRUPT 0 #define MUST_WAIT_FOR_INTERRUPT 0
#define Install_tm27_vector( handler ) #define Install_tm27_vector( handler )
#define Cause_tm27_intr() #define Cause_tm27_intr()
#define Clear_tm27_intr() #define Clear_tm27_intr()
#define Lower_tm27_intr() #define Lower_tm27_intr()

View File

@@ -12,10 +12,10 @@
#ifndef __REGS_H__ #ifndef __REGS_H__
#define __REGS_H__ #define __REGS_H__
/* /*
* VARIABLE DECLARATION * VARIABLE DECLARATION
*/ */
#ifndef __asm__ #ifndef __asm__

View File

@@ -15,33 +15,33 @@
#define __asm__ #define __asm__
#include <registers.h> #include <registers.h>
/* /*
* Function to obtain, execute an IT handler and acknowledge the IT * Function to obtain, execute an IT handler and acknowledge the IT
*/ */
.globl ExecuteITHandler .globl ExecuteITHandler
ExecuteITHandler : ExecuteITHandler :
/* /*
* Here is the code to execute the appropriate INT handler * Here is the code to execute the appropriate INT handler
*/ */
mov pc, r0 mov pc, r0
#if 0 #if 0
/* /*
* Function to acknowledge the IT controller * Function to acknowledge the IT controller
*/ */
.globl AckControler .globl AckControler
AckControler: AckControler:
/* /*
* Here is the code to acknowledge the PIC * Here is the code to acknowledge the PIC
*/ */
b ReturnFromAck /* return to ISR handler */ b ReturnFromAck /* return to ISR handler */
#endif #endif

View File

@@ -23,5 +23,5 @@ void BSP_rtems_irq_mngt_init() {
* Here is the code to initialize the INT for * Here is the code to initialize the INT for
* the specified BSP * the specified BSP
*/ */
} }

View File

@@ -40,7 +40,7 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
{ {
rtems_irq_hdl *HdlTable; rtems_irq_hdl *HdlTable;
rtems_interrupt_level level; rtems_interrupt_level level;
if (!isValidInterrupt(irq->name)) { if (!isValidInterrupt(irq->name)) {
return 0; return 0;
} }
@@ -51,7 +51,7 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
if (*(HdlTable + irq->name) != default_int_handler) { if (*(HdlTable + irq->name) != default_int_handler) {
return 0; return 0;
} }
_CPU_ISR_Disable(level); _CPU_ISR_Disable(level);
/* /*
@@ -74,7 +74,7 @@ int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq)
{ {
rtems_irq_hdl *HdlTable; rtems_irq_hdl *HdlTable;
rtems_interrupt_level level; rtems_interrupt_level level;
if (!isValidInterrupt(irq->name)) { if (!isValidInterrupt(irq->name)) {
return 0; return 0;
} }
@@ -97,7 +97,7 @@ int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq)
* restore the default irq value * restore the default irq value
*/ */
*(HdlTable + irq->name) = default_int_handler; *(HdlTable + irq->name) = default_int_handler;
_CPU_ISR_Enable(level); _CPU_ISR_Enable(level);
return 1; return 1;

View File

@@ -22,7 +22,7 @@ extern "C" {
/* /*
* Include some preprocessor value also used by assember code * Include some preprocessor value also used by assember code
*/ */
#include <rtems.h> #include <rtems.h>
extern void default_int_handler(); extern void default_int_handler();
@@ -39,9 +39,9 @@ typedef enum {
} rtems_irq_symbolic_name; } rtems_irq_symbolic_name;
/* define that can be useful (the values are just examples) */ /* define that can be useful (the values are just examples) */
#define INTMASK 0x01 #define INTMASK 0x01
#define VECTOR_TABLE 0x00 #define VECTOR_TABLE 0x00
/* /*
* Type definition for RTEMS managed interrupts * Type definition for RTEMS managed interrupts
*/ */
@@ -71,9 +71,9 @@ typedef struct __rtems_irq_connect_data__ {
* It is usually called immediately AFTER connecting the interrupt handler. * It is usually called immediately AFTER connecting the interrupt handler.
* RTEMS may well need such a function when restoring normal interrupt * RTEMS may well need such a function when restoring normal interrupt
* processing after a debug session. * processing after a debug session.
* *
*/ */
rtems_irq_enable on; rtems_irq_enable on;
/* /*
* function for disabling interrupts at device level (ONLY!). * function for disabling interrupts at device level (ONLY!).
* The code will disable it at i8259s level. RATIONALE : anyway * The code will disable it at i8259s level. RATIONALE : anyway
@@ -143,7 +143,7 @@ void BSP_rtems_irq_mngt_init();
* 4) perform rescheduling when necessary, * 4) perform rescheduling when necessary,
* 5) restore the C scratch registers... * 5) restore the C scratch registers...
* 6) restore initial execution flow * 6) restore initial execution flow
* *
*/ */
int BSP_install_rtems_irq_handler (const rtems_irq_connect_data*); int BSP_install_rtems_irq_handler (const rtems_irq_connect_data*);

View File

@@ -14,7 +14,7 @@
.equ IRQ_Stack, 0x100 .equ IRQ_Stack, 0x100
.equ FIQ_Stack, 0x200 .equ FIQ_Stack, 0x200
.equ SVC_Stack, 0x300 .equ SVC_Stack, 0x300
/* Some standard definitions...*/ /* Some standard definitions...*/
.equ Mode_USR, 0x10 .equ Mode_USR, 0x10
@@ -33,20 +33,20 @@
.text .text
.globl _start .globl _start
_start: _start:
/* /*
* Here is the code to initialize the low-level BSP environment * Here is the code to initialize the low-level BSP environment
* (Chip Select, PLL, ....?) * (Chip Select, PLL, ....?)
/* Copy data from FLASH to RAM */ /* Copy data from FLASH to RAM */
LDR r0, =_initdata /* load address of region */ LDR r0, =_initdata /* load address of region */
LDR r1, =0x400000 /* execution address of region */ LDR r1, =0x400000 /* execution address of region */
LDR r2, =_edata /* copy execution address into r2 */ LDR r2, =_edata /* copy execution address into r2 */
copy: copy:
CMP r1, r2 /* loop whilst r1 < r2 */ CMP r1, r2 /* loop whilst r1 < r2 */
LDRLO r3, [r0], #4 LDRLO r3, [r0], #4
STRLO r3, [r1], #4 STRLO r3, [r1], #4
@@ -55,15 +55,15 @@ copy:
/* zero the bss */ /* zero the bss */
LDR r1, =__bss_end__ /* get end of ZI region */ LDR r1, =__bss_end__ /* get end of ZI region */
LDR r0, =__bss_start__ /* load base address of ZI region */ LDR r0, =__bss_start__ /* load base address of ZI region */
zi_init: zi_init:
MOV r2, #0 MOV r2, #0
CMP r0, r1 /* loop whilst r0 < r1 */ CMP r0, r1 /* loop whilst r0 < r1 */
STRLOT r2, [r0], #4 STRLOT r2, [r0], #4
BLO zi_init BLO zi_init
/* Load basic ARM7 interrupt table */ /* Load basic ARM7 interrupt table */
VectorInit: VectorInit:
MOV R8, #0 MOV R8, #0
ADR R9, Vector_Init_Block ADR R9, Vector_Init_Block
LDMIA R9!, {R0-R7} /* Copy the Vectors (8 words) */ LDMIA R9!, {R0-R7} /* Copy the Vectors (8 words) */
@@ -75,10 +75,10 @@ VectorInit:
/******************************************************* /*******************************************************
standard exception vectors table standard exception vectors table
*** Must be located at address 0 *** Must be located at address 0
********************************************************/ ********************************************************/
Vector_Init_Block: Vector_Init_Block:
LDR PC, Reset_Addr LDR PC, Reset_Addr
LDR PC, Undefined_Addr LDR PC, Undefined_Addr
LDR PC, SWI_Addr LDR PC, SWI_Addr
@@ -89,36 +89,36 @@ Vector_Init_Block:
LDR PC, FIQ_Addr LDR PC, FIQ_Addr
.globl Reset_Addr .globl Reset_Addr
Reset_Addr: .long _start Reset_Addr: .long _start
Undefined_Addr: .long Undefined_Handler Undefined_Addr: .long Undefined_Handler
SWI_Addr: .long SWI_Handler SWI_Addr: .long SWI_Handler
Prefetch_Addr: .long Prefetch_Handler Prefetch_Addr: .long Prefetch_Handler
Abort_Addr: .long Abort_Handler Abort_Addr: .long Abort_Handler
.long 0 .long 0
IRQ_Addr: .long IRQ_Handler IRQ_Addr: .long IRQ_Handler
FIQ_Addr: .long FIQ_Handler FIQ_Addr: .long FIQ_Handler
/* The following handlers do not do anything useful */ /* The following handlers do not do anything useful */
.globl Undefined_Handler .globl Undefined_Handler
Undefined_Handler: Undefined_Handler:
B Undefined_Handler B Undefined_Handler
.globl SWI_Handler .globl SWI_Handler
SWI_Handler: SWI_Handler:
B SWI_Handler B SWI_Handler
.globl Prefetch_Handler .globl Prefetch_Handler
Prefetch_Handler: Prefetch_Handler:
B Prefetch_Handler B Prefetch_Handler
.globl Abort_Handler .globl Abort_Handler
Abort_Handler: Abort_Handler:
B Abort_Handler B Abort_Handler
.globl IRQ_Handler .globl IRQ_Handler
IRQ_Handler: IRQ_Handler:
B IRQ_Handler B IRQ_Handler
.globl FIQ_Handler .globl FIQ_Handler
FIQ_Handler: FIQ_Handler:
B FIQ_Handler B FIQ_Handler
init2 : init2 :
/* --- Initialise stack pointer registers /* --- Initialise stack pointer registers
Set up the ABORT stack pointer last and stay in SVC mode */ Set up the ABORT stack pointer last and stay in SVC mode */
MOV r0, #(Mode_ABORT | I_Bit | F_Bit) /* No interrupts */ MOV r0, #(Mode_ABORT | I_Bit | F_Bit) /* No interrupts */

View File

@@ -1,7 +1,7 @@
/*-------------------------------------------------------------------------+ /*-------------------------------------------------------------------------+
| This file contains the ARM BSP startup package. It includes application, | This file contains the ARM BSP startup package. It includes application,
| board, and monitor specific initialization and configuration. The generic CPU | board, and monitor specific initialization and configuration. The generic CPU
| dependent initialization has been performed before this routine is invoked. | dependent initialization has been performed before this routine is invoked.
+--------------------------------------------------------------------------+ +--------------------------------------------------------------------------+
| |
| Copyright (c) 2000 Canon Research Centre France SA. | Copyright (c) 2000 Canon Research Centre France SA.
@@ -30,11 +30,11 @@
volatile unsigned long *Regs = (unsigned long*)0xdeadbeef; /* Chip registers */ volatile unsigned long *Regs = (unsigned long*)0xdeadbeef; /* Chip registers */
extern uint32_t _end; /* End of BSS. Defined in 'linkcmds'. */ extern uint32_t _end; /* End of BSS. Defined in 'linkcmds'. */
/* /*
* Size of heap if it is 0 it will be dynamically defined by memory size, * Size of heap if it is 0 it will be dynamically defined by memory size,
* otherwise the value should be changed by binary patch * otherwise the value should be changed by binary patch
*/ */
uint32_t _heap_size = 0; uint32_t _heap_size = 0;
/* Size of stack used during initialization. Defined in 'start.s'. */ /* Size of stack used during initialization. Defined in 'start.s'. */
extern uint32_t _stack_size; extern uint32_t _stack_size;
@@ -67,7 +67,7 @@ void bsp_postdriver_hook(void);
| since drivers are not yet initialized. | since drivers are not yet initialized.
| Global Variables: None. | Global Variables: None.
| Arguments: None. | Arguments: None.
| Returns: Nothing. | Returns: Nothing.
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
void bsp_pretasking_hook(void) void bsp_pretasking_hook(void)
{ {
@@ -76,9 +76,9 @@ void bsp_pretasking_hook(void)
{ {
_heap_size = 0x420000 - rtemsFreeMemStart; _heap_size = 0x420000 - rtemsFreeMemStart;
} }
bsp_libc_init((void *)rtemsFreeMemStart, _heap_size, 0); bsp_libc_init((void *)rtemsFreeMemStart, _heap_size, 0);
rtemsFreeMemStart += _heap_size; /* HEAP_SIZE in KBytes */ rtemsFreeMemStart += _heap_size; /* HEAP_SIZE in KBytes */
@@ -89,14 +89,14 @@ void bsp_pretasking_hook(void)
#endif /* RTEMS_DEBUG */ #endif /* RTEMS_DEBUG */
} /* bsp_pretasking_hook */ } /* bsp_pretasking_hook */
/*-------------------------------------------------------------------------+ /*-------------------------------------------------------------------------+
| Function: bsp_start | Function: bsp_start
| Description: Called before main is invoked. | Description: Called before main is invoked.
| Global Variables: None. | Global Variables: None.
| Arguments: None. | Arguments: None.
| Returns: Nothing. | Returns: Nothing.
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
void bsp_start_default( void ) void bsp_start_default( void )
{ {
@@ -116,7 +116,7 @@ void bsp_start_default( void )
/* Place RTEMS workspace at beginning of free memory. */ /* Place RTEMS workspace at beginning of free memory. */
BSP_Configuration.work_space_start = (void *)rtemsFreeMemStart; BSP_Configuration.work_space_start = (void *)rtemsFreeMemStart;
rtemsFreeMemStart += BSP_Configuration.work_space_size; rtemsFreeMemStart += BSP_Configuration.work_space_size;
/* /*

View File

@@ -1,5 +1,5 @@
/*-------------------------------------------------------------------------+ /*-------------------------------------------------------------------------+
| exit.c - ARM BSP | exit.c - ARM BSP
+--------------------------------------------------------------------------+ +--------------------------------------------------------------------------+
| Routines to shutdown and reboot the BSP. | Routines to shutdown and reboot the BSP.
+--------------------------------------------------------------------------+ +--------------------------------------------------------------------------+

View File

@@ -55,7 +55,7 @@ void console_outbyte_polled(
} }
/* /*
* console_inbyte_nonblocking * console_inbyte_nonblocking
* *
* This routine polls for a character. * This routine polls for a character.
*/ */

View File

@@ -68,7 +68,7 @@ extern rtems_configuration_table BSP_Configuration;
/* /*
* NOTE: Use the standard Console driver entry * NOTE: Use the standard Console driver entry
*/ */
/* /*
* NOTE: Use the standard Clock driver entry * NOTE: Use the standard Clock driver entry
*/ */

View File

@@ -59,11 +59,11 @@ _mainCRTStartup:
mov a2, #0 /* Second arg: fill value */ mov a2, #0 /* Second arg: fill value */
mov fp, a2 /* Null frame pointer */ mov fp, a2 /* Null frame pointer */
mov r7, a2 /* Null frame pointer for Thumb */ mov r7, a2 /* Null frame pointer for Thumb */
ldr a1, .LC1 /* First arg: start of memory block */ ldr a1, .LC1 /* First arg: start of memory block */
ldr a3, .LC2 ldr a3, .LC2
sub a3, a3, a1 /* Third arg: length of block */ sub a3, a3, a1 /* Third arg: length of block */
#ifdef __thumb__ /* Enter Thumb mode.... */ #ifdef __thumb__ /* Enter Thumb mode.... */
@@ -73,9 +73,9 @@ _mainCRTStartup:
.code 16 .code 16
.global __change_mode .global __change_mode
.thumb_func .thumb_func
__change_mode: __change_mode:
#endif #endif
bl FUNCTION (memset) bl FUNCTION (memset)
#if !defined (ARM_RDP_MONITOR) && !defined (ARM_RDI_MONITOR) #if !defined (ARM_RDP_MONITOR) && !defined (ARM_RDI_MONITOR)
mov r0, #0 /* no arguments */ mov r0, #0 /* no arguments */
@@ -83,9 +83,9 @@ __change_mode:
#else #else
/* Need to set up standard file handles */ /* Need to set up standard file handles */
bl FUNCTION (initialize_monitor_handles) bl FUNCTION (initialize_monitor_handles)
/* XXX for now let's just get the code up :) */ /* XXX for now let's just get the code up :) */
#if 0 #if 0
#ifdef ARM_RDP_MONITOR #ifdef ARM_RDP_MONITOR
swi SWI_GetEnv /* sets r0 to point to the command line */ swi SWI_GetEnv /* sets r0 to point to the command line */
mov r1, r0 mov r1, r0
@@ -171,7 +171,7 @@ __change_mode:
str r4, [r3] str r4, [r3]
add r3, #4 add r3, #4
b .LC15 b .LC15
.LC14: .LC14:
#else #else
add r2, sp, r0, LSL #2 /* End of args */ add r2, sp, r0, LSL #2 /* End of args */
mov r3, sp /* Start of args */ mov r3, sp /* Start of args */
@@ -206,10 +206,10 @@ change_back:
*/ */
swi SWI_Exit swi SWI_Exit
#endif #endif
/* For Thumb, constants must be after the code since only /* For Thumb, constants must be after the code since only
positive offsets are supported for PC relative addresses. */ positive offsets are supported for PC relative addresses. */
.align 0 .align 0
.LC0: .LC0:
#ifdef ARM_RDI_MONITOR #ifdef ARM_RDI_MONITOR
@@ -241,9 +241,9 @@ StackLimit: .word 0
CommandLine: .space 256,0 /* Maximum length of 255 chars handled */ CommandLine: .space 256,0 /* Maximum length of 255 chars handled */
#endif #endif
.globl SWI_Handler .globl SWI_Handler
SWI_Handler: SWI_Handler:
B SWI_Handler B SWI_Handler
#ifdef __pe__ #ifdef __pe__
.section .idata$3 .section .idata$3
.long 0,0,0,0,0,0,0,0 .long 0,0,0,0,0,0,0,0

View File

@@ -15,11 +15,11 @@
*/ */
#include <string.h> #include <string.h>
#include <bsp.h> #include <bsp.h>
#include <rtems/libio.h> #include <rtems/libio.h>
#include <rtems/libcsupport.h> #include <rtems/libcsupport.h>
/* /*
* The original table from the application and our copy of it with * The original table from the application and our copy of it with
* some changes. * some changes.
@@ -36,7 +36,7 @@ char *rtems_progname;
/* /*
* Use the shared implementations of the following routines * Use the shared implementations of the following routines
*/ */
void bsp_postdriver_hook(void); void bsp_postdriver_hook(void);
void bsp_libc_init( void *, uint32_t, int ); void bsp_libc_init( void *, uint32_t, int );
@@ -53,7 +53,7 @@ void bsp_libc_init( void *, uint32_t, int );
* not yet initialized. * not yet initialized.
* *
*/ */
void bsp_pretasking_hook(void) void bsp_pretasking_hook(void)
{ {
extern int HeapBase; extern int HeapBase;
@@ -68,7 +68,7 @@ void bsp_pretasking_hook(void)
#endif #endif
} }
/* /*
* bsp_start * bsp_start
* *

View File

@@ -1,7 +1,7 @@
/* Support files for GNU libc. Files in the C namespace go here. /* Support files for GNU libc. Files in the C namespace go here.
Files in the system namespace (ie those that start with an underscore) Files in the system namespace (ie those that start with an underscore)
go in syscalls.c. go in syscalls.c.
Note: These functions are in a seperate file so that OS providers can Note: These functions are in a seperate file so that OS providers can
overrride the system call stubs (defined in syscalls.c) without having overrride the system call stubs (defined in syscalls.c) without having
to provide libc funcitons as well. */ to provide libc funcitons as well. */

View File

@@ -40,7 +40,7 @@ initialize_monitor_handles (void)
{ {
#ifdef ARM_RDI_MONITOR #ifdef ARM_RDI_MONITOR
int volatile block[3]; int volatile block[3];
block[0] = (int) ":tt"; block[0] = (int) ":tt";
block[2] = 3; /* length of filename */ block[2] = 3; /* length of filename */
block[1] = 0; /* mode "r" */ block[1] = 0; /* mode "r" */
@@ -80,11 +80,11 @@ _swiread (int file,
int fh = file; int fh = file;
#ifdef ARM_RDI_MONITOR #ifdef ARM_RDI_MONITOR
int block[3]; int block[3];
block[0] = fh; block[0] = fh;
block[1] = (int) ptr; block[1] = (int) ptr;
block[2] = len; block[2] = len;
return do_AngelSWI (AngelSWI_Reason_Read, block); return do_AngelSWI (AngelSWI_Reason_Read, block);
#else #else
asm ("mov r0, %1; mov r1, %2;mov r2, %3; swi %a0" asm ("mov r0, %1; mov r1, %2;mov r2, %3; swi %a0"
@@ -104,11 +104,11 @@ _swiwrite (
int fh = file; int fh = file;
#ifdef ARM_RDI_MONITOR #ifdef ARM_RDI_MONITOR
int block[3]; int block[3];
block[0] = fh; block[0] = fh;
block[1] = (int) ptr; block[1] = (int) ptr;
block[2] = len; block[2] = len;
return do_AngelSWI (AngelSWI_Reason_Write, block); return do_AngelSWI (AngelSWI_Reason_Write, block);
#else #else
asm ("mov r0, %1; mov r1, %2;mov r2, %3; swi %a0" asm ("mov r0, %1; mov r1, %2;mov r2, %3; swi %a0"
@@ -119,14 +119,14 @@ _swiwrite (
} }
/* /*
* Move me * Move me
*/ */
void void
bsp_cleanup (void ) bsp_cleanup (void )
{ {
/* FIXME: return code is thrown away */ /* FIXME: return code is thrown away */
#ifdef ARM_RDI_MONITOR #ifdef ARM_RDI_MONITOR
do_AngelSWI (AngelSWI_Reason_ReportException, do_AngelSWI (AngelSWI_Reason_ReportException,
(void *) ADP_Stopped_ApplicationExit); (void *) ADP_Stopped_ApplicationExit);

View File

@@ -78,7 +78,7 @@ __rt_stkovf_split_big:
@ dummy space on the stack and passing in a "phantom" arg1 into @ dummy space on the stack and passing in a "phantom" arg1 into
@ the function. This means that we do not need to worry about @ the function. This means that we do not need to worry about
@ preserving the stack under "sp" even on function return. @ preserving the stack under "sp" even on function return.
@ @
@ Code should never poke values beneath sp. The sp register @ Code should never poke values beneath sp. The sp register
@ should always be "dropped" first to cover the data. This @ should always be "dropped" first to cover the data. This
@ protects the data against any events that may try and use @ protects the data against any events that may try and use

View File

@@ -44,7 +44,7 @@ rtems_irq_connect_data clock_isr_data = {BSP_TC1OI,
} while(0) } while(0)
/* /*
* Set up the clock hardware * Set up the clock hardware
*/ */
#define Clock_driver_support_initialize_hardware() \ #define Clock_driver_support_initialize_hardware() \

View File

@@ -34,8 +34,8 @@ static int uart_set_attributes(int minor, const struct termios *t);
unsigned long Console_Port_Count = NUM_DEVS; unsigned long Console_Port_Count = NUM_DEVS;
console_data Console_Port_Data[NUM_DEVS]; console_data Console_Port_Data[NUM_DEVS];
rtems_device_minor_number Console_Port_Minor = 0; rtems_device_minor_number Console_Port_Minor = 0;
console_fns uart_fns = console_fns uart_fns =
{ {
libchip_serial_default_probe, libchip_serial_default_probe,
uart_first_open, uart_first_open,
uart_last_close, uart_last_close,
@@ -69,7 +69,7 @@ console_tbl Console_Port_Tbl[] = {
static int uart_first_open(int major, int minor, void *arg) {return 0;} static int uart_first_open(int major, int minor, void *arg) {return 0;}
static int uart_last_close(int major, int minor, void *arg) {return 0;} static int uart_last_close(int major, int minor, void *arg) {return 0;}
static int uart_read(int minor) static int uart_read(int minor)
{ {
return uart_poll_read(minor); return uart_poll_read(minor);
} }
@@ -79,7 +79,7 @@ static void uart_write_polled(int minor, char c)
uart_write(minor, &c, 1); uart_write(minor, &c, 1);
} }
static int uart_set_attributes(int minor, const struct termios *t) static int uart_set_attributes(int minor, const struct termios *t)
{ {
return 0; return 0;
} }
@@ -100,7 +100,7 @@ int uart_poll_read(int minor)
return -1; return -1;
} }
err = *data_reg; err = *data_reg;
c = err & 0xff; c = err & 0xff;
@@ -133,7 +133,7 @@ static int uart_write(int minor, const char *buf, int len)
c = (char) buf[i]; c = (char) buf[i];
*data_reg = c; *data_reg = c;
} }
return 1; return 1;
} }
@@ -142,7 +142,7 @@ static void uart_init(int minor)
volatile uint32_t *data_reg; volatile uint32_t *data_reg;
volatile uint32_t *ctrl_reg1; volatile uint32_t *ctrl_reg1;
volatile uint32_t *ctrl_reg2; volatile uint32_t *ctrl_reg2;
data_reg = (uint32_t*)Console_Port_Tbl[minor].ulDataPort; data_reg = (uint32_t*)Console_Port_Tbl[minor].ulDataPort;
ctrl_reg1 = (uint32_t*)Console_Port_Tbl[minor].ulCtrlPort1; ctrl_reg1 = (uint32_t*)Console_Port_Tbl[minor].ulCtrlPort1;
ctrl_reg2 = (uint32_t*)Console_Port_Tbl[minor].ulCtrlPort2; ctrl_reg2 = (uint32_t*)Console_Port_Tbl[minor].ulCtrlPort2;
@@ -156,6 +156,6 @@ static void uart_init(int minor)
*ctrl_reg1 = (EP7312_UART_WRDLEN8 | *ctrl_reg1 = (EP7312_UART_WRDLEN8 |
EP7312_UART_FIFOEN | EP7312_UART_FIFOEN |
0x17); /* 9600 baud */ 0x17); /* 9600 baud */
} }

View File

@@ -24,7 +24,7 @@ extern "C" {
#include <rtems/iosupp.h> #include <rtems/iosupp.h>
#include <rtems/console.h> #include <rtems/console.h>
#include <rtems/clockdrv.h> #include <rtems/clockdrv.h>
/* /*
* Define the interrupt mechanism for Time Test 27 * Define the interrupt mechanism for Time Test 27
* *
@@ -42,16 +42,16 @@ extern rtems_configuration_table BSP_Configuration;
#define MUST_WAIT_FOR_INTERRUPT 0 #define MUST_WAIT_FOR_INTERRUPT 0
#define Install_tm27_vector( handler ) #define Install_tm27_vector( handler )
#define Cause_tm27_intr() #define Cause_tm27_intr()
#define Clear_tm27_intr() #define Clear_tm27_intr()
#define Lower_tm27_intr() #define Lower_tm27_intr()
/* /*
* Network driver configuration * Network driver configuration
*/ */

View File

@@ -2,7 +2,7 @@
* Cirrus EP7312 register declarations * Cirrus EP7312 register declarations
* *
* Copyright (c) 2002 by Charlie Steader <charlies@poliac.com> * Copyright (c) 2002 by Charlie Steader <charlies@poliac.com>
* *
* Copyright (c) 2002 by Jay Monkman <jtm@smoothsmoothie.com> * Copyright (c) 2002 by Jay Monkman <jtm@smoothsmoothie.com>
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be

View File

@@ -2,7 +2,7 @@
* Cirrus EP7312 Intererrupt handler * Cirrus EP7312 Intererrupt handler
* *
* Copyright (c) 2002 by Jay Monkman <jtm@smoothsmoothie.com> * Copyright (c) 2002 by Jay Monkman <jtm@smoothsmoothie.com>
* *
* Copyright (c) 2002 by Charlie Steader <charlies@poliac.com> * Copyright (c) 2002 by Charlie Steader <charlies@poliac.com>
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
@@ -15,11 +15,11 @@
*/ */
#define __asm__ #define __asm__
#include "irq.h" #include "irq.h"
#define VECTOR_TABLE 0x40 #define VECTOR_TABLE 0x40
/* /*
* Function to obtain, execute an IT handler and acknowledge the IT * Function to obtain, execute an IT handler and acknowledge the IT
*/ */
.globl ExecuteITHandler .globl ExecuteITHandler

View File

@@ -2,7 +2,7 @@
* Cirrus EP7312 Intererrupt handler * Cirrus EP7312 Intererrupt handler
* *
* Copyright (c) 2002 by Jay Monkman <jtm@smoothsmoothie.com> * Copyright (c) 2002 by Jay Monkman <jtm@smoothsmoothie.com>
* *
* Copyright (c) 2002 by Charlie Steader <charlies@poliac.com> * Copyright (c) 2002 by Charlie Steader <charlies@poliac.com>
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be

View File

@@ -2,7 +2,7 @@
* Cirrus EP7312 Intererrupt handler * Cirrus EP7312 Intererrupt handler
* *
* Copyright (c) 2002 by Jay Monkman <jtm@smoothsmoothie.com> * Copyright (c) 2002 by Jay Monkman <jtm@smoothsmoothie.com>
* *
* Copyright (c) 2002 by Charlie Steader <charlies@poliac.com> * Copyright (c) 2002 by Charlie Steader <charlies@poliac.com>
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
@@ -39,7 +39,7 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
{ {
rtems_irq_hdl *HdlTable; rtems_irq_hdl *HdlTable;
rtems_interrupt_level level; rtems_interrupt_level level;
if (!isValidInterrupt(irq->name)) { if (!isValidInterrupt(irq->name)) {
return 0; return 0;
} }
@@ -50,7 +50,7 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
if (*(HdlTable + irq->name) != default_int_handler) { if (*(HdlTable + irq->name) != default_int_handler) {
return 0; return 0;
} }
_CPU_ISR_Disable(level); _CPU_ISR_Disable(level);
/* /*
@@ -81,7 +81,7 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
/* interrupt managed by INTMR3 and INTSR3 */ /* interrupt managed by INTMR3 and INTSR3 */
*EP7312_INTMR3 |= (1 << (irq->name - 21)); *EP7312_INTMR3 |= (1 << (irq->name - 21));
} }
/* /*
* Enable interrupt on device * Enable interrupt on device
*/ */
@@ -89,9 +89,9 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
{ {
irq->on(irq); irq->on(irq);
} }
_CPU_ISR_Enable(level); _CPU_ISR_Enable(level);
return 1; return 1;
} }
@@ -99,7 +99,7 @@ int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq)
{ {
rtems_irq_hdl *HdlTable; rtems_irq_hdl *HdlTable;
rtems_interrupt_level level; rtems_interrupt_level level;
if (!isValidInterrupt(irq->name)) { if (!isValidInterrupt(irq->name)) {
return 0; return 0;
} }
@@ -135,18 +135,18 @@ int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq)
/* interrupt managed by INTMR3 and INTSR3 */ /* interrupt managed by INTMR3 and INTSR3 */
*EP7312_INTMR3 &= ~(1 << (irq->name - 21)); *EP7312_INTMR3 &= ~(1 << (irq->name - 21));
} }
/* /*
* Disable interrupt on device * Disable interrupt on device
*/ */
if(irq->off) if(irq->off)
irq->off(irq); irq->off(irq);
/* /*
* restore the default irq value * restore the default irq value
*/ */
*(HdlTable + irq->name) = default_int_handler; *(HdlTable + irq->name) = default_int_handler;
_CPU_ISR_Enable(level); _CPU_ISR_Enable(level);
return 1; return 1;

View File

@@ -2,7 +2,7 @@
* Cirrus EP7312 Intererrupt handler * Cirrus EP7312 Intererrupt handler
* *
* Copyright (c) 2002 by Jay Monkman <jtm@smoothsmoothie.com> * Copyright (c) 2002 by Jay Monkman <jtm@smoothsmoothie.com>
* *
* Copyright (c) 2002 by Charlie Steader <charlies@poliac.com> * Copyright (c) 2002 by Charlie Steader <charlies@poliac.com>
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
@@ -29,7 +29,7 @@ extern "C" {
/* /*
* Include some preprocessor value also used by assember code * Include some preprocessor value also used by assember code
*/ */
#include <rtems.h> #include <rtems.h>
extern void default_int_handler(); extern void default_int_handler();
@@ -68,7 +68,7 @@ typedef enum {
} rtems_irq_symbolic_name; } rtems_irq_symbolic_name;
/* /*
* Type definition for RTEMS managed interrupts * Type definition for RTEMS managed interrupts
*/ */
@@ -98,9 +98,9 @@ typedef struct __rtems_irq_connect_data__ {
* It is usually called immediately AFTER connecting the interrupt handler. * It is usually called immediately AFTER connecting the interrupt handler.
* RTEMS may well need such a function when restoring normal interrupt * RTEMS may well need such a function when restoring normal interrupt
* processing after a debug session. * processing after a debug session.
* *
*/ */
rtems_irq_enable on; rtems_irq_enable on;
/* /*
* function for disabling interrupts at device level (ONLY!). * function for disabling interrupts at device level (ONLY!).
* The code will disable it at i8259s level. RATIONALE : anyway * The code will disable it at i8259s level. RATIONALE : anyway
@@ -170,7 +170,7 @@ void BSP_rtems_irq_mngt_init();
* 4) perform rescheduling when necessary, * 4) perform rescheduling when necessary,
* 5) restore the C scratch registers... * 5) restore the C scratch registers...
* 6) restore initial execution flow * 6) restore initial execution flow
* *
*/ */
int BSP_install_rtems_irq_handler (const rtems_irq_connect_data*); int BSP_install_rtems_irq_handler (const rtems_irq_connect_data*);

View File

@@ -28,8 +28,8 @@ void cs8900_io_set_reg (int dev, unsigned short reg, unsigned short data)
{ {
/* works the same for all values of dev */ /* works the same for all values of dev */
/* /*
printf("cs8900_io_set_reg: reg: %#6x, val %#6x\n", printf("cs8900_io_set_reg: reg: %#6x, val %#6x\n",
CS8900_BASE + reg, CS8900_BASE + reg,
data); data);
*/ */
*(unsigned short *)(CS8900_BASE + reg) = data; *(unsigned short *)(CS8900_BASE + reg) = data;
@@ -47,7 +47,7 @@ unsigned short cs8900_io_get_reg (int dev, unsigned short reg)
return val; return val;
} }
/* cs8900_mem_set_reg - sets one of the registers mapped through /* cs8900_mem_set_reg - sets one of the registers mapped through
* PacketPage * PacketPage
*/ */
void cs8900_mem_set_reg (int dev, unsigned long reg, unsigned short data) void cs8900_mem_set_reg (int dev, unsigned long reg, unsigned short data)
@@ -57,7 +57,7 @@ void cs8900_mem_set_reg (int dev, unsigned long reg, unsigned short data)
cs8900_io_set_reg(dev, CS8900_IO_PP_DATA_PORT0, data); cs8900_io_set_reg(dev, CS8900_IO_PP_DATA_PORT0, data);
} }
/* cs8900_mem_get_reg - reads one of the registers mapped through /* cs8900_mem_get_reg - reads one of the registers mapped through
* PacketPage * PacketPage
*/ */
unsigned short cs8900_mem_get_reg (int dev, unsigned long reg) unsigned short cs8900_mem_get_reg (int dev, unsigned long reg)
@@ -96,7 +96,7 @@ unsigned short cs8900_get_data_block (int dev, unsigned char *data)
len = cs8900_mem_get_reg(dev, CS8900_PP_RxLength); len = cs8900_mem_get_reg(dev, CS8900_PP_RxLength);
for (i = 0; i < ((len + 1) / 2); i++) { for (i = 0; i < ((len + 1) / 2); i++) {
((short *)data)[i] = cs8900_io_get_reg(dev, ((short *)data)[i] = cs8900_io_get_reg(dev,
CS8900_IO_RX_TX_DATA_PORT0); CS8900_IO_RX_TX_DATA_PORT0);
} }
return len; return len;
@@ -115,10 +115,10 @@ void cs8900_tx_load (int dev, struct mbuf *m)
len += m->m_len; len += m->m_len;
m = m->m_next; m = m->m_next;
} while (m != 0); } while (m != 0);
data = (unsigned short *) &g_enetbuf[0]; data = (unsigned short *) &g_enetbuf[0];
for (i = 0; i < ((len + 1) / 2); i++) { for (i = 0; i < ((len + 1) / 2); i++) {
cs8900_io_set_reg(dev, cs8900_io_set_reg(dev,
CS8900_IO_RX_TX_DATA_PORT0, CS8900_IO_RX_TX_DATA_PORT0,
data[i]); data[i]);
} }

View File

@@ -2,7 +2,7 @@
* Cirrus EP7312 Startup code * Cirrus EP7312 Startup code
* *
* Copyright (c) 2002 by Jay Monkman <jtm@smoothsmoothie.com> * Copyright (c) 2002 by Jay Monkman <jtm@smoothsmoothie.com>
* *
* Copyright (c) 2002 by Charlie Steader <charlies@poliac.com> * Copyright (c) 2002 by Charlie Steader <charlies@poliac.com>
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
@@ -14,7 +14,7 @@
* $Id$ * $Id$
*/ */
/* Some standard definitions...*/ /* Some standard definitions...*/
.equ Mode_USR, 0x10 .equ Mode_USR, 0x10
@@ -33,7 +33,7 @@
.text .text
.globl _start .globl _start
_start: _start:
/* store the sp */ /* store the sp */
mov r12, sp mov r12, sp
@@ -41,19 +41,19 @@ _start:
* Here is the code to initialize the low-level BSP environment * Here is the code to initialize the low-level BSP environment
* (Chip Select, PLL, ....?) * (Chip Select, PLL, ....?)
*/ */
/* zero the bss */ /* zero the bss */
LDR r1, =_bss_end_ /* get end of ZI region */ LDR r1, =_bss_end_ /* get end of ZI region */
LDR r0, =_bss_start_ /* load base address of ZI region */ LDR r0, =_bss_start_ /* load base address of ZI region */
zi_init: zi_init:
MOV r2, #0 MOV r2, #0
CMP r0, r1 /* loop whilst r0 < r1 */ CMP r0, r1 /* loop whilst r0 < r1 */
STRLOT r2, [r0], #4 STRLOT r2, [r0], #4
BLO zi_init BLO zi_init
/* Load basic ARM7 interrupt table */ /* Load basic ARM7 interrupt table */
VectorInit: VectorInit:
MOV R0, #0 MOV R0, #0
ADR R1, Vector_Init_Block ADR R1, Vector_Init_Block
LDMIA R1!, {R2, r3} /* Copy the Vectors (8 words) */ LDMIA R1!, {R2, r3} /* Copy the Vectors (8 words) */
@@ -78,10 +78,10 @@ VectorInit:
/******************************************************* /*******************************************************
standard exception vectors table standard exception vectors table
*** Must be located at address 0 *** Must be located at address 0
********************************************************/ ********************************************************/
Vector_Init_Block: Vector_Init_Block:
LDR PC, Reset_Addr LDR PC, Reset_Addr
LDR PC, Undefined_Addr LDR PC, Undefined_Addr
LDR PC, SWI_Addr LDR PC, SWI_Addr
@@ -92,45 +92,45 @@ Vector_Init_Block:
LDR PC, FIQ_Addr LDR PC, FIQ_Addr
.globl Reset_Addr .globl Reset_Addr
Reset_Addr: .long _start Reset_Addr: .long _start
Undefined_Addr: .long Undefined_Handler Undefined_Addr: .long Undefined_Handler
SWI_Addr: .long SWI_Handler SWI_Addr: .long SWI_Handler
Prefetch_Addr: .long Prefetch_Handler Prefetch_Addr: .long Prefetch_Handler
Abort_Addr: .long Abort_Handler Abort_Addr: .long Abort_Handler
.long 0 .long 0
IRQ_Addr: .long IRQ_Handler IRQ_Addr: .long IRQ_Handler
FIQ_Addr: .long FIQ_Handler FIQ_Addr: .long FIQ_Handler
/* The following handlers do not do anything useful */ /* The following handlers do not do anything useful */
.globl Undefined_Handler .globl Undefined_Handler
Undefined_Handler: Undefined_Handler:
B Undefined_Handler B Undefined_Handler
.globl SWI_Handler .globl SWI_Handler
SWI_Handler: SWI_Handler:
B SWI_Handler B SWI_Handler
.globl Prefetch_Handler .globl Prefetch_Handler
Prefetch_Handler: Prefetch_Handler:
B Prefetch_Handler B Prefetch_Handler
.globl Abort_Handler .globl Abort_Handler
Abort_Handler: Abort_Handler:
B Abort_Handler B Abort_Handler
.globl IRQ_Handler .globl IRQ_Handler
IRQ_Handler: IRQ_Handler:
B IRQ_Handler B IRQ_Handler
.globl FIQ_Handler .globl FIQ_Handler
FIQ_Handler: FIQ_Handler:
B FIQ_Handler B FIQ_Handler
init2 : init2 :
/* --- Initialise stack pointer registers */ /* --- Initialise stack pointer registers */
/* Enter IRQ mode and set up the IRQ stack pointer */ /* Enter IRQ mode and set up the IRQ stack pointer */
MOV r0, #Mode_IRQ | I_Bit | F_Bit /* No interrupts */ MOV r0, #Mode_IRQ | I_Bit | F_Bit /* No interrupts */
MSR cpsr, r0 MSR cpsr, r0
ldr r1, =_irq_stack_size ldr r1, =_irq_stack_size
LDR sp, =_irq_stack LDR sp, =_irq_stack
add sp, sp, r1 add sp, sp, r1
sub sp, sp, #0x64 sub sp, sp, #0x64
/* Enter FIQ mode and set up the FIQ stack pointer */ /* Enter FIQ mode and set up the FIQ stack pointer */
MOV r0, #Mode_FIQ | I_Bit | F_Bit /* No interrupts */ MOV r0, #Mode_FIQ | I_Bit | F_Bit /* No interrupts */
@@ -138,7 +138,7 @@ init2 :
ldr r1, =_fiq_stack_size ldr r1, =_fiq_stack_size
LDR sp, =_fiq_stack LDR sp, =_fiq_stack
add sp, sp, r1 add sp, sp, r1
sub sp, sp, #0x64 sub sp, sp, #0x64
/* Enter ABT mode and set up the ABT stack pointer */ /* Enter ABT mode and set up the ABT stack pointer */
MOV r0, #Mode_ABT | I_Bit | F_Bit /* No interrupts */ MOV r0, #Mode_ABT | I_Bit | F_Bit /* No interrupts */
@@ -146,15 +146,15 @@ init2 :
ldr r1, =_abt_stack_size ldr r1, =_abt_stack_size
LDR sp, =_abt_stack LDR sp, =_abt_stack
add sp, sp, r1 add sp, sp, r1
sub sp, sp, #0x64 sub sp, sp, #0x64
/* Set up the SVC stack pointer last and stay in SVC mode */ /* Set up the SVC stack pointer last and stay in SVC mode */
MOV r0, #Mode_SVC | I_Bit | F_Bit /* No interrupts */ MOV r0, #Mode_SVC | I_Bit | F_Bit /* No interrupts */
MSR cpsr, r0 MSR cpsr, r0
ldr r1, =_svc_stack_size ldr r1, =_svc_stack_size
LDR sp, =_svc_stack LDR sp, =_svc_stack
add sp, sp, r1 add sp, sp, r1
sub sp, sp, #0x64 sub sp, sp, #0x64
/* save the original registers */ /* save the original registers */
stmdb sp!, {r4-r12, lr} stmdb sp!, {r4-r12, lr}

View File

@@ -2,7 +2,7 @@
* Cirrus EP7312 Startup code * Cirrus EP7312 Startup code
* *
* Copyright (c) 2002 by Jay Monkman <jtm@smoothsmoothie.com> * Copyright (c) 2002 by Jay Monkman <jtm@smoothsmoothie.com>
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at * found in the file LICENSE in this distribution or at
* *
@@ -79,12 +79,12 @@ void bsp_pretasking_hook(void)
uint32_t heap_size; uint32_t heap_size;
/* /*
* Set up the heap. It uses all free SDRAM except that reserved * Set up the heap. It uses all free SDRAM except that reserved
* for non-cached uses. * for non-cached uses.
*/ */
heap_start = free_mem_start; heap_start = free_mem_start;
/* heap_size = (free_mem_end - heap_start - MEM_NOCACHE_SIZE); */ /* heap_size = (free_mem_end - heap_start - MEM_NOCACHE_SIZE); */
heap_size = 0x200000; heap_size = 0x200000;
@@ -97,7 +97,7 @@ void bsp_pretasking_hook(void)
#endif /* RTEMS_DEBUG */ #endif /* RTEMS_DEBUG */
} /* bsp_pretasking_hook */ } /* bsp_pretasking_hook */
/**************************************************************************/ /**************************************************************************/
/* */ /* */
@@ -133,26 +133,26 @@ void bsp_start_default( void )
Cpu_table.pretasking_hook = bsp_pretasking_hook; Cpu_table.pretasking_hook = bsp_pretasking_hook;
Cpu_table.postdriver_hook = bsp_postdriver_hook; Cpu_table.postdriver_hook = bsp_postdriver_hook;
Cpu_table.do_zero_of_workspace = TRUE; Cpu_table.do_zero_of_workspace = TRUE;
/* Place RTEMS workspace at beginning of free memory. */ /* Place RTEMS workspace at beginning of free memory. */
BSP_Configuration.work_space_start = (void *)&_bss_free_start; BSP_Configuration.work_space_start = (void *)&_bss_free_start;
free_mem_start = ((uint32_t)&_bss_free_start + free_mem_start = ((uint32_t)&_bss_free_start +
BSP_Configuration.work_space_size); BSP_Configuration.work_space_size);
free_mem_end = ((uint32_t)&_sdram_base + (uint32_t)&_sdram_size); free_mem_end = ((uint32_t)&_sdram_base + (uint32_t)&_sdram_size);
/* /*
* Init rtems exceptions management * Init rtems exceptions management
*/ */
rtems_exception_init_mngt(); rtems_exception_init_mngt();
/* /*
* Init rtems interrupt management * Init rtems interrupt management
*/ */
rtems_irq_mngt_init(); rtems_irq_mngt_init();
/* /*
* The following information is very useful when debugging. * The following information is very useful when debugging.
*/ */
@@ -168,7 +168,7 @@ void bsp_start_default( void )
BSP_Configuration.number_of_device_drivers ); BSP_Configuration.number_of_device_drivers );
printk( "Device_driver_table = 0x%x\n", printk( "Device_driver_table = 0x%x\n",
BSP_Configuration.Device_driver_table ); BSP_Configuration.Device_driver_table );
/* printk( "_stack_size = 0x%x\n", _stack_size );*/ /* printk( "_stack_size = 0x%x\n", _stack_size );*/
printk( "work_space_start = 0x%x\n", BSP_Configuration.work_space_start ); printk( "work_space_start = 0x%x\n", BSP_Configuration.work_space_start );
printk( "work_space_size = 0x%x\n", BSP_Configuration.work_space_size ); printk( "work_space_size = 0x%x\n", BSP_Configuration.work_space_size );

View File

@@ -2,7 +2,7 @@
* Cirrus EP7312 BSP Shutdown code * Cirrus EP7312 BSP Shutdown code
* *
* Copyright (c) 2002 by Jay Monkman <jtm@smoothsmoothie.com> * Copyright (c) 2002 by Jay Monkman <jtm@smoothsmoothie.com>
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at * found in the file LICENSE in this distribution or at
* *

View File

@@ -2,7 +2,7 @@
* Cirrus EP7312 Timer driver * Cirrus EP7312 Timer driver
* *
* Copyright (c) 2002 by Jay Monkman <jtm@smoothsmoothie.com> * Copyright (c) 2002 by Jay Monkman <jtm@smoothsmoothie.com>
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at * found in the file LICENSE in this distribution or at
* *
@@ -14,7 +14,7 @@
* Timer_initialize() and Read_timer(). Read_timer() usually returns * Timer_initialize() and Read_timer(). Read_timer() usually returns
* the number of microseconds since Timer_initialize() exitted. * the number of microseconds since Timer_initialize() exitted.
* *
* It is important that the timer start/stop overhead be determined * It is important that the timer start/stop overhead be determined
* when porting or modifying this code. * when porting or modifying this code.
* *
* $Id$ * $Id$

View File

@@ -1,11 +1,11 @@
/*-------------------------------------------------------------------------+ /*-------------------------------------------------------------------------+
| console.c - ARM BSP | console.c - ARM BSP
+--------------------------------------------------------------------------+ +--------------------------------------------------------------------------+
| This file contains the ARM console I/O package. | This file contains the ARM console I/O package.
+--------------------------------------------------------------------------+ +--------------------------------------------------------------------------+
| COPYRIGHT (c) 2000 Canon Research France SA. | COPYRIGHT (c) 2000 Canon Research France SA.
| Emmanuel Raguet, mailto:raguet@crf.canon.fr | Emmanuel Raguet, mailto:raguet@crf.canon.fr
| |
| The license and distribution terms for this file may be | The license and distribution terms for this file may be
| found in found in the file LICENSE in this distribution or at | found in found in the file LICENSE in this distribution or at
| http://www.rtems.com/license/LICENSE. | http://www.rtems.com/license/LICENSE.
@@ -65,9 +65,9 @@ static int isr_is_on(const rtems_irq_connect_data *);
*/ */
/* for printk support */ /* for printk support */
BSP_output_char_function_type BSP_output_char = BSP_output_char_function_type BSP_output_char =
(BSP_output_char_function_type) BSP_output_char_via_serial; (BSP_output_char_function_type) BSP_output_char_via_serial;
BSP_polling_getchar_function_type BSP_poll_char = BSP_polling_getchar_function_type BSP_poll_char =
(BSP_polling_getchar_function_type) BSP_poll_char_via_serial; (BSP_polling_getchar_function_type) BSP_poll_char_via_serial;
@@ -82,7 +82,7 @@ isr_on(const rtems_irq_connect_data *unused)
{ {
return; return;
} }
static void static void
isr_off(const rtems_irq_connect_data *unused) isr_off(const rtems_irq_connect_data *unused)
{ {
@@ -102,9 +102,9 @@ void __assert (const char *file, int line, const char *msg)
{ {
static char exit_msg[] = "EXECUTIVE SHUTDOWN! Any key to reboot..."; static char exit_msg[] = "EXECUTIVE SHUTDOWN! Any key to reboot...";
unsigned char ch; unsigned char ch;
/* /*
* Note we cannot call exit or printf from here, * Note we cannot call exit or printf from here,
* assert can fail inside ISR too * assert can fail inside ISR too
*/ */
@@ -121,7 +121,7 @@ void __assert (const char *file, int line, const char *msg)
printk(exit_msg); printk(exit_msg);
ch = BSP_poll_char(); ch = BSP_poll_char();
printk("\n\n"); printk("\n\n");
rtemsReboot(); rtemsReboot();
} }
@@ -142,21 +142,21 @@ console_initialize(rtems_device_major_number major,
* Set up TERMIOS * Set up TERMIOS
*/ */
rtems_termios_initialize (); rtems_termios_initialize ();
/* /*
* Do device-specific initialization * Do device-specific initialization
*/ */
/* 38400-8-N-1 */ /* 38400-8-N-1 */
BSP_uart_init(BSPConsolePort, 38400, 0); BSP_uart_init(BSPConsolePort, 38400, 0);
/* Set interrupt handler */ /* Set interrupt handler */
console_isr_data.name = BSP_UART; console_isr_data.name = BSP_UART;
console_isr_data.hdl = BSP_uart_termios_isr_com1; console_isr_data.hdl = BSP_uart_termios_isr_com1;
console_isr_data.irqLevel = 3; console_isr_data.irqLevel = 3;
console_isr_data.irqTrigger = 0; console_isr_data.irqTrigger = 0;
status = BSP_install_rtems_irq_handler(&console_isr_data); status = BSP_install_rtems_irq_handler(&console_isr_data);
if (!status){ if (!status){
@@ -196,7 +196,7 @@ console_open(rtems_device_major_number major,
void *arg) void *arg)
{ {
rtems_status_code status; rtems_status_code status;
static rtems_termios_callbacks cb = static rtems_termios_callbacks cb =
{ {
NULL, /* firstOpen */ NULL, /* firstOpen */
console_last_close, /* lastClose */ console_last_close, /* lastClose */
@@ -219,9 +219,9 @@ console_open(rtems_device_major_number major,
/* /*
* Pass data area info down to driver * Pass data area info down to driver
*/ */
BSP_uart_termios_set(BSPConsolePort, BSP_uart_termios_set(BSPConsolePort,
((rtems_libio_open_close_args_t *)arg)->iop->data1); ((rtems_libio_open_close_args_t *)arg)->iop->data1);
/* Enable interrupts on channel */ /* Enable interrupts on channel */
BSP_uart_intr_ctrl(BSPConsolePort, BSP_UART_INTR_CTRL_TERMIOS); BSP_uart_intr_ctrl(BSPConsolePort, BSP_UART_INTR_CTRL_TERMIOS);
@@ -243,7 +243,7 @@ console_close(rtems_device_major_number major,
return res; return res;
} /* console_close */ } /* console_close */
/*-------------------------------------------------------------------------+ /*-------------------------------------------------------------------------+
| Console device driver READ entry point. | Console device driver READ entry point.
+--------------------------------------------------------------------------+ +--------------------------------------------------------------------------+
@@ -256,9 +256,9 @@ console_read(rtems_device_major_number major,
{ {
return rtems_termios_read (arg); return rtems_termios_read (arg);
} /* console_read */ } /* console_read */
/*-------------------------------------------------------------------------+ /*-------------------------------------------------------------------------+
| Console device driver WRITE entry point. | Console device driver WRITE entry point.
@@ -272,20 +272,20 @@ console_write(rtems_device_major_number major,
{ {
return rtems_termios_write (arg); return rtems_termios_write (arg);
} /* console_write */ } /* console_write */
/* /*
* Handle ioctl request. * Handle ioctl request.
*/ */
rtems_device_driver rtems_device_driver
console_control(rtems_device_major_number major, console_control(rtems_device_major_number major,
rtems_device_minor_number minor, rtems_device_minor_number minor,
void * arg void * arg
) )
{ {
return rtems_termios_ioctl (arg); return rtems_termios_ioctl (arg);
} }
@@ -294,45 +294,45 @@ conSetAttr(int minor, const struct termios *t)
{ {
int baud; int baud;
switch (t->c_cflag & CBAUD) switch (t->c_cflag & CBAUD)
{ {
case B50: case B50:
baud = 50; baud = 50;
break; break;
case B75: case B75:
baud = 75; baud = 75;
break; break;
case B110: case B110:
baud = 110; baud = 110;
break; break;
case B134: case B134:
baud = 134; baud = 134;
break; break;
case B150: case B150:
baud = 150; baud = 150;
break; break;
case B200: case B200:
baud = 200; baud = 200;
break; break;
case B300: case B300:
baud = 300; baud = 300;
break; break;
case B600: case B600:
baud = 600; baud = 600;
break; break;
case B1200: case B1200:
baud = 1200; baud = 1200;
break; break;
case B1800: case B1800:
baud = 1800; baud = 1800;
break; break;
case B2400: case B2400:
baud = 2400; baud = 2400;
break; break;
case B4800: case B4800:
baud = 4800; baud = 4800;
break; break;
case B9600: case B9600:
baud = 9600; baud = 9600;
break; break;
case B19200: case B19200:
@@ -341,7 +341,7 @@ conSetAttr(int minor, const struct termios *t)
case B38400: case B38400:
baud = 38400; baud = 38400;
break; break;
case B57600: case B57600:
baud = 57600; baud = 57600;
break; break;
case B115200: case B115200:

View File

@@ -33,10 +33,10 @@ struct uart_data
static struct uart_data uart_data[2]; static struct uart_data uart_data[2];
/* /*
* Macros to read/wirte register of uart, if configuration is * Macros to read/wirte register of uart, if configuration is
* different just rewrite these macros * different just rewrite these macros
*/ */
static inline unsigned char static inline unsigned char
uread(int uart, unsigned int reg) uread(int uart, unsigned int reg)
@@ -44,11 +44,11 @@ uread(int uart, unsigned int reg)
register unsigned char val; register unsigned char val;
val = Regs[reg]; val = Regs[reg];
return val; return val;
} }
static inline void static inline void
uwrite(int uart, int reg, unsigned int val) uwrite(int uart, int reg, unsigned int val)
{ {
@@ -81,13 +81,13 @@ uartError(int uart)
inline void uartError(int uart) inline void uartError(int uart)
{ {
unsigned char uartStatus; unsigned char uartStatus;
uartStatus = uread(uart, LSR); uartStatus = uread(uart, LSR);
uartStatus = uread(uart, RBR); uartStatus = uread(uart, RBR);
} }
#endif #endif
/* /*
* Uart initialization, it is hardcoded to 8 bit, no parity, * Uart initialization, it is hardcoded to 8 bit, no parity,
* one stop bit, FIFO, things to be changed * one stop bit, FIFO, things to be changed
* are baud rate and nad hw flow control, * are baud rate and nad hw flow control,
@@ -97,10 +97,10 @@ void
BSP_uart_init(int uart, int baud, int hwFlow) BSP_uart_init(int uart, int baud, int hwFlow)
{ {
unsigned char tmp; unsigned char tmp;
/* Sanity check */ /* Sanity check */
assert(uart == BSP_UART_COM1 || uart == BSP_UART_COM2); assert(uart == BSP_UART_COM1 || uart == BSP_UART_COM2);
switch(baud) switch(baud)
{ {
case 50: case 50:
@@ -121,20 +121,20 @@ BSP_uart_init(int uart, int baud, int hwFlow)
assert(0); assert(0);
return; return;
} }
/* Enable UART block */ /* Enable UART block */
uwrite(uart, CNT, UART_ENABLE | PAD_ENABLE); uwrite(uart, CNT, UART_ENABLE | PAD_ENABLE);
/* Set DLAB bit to 1 */ /* Set DLAB bit to 1 */
uwrite(uart, LCR, DLAB); uwrite(uart, LCR, DLAB);
/* Set baud rate */ /* Set baud rate */
uwrite(uart, DLL, (BSPBaseBaud/baud) & 0xff); uwrite(uart, DLL, (BSPBaseBaud/baud) & 0xff);
uwrite(uart, DLM, ((BSPBaseBaud/baud) >> 8) & 0xff); uwrite(uart, DLM, ((BSPBaseBaud/baud) >> 8) & 0xff);
/* 8-bit, no parity , 1 stop */ /* 8-bit, no parity , 1 stop */
uwrite(uart, LCR, CHR_8_BITS); uwrite(uart, LCR, CHR_8_BITS);
/* Enable FIFO */ /* Enable FIFO */
uwrite(uart, FCR, FIFO_EN | XMIT_RESET | RCV_RESET | RECEIVE_FIFO_TRIGGER12); uwrite(uart, FCR, FIFO_EN | XMIT_RESET | RCV_RESET | RECEIVE_FIFO_TRIGGER12);
@@ -151,7 +151,7 @@ BSP_uart_init(int uart, int baud, int hwFlow)
return; return;
} }
/* /*
* Set baud * Set baud
*/ */
void void
@@ -161,10 +161,10 @@ BSP_uart_set_baud(int uart, int baud)
/* Sanity check */ /* Sanity check */
assert(uart == BSP_UART_COM1 || uart == BSP_UART_COM2); assert(uart == BSP_UART_COM1 || uart == BSP_UART_COM2);
/* /*
* This function may be called whenever TERMIOS parameters * This function may be called whenever TERMIOS parameters
* are changed, so we have to make sure that baud change is * are changed, so we have to make sure that baud change is
* indeed required * indeed required
*/ */
@@ -178,14 +178,14 @@ BSP_uart_set_baud(int uart, int baud)
BSP_uart_init(uart, baud, uart_data[uart].hwFlow); BSP_uart_init(uart, baud, uart_data[uart].hwFlow);
uwrite(uart, IER, ier); uwrite(uart, IER, ier);
return; return;
} }
/* /*
* Enable/disable interrupts * Enable/disable interrupts
*/ */
void void
BSP_uart_intr_ctrl(int uart, int cmd) BSP_uart_intr_ctrl(int uart, int cmd)
{ {
@@ -218,7 +218,7 @@ BSP_uart_intr_ctrl(int uart, int cmd)
assert(0); assert(0);
break; break;
} }
return; return;
} }
@@ -227,12 +227,12 @@ BSP_uart_intr_ctrl(int uart, int cmd)
* Status function, -1 if error * Status function, -1 if error
* detected, 0 if no received chars available, * detected, 0 if no received chars available,
* 1 if received char available, 2 if break * 1 if received char available, 2 if break
* is detected, it will eat break and error * is detected, it will eat break and error
* chars. It ignores overruns - we cannot do * chars. It ignores overruns - we cannot do
* anything about - it execpt count statistics * anything about - it execpt count statistics
* and we are not counting it. * and we are not counting it.
*/ */
int int
BSP_uart_polled_status(int uart) BSP_uart_polled_status(int uart)
{ {
unsigned char val; unsigned char val;
@@ -250,7 +250,7 @@ BSP_uart_polled_status(int uart)
if((val & (DR | OE | FE)) == 1) if((val & (DR | OE | FE)) == 1)
{ {
/* No error, character present */ /* No error, character present */
return BSP_UART_STATUS_CHAR; return BSP_UART_STATUS_CHAR;
} }
@@ -260,12 +260,12 @@ BSP_uart_polled_status(int uart)
return BSP_UART_STATUS_NOCHAR; return BSP_UART_STATUS_NOCHAR;
} }
/* /*
* Framing or parity error * Framing or parity error
* eat character * eat character
*/ */
uread(uart, RBR); uread(uart, RBR);
return BSP_UART_STATUS_ERROR; return BSP_UART_STATUS_ERROR;
} }
@@ -273,24 +273,24 @@ BSP_uart_polled_status(int uart)
/* /*
* Polled mode write function * Polled mode write function
*/ */
void void
BSP_uart_polled_write(int uart, int val) BSP_uart_polled_write(int uart, int val)
{ {
unsigned char val1; unsigned char val1;
/* Sanity check */ /* Sanity check */
assert(uart == BSP_UART_COM1 || uart == BSP_UART_COM2); assert(uart == BSP_UART_COM1 || uart == BSP_UART_COM2);
for(;;) for(;;)
{ {
if((val1=uread(uart, LSR)) & THRE) if((val1=uread(uart, LSR)) & THRE)
{ {
break; break;
} }
} }
uwrite(uart, THR, val & 0xff); uwrite(uart, THR, val & 0xff);
return; return;
} }
@@ -301,16 +301,16 @@ BSP_output_char_via_serial(int val)
if (val == '\n') BSP_uart_polled_write(BSPConsolePort,'\r'); if (val == '\n') BSP_uart_polled_write(BSPConsolePort,'\r');
} }
/* /*
* Polled mode read function * Polled mode read function
*/ */
int int
BSP_uart_polled_read(int uart) BSP_uart_polled_read(int uart)
{ {
unsigned char val; unsigned char val;
assert(uart == BSP_UART_COM1 || uart == BSP_UART_COM2); assert(uart == BSP_UART_COM1 || uart == BSP_UART_COM2);
for(;;) for(;;)
{ {
if(uread(uart, LSR) & DR) if(uread(uart, LSR) & DR)
@@ -318,13 +318,13 @@ BSP_uart_polled_read(int uart)
break; break;
} }
} }
val = uread(uart, RBR); val = uread(uart, RBR);
return (int)(val & 0xff); return (int)(val & 0xff);
} }
unsigned unsigned
BSP_poll_char_via_serial() BSP_poll_char_via_serial()
{ {
return BSP_uart_polled_read(BSPConsolePort); return BSP_uart_polled_read(BSPConsolePort);
@@ -346,19 +346,19 @@ static char termios_tx_hold_com2 = 0;
static volatile char termios_tx_hold_valid_com2 = 0; static volatile char termios_tx_hold_valid_com2 = 0;
/* /*
* Set channel parameters * Set channel parameters
*/ */
void void
BSP_uart_termios_set(int uart, void *ttyp) BSP_uart_termios_set(int uart, void *ttyp)
{ {
assert(uart == BSP_UART_COM1 || uart == BSP_UART_COM2); assert(uart == BSP_UART_COM1 || uart == BSP_UART_COM2);
if(uart == BSP_UART_COM1) if(uart == BSP_UART_COM1)
{ {
termios_stopped_com1 = 0; termios_stopped_com1 = 0;
termios_tx_active_com1 = 0; termios_tx_active_com1 = 0;
termios_ttyp_com1 = ttyp; termios_ttyp_com1 = ttyp;
termios_tx_hold_com1 = 0; termios_tx_hold_com1 = 0;
termios_tx_hold_valid_com1 = 0; termios_tx_hold_valid_com1 = 0;
} }
else else
@@ -366,7 +366,7 @@ BSP_uart_termios_set(int uart, void *ttyp)
termios_stopped_com2 = 0; termios_stopped_com2 = 0;
termios_tx_active_com2 = 0; termios_tx_active_com2 = 0;
termios_ttyp_com2 = ttyp; termios_ttyp_com2 = ttyp;
termios_tx_hold_com2 = 0; termios_tx_hold_com2 = 0;
termios_tx_hold_valid_com2 = 0; termios_tx_hold_valid_com2 = 0;
} }
@@ -384,7 +384,7 @@ BSP_uart_termios_write_com1(int minor, const char *buf, int len)
} }
/* If there TX buffer is busy - something is royally screwed up */ /* If there TX buffer is busy - something is royally screwed up */
assert((uread(BSP_UART_COM1, LSR) & THRE) != 0); assert((uread(BSP_UART_COM1, LSR) & THRE) != 0);
if(termios_stopped_com1) if(termios_stopped_com1)
{ {
@@ -401,7 +401,7 @@ BSP_uart_termios_write_com1(int minor, const char *buf, int len)
if(!termios_tx_active_com1) if(!termios_tx_active_com1)
{ {
termios_tx_active_com1 = 1; termios_tx_active_com1 = 1;
uwrite(BSP_UART_COM1, IER, uwrite(BSP_UART_COM1, IER,
(RECEIVE_ENABLE | (RECEIVE_ENABLE |
TRANSMIT_ENABLE | TRANSMIT_ENABLE |
RECEIVER_LINE_ST_ENABLE RECEIVER_LINE_ST_ENABLE
@@ -465,7 +465,7 @@ BSP_uart_termios_isr_com1(void)
for(;;) for(;;)
{ {
vect = uread(BSP_UART_COM1, IIR) & 0xf; vect = uread(BSP_UART_COM1, IIR) & 0xf;
switch(vect) switch(vect)
{ {
case NO_MORE_INTR : case NO_MORE_INTR :
@@ -479,9 +479,9 @@ BSP_uart_termios_isr_com1(void)
} }
return; return;
case TRANSMITTER_HODING_REGISTER_EMPTY : case TRANSMITTER_HODING_REGISTER_EMPTY :
/* /*
* TX holding empty: we have to disable these interrupts * TX holding empty: we have to disable these interrupts
* if there is nothing more to send. * if there is nothing more to send.
*/ */
ret = rtems_termios_dequeue_characters(termios_ttyp_com1, 1); ret = rtems_termios_dequeue_characters(termios_ttyp_com1, 1);
@@ -514,7 +514,7 @@ BSP_uart_termios_isr_com1(void)
} }
} }
} }
void void
BSP_uart_termios_isr_com2() BSP_uart_termios_isr_com2()
{ {
@@ -526,7 +526,7 @@ BSP_uart_termios_isr_com2()
for(;;) for(;;)
{ {
vect = uread(BSP_UART_COM2, IIR) & 0xf; vect = uread(BSP_UART_COM2, IIR) & 0xf;
switch(vect) switch(vect)
{ {
case NO_MORE_INTR : case NO_MORE_INTR :
@@ -540,8 +540,8 @@ BSP_uart_termios_isr_com2()
} }
return; return;
case TRANSMITTER_HODING_REGISTER_EMPTY : case TRANSMITTER_HODING_REGISTER_EMPTY :
/* /*
* TX holding empty: we have to disable these interrupts * TX holding empty: we have to disable these interrupts
* if there is nothing more to send. * if there is nothing more to send.
*/ */

View File

@@ -38,7 +38,7 @@ extern int BSPConsolePort;
extern int BSPBaseBaud; extern int BSPBaseBaud;
/* /*
* Command values for BSP_uart_intr_ctrl(), * Command values for BSP_uart_intr_ctrl(),
* values are strange in order to catch errors * values are strange in order to catch errors
* with assert * with assert
*/ */
#define BSP_UART_INTR_CTRL_DISABLE (0) #define BSP_UART_INTR_CTRL_DISABLE (0)
@@ -71,20 +71,20 @@ extern int BSPBaseBaud;
#define RBR RSRBR /* Rx Buffer Register (read) */ #define RBR RSRBR /* Rx Buffer Register (read) */
#define THR RSTHR /* Tx Buffer Register (write) */ #define THR RSTHR /* Tx Buffer Register (write) */
#define IER RSIER /* Interrupt Enable Register */ #define IER RSIER /* Interrupt Enable Register */
/* DLAB X */ /* DLAB X */
#define IIR RSIIR /* Interrupt Ident Register (read) */ #define IIR RSIIR /* Interrupt Ident Register (read) */
#define FCR RSFCR /* FIFO Control Register (write) */ #define FCR RSFCR /* FIFO Control Register (write) */
#define LCR RSLCR /* Line Control Register */ #define LCR RSLCR /* Line Control Register */
#define LSR RSLSR /* Line Status Register */ #define LSR RSLSR /* Line Status Register */
/* DLAB 1 */ /* DLAB 1 */
#define DLL RSDLL /* Divisor Latch, LSB */ #define DLL RSDLL /* Divisor Latch, LSB */
#define DLM RSDLH /* Divisor Latch, MSB */ #define DLM RSDLH /* Divisor Latch, MSB */
/* Uart control */ /* Uart control */
#define CNT RSCNT /* General Control register */ #define CNT RSCNT /* General Control register */
/* /*
* define bit for CNT * define bit for CNT
*/ */

View File

@@ -25,16 +25,16 @@
_ISR_Handler: _ISR_Handler:
stmdb sp!, {r0, r1, r2, r3, r12} /* save regs on INT stack */ stmdb sp!, {r0, r1, r2, r3, r12} /* save regs on INT stack */
stmdb sp!, {lr} /* now safe to call C funcs */ stmdb sp!, {lr} /* now safe to call C funcs */
/* one nest level deeper */ /* one nest level deeper */
ldr r0, =_ISR_Nest_level ldr r0, =_ISR_Nest_level
ldr r1, [r0] ldr r1, [r0]
add r1, r1,#1 add r1, r1,#1
str r1, [r0] str r1, [r0]
/* disable multitasking */ /* disable multitasking */
ldr r0, =_Thread_Dispatch_disable_level ldr r0, =_Thread_Dispatch_disable_level
ldr r1, [r0] ldr r1, [r0]
add r1, r1,#1 add r1, r1,#1
str r1, [r0] str r1, [r0]
@@ -42,14 +42,14 @@ _ISR_Handler:
/* BSP specific function to INT handler */ /* BSP specific function to INT handler */
/* FIXME: I'm not sure why I can't save just r12. I'm also */ /* FIXME: I'm not sure why I can't save just r12. I'm also */
/* not sure which of r1-r3 are important. */ /* not sure which of r1-r3 are important. */
bl ExecuteITHandler bl ExecuteITHandler
/* one less nest level */ /* one less nest level */
ldr r0, =_ISR_Nest_level ldr r0, =_ISR_Nest_level
ldr r1, [r0] ldr r1, [r0]
sub r1, r1,#1 sub r1, r1,#1
str r1, [r0] str r1, [r0]
/* unnest multitasking */ /* unnest multitasking */
ldr r0, =_Thread_Dispatch_disable_level ldr r0, =_Thread_Dispatch_disable_level
ldr r1, [r0] ldr r1, [r0]
@@ -59,7 +59,7 @@ _ISR_Handler:
/* check to see if we interrupted nd INT (with FIQ?) */ /* check to see if we interrupted nd INT (with FIQ?) */
mrs r0, spsr mrs r0, spsr
and r0, r0, #0x1f and r0, r0, #0x1f
cmp r0, #0x12 /* is it INT mode? */ cmp r0, #0x12 /* is it INT mode? */
beq exitit beq exitit
/* If thread dispatching is disabled, exit */ /* If thread dispatching is disabled, exit */
@@ -70,18 +70,18 @@ _ISR_Handler:
ldr r0, =_Context_Switch_necessary ldr r0, =_Context_Switch_necessary
ldr r1, [r0] ldr r1, [r0]
cmp r1, #0 cmp r1, #0
/* since bframe is going to clear _ISR_Signals_to_thread_executing, */ /* since bframe is going to clear _ISR_Signals_to_thread_executing, */
/* we need to load it here */ /* we need to load it here */
ldr r0, =_ISR_Signals_to_thread_executing ldr r0, =_ISR_Signals_to_thread_executing
ldr r1, [r0] ldr r1, [r0]
bne bframe bne bframe
/* If a signals to be sent (_ISR_Signals_to_thread_executing != 0), */ /* If a signals to be sent (_ISR_Signals_to_thread_executing != 0), */
/* call scheduler */ /* call scheduler */
cmp r1, #0 cmp r1, #0
beq exitit beq exitit
/* _ISR_Signals_to_thread_executing = FALSE */ /* _ISR_Signals_to_thread_executing = FALSE */
mov r1, #0 mov r1, #0
str r1, [r0] str r1, [r0]
@@ -94,7 +94,7 @@ bframe:
mrs r0, spsr mrs r0, spsr
ldmia sp!, {r1} /* get lr off stack */ ldmia sp!, {r1} /* get lr off stack */
stmdb sp!, {r1} stmdb sp!, {r1}
mrs r2, cpsr mrs r2, cpsr
orr r3, r2, #0x1 /* change to SVC mode */ orr r3, r2, #0x1 /* change to SVC mode */
msr cpsr_c, r3 msr cpsr_c, r3
@@ -111,10 +111,10 @@ bframe:
ldmia sp!, {r1} /* out with the old */ ldmia sp!, {r1} /* out with the old */
stmdb sp!, {lr} /* in with the new (lr) */ stmdb sp!, {lr} /* in with the new (lr) */
orr r0, r0, #0xc0 orr r0, r0, #0xc0
msr spsr, r0 msr spsr, r0
exitit: exitit:
ldmia sp!, {lr} /* restore regs from INT stack */ ldmia sp!, {lr} /* restore regs from INT stack */
ldmia sp!, {r0, r1, r2, r3, r12} /* restore regs from INT stack */ ldmia sp!, {r0, r1, r2, r3, r12} /* restore regs from INT stack */
@@ -122,7 +122,7 @@ exitit:
/* on entry to _ISR_Dispatch, we're in SVC mode */ /* on entry to _ISR_Dispatch, we're in SVC mode */
.globl _ISR_Dispatch .globl _ISR_Dispatch
_ISR_Dispatch: _ISR_Dispatch:
stmdb sp!, {r0-r3, r12,lr} /* save regs on SVC stack */ stmdb sp!, {r0-r3, r12,lr} /* save regs on SVC stack */
@@ -130,15 +130,15 @@ _ISR_Dispatch:
/* we don't save lr, since */ /* we don't save lr, since */
/* it's just going to get */ /* it's just going to get */
/* overwritten */ /* overwritten */
_ISR_Dispatch_p_4: _ISR_Dispatch_p_4:
bl _Thread_Dispatch bl _Thread_Dispatch
ldmia sp!, {r0-r3, r12, lr} ldmia sp!, {r0-r3, r12, lr}
stmdb sp!, {r0-r2} stmdb sp!, {r0-r2}
/* Now we have to screw with the stack */ /* Now we have to screw with the stack */
mov r0, sp /* copy the SVC stack pointer */ mov r0, sp /* copy the SVC stack pointer */
mrs r1, cpsr mrs r1, cpsr
bic r2, r1, #0x1 /* change to INT mode */ bic r2, r1, #0x1 /* change to INT mode */
orr r2, r2, #0xc0 /* disable interrupts */ orr r2, r2, #0xc0 /* disable interrupts */
msr cpsr_c, r2 msr cpsr_c, r2
@@ -147,7 +147,7 @@ _ISR_Dispatch_p_4:
stmdb sp!, {r4, r5, r6} /* save temp vars on INT stack */ stmdb sp!, {r4, r5, r6} /* save temp vars on INT stack */
ldmia r0!, {r4, r5, r6} /* Get r0-r3 from SVC stack */ ldmia r0!, {r4, r5, r6} /* Get r0-r3 from SVC stack */
stmdb sp!, {r4, r5, r6} /* and save them on INT stack */ stmdb sp!, {r4, r5, r6} /* and save them on INT stack */
ldmia r0!, {r4, r5} /* get saved values from SVC stack */ ldmia r0!, {r4, r5} /* get saved values from SVC stack */
/* r4=spsr, r5=lr */ /* r4=spsr, r5=lr */
mov lr, r5 /* restore lr_int */ mov lr, r5 /* restore lr_int */

View File

@@ -32,14 +32,14 @@ void rtems_irq_mngt_init()
int i; int i;
long *vectorTable; long *vectorTable;
rtems_interrupt_level level; rtems_interrupt_level level;
vectorTable = (long *) VECTOR_TABLE; vectorTable = (long *) VECTOR_TABLE;
_CPU_ISR_Disable(level); _CPU_ISR_Disable(level);
/* First, connect the ISR_Handler for IRQ and FIQ interrupts */ /* First, connect the ISR_Handler for IRQ and FIQ interrupts */
_CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ISR_Handler, NULL); _CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ISR_Handler, NULL);
_CPU_ISR_install_vector(ARM_EXCEPTION_FIQ, _ISR_Handler, NULL); _CPU_ISR_install_vector(ARM_EXCEPTION_FIQ, _ISR_Handler, NULL);
/* Initialize the vector table contents with default handler */ /* Initialize the vector table contents with default handler */
for (i=0; i<BSP_MAX_INT; i++) for (i=0; i<BSP_MAX_INT; i++)

View File

@@ -1,5 +1,5 @@
/*-------------------------------------------------------------------------+ /*-------------------------------------------------------------------------+
| bsp.h - ARM BSP | bsp.h - ARM BSP
+--------------------------------------------------------------------------+ +--------------------------------------------------------------------------+
| This include file contains definitions related to the ARM BSP. | This include file contains definitions related to the ARM BSP.
+--------------------------------------------------------------------------+ +--------------------------------------------------------------------------+
@@ -10,7 +10,7 @@
| The license and distribution terms for this file may be | The license and distribution terms for this file may be
| found in found in the file LICENSE in this distribution or at | found in found in the file LICENSE in this distribution or at
| http://www.rtems.com/license/LICENSE. | http://www.rtems.com/license/LICENSE.
| |
| $Id$ | $Id$
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
@@ -28,7 +28,7 @@ extern "C" {
#include <rtems/iosupp.h> #include <rtems/iosupp.h>
#include <rtems/console.h> #include <rtems/console.h>
#include <rtems/clockdrv.h> #include <rtems/clockdrv.h>
/* /*
* Define the interrupt mechanism for Time Test 27 * Define the interrupt mechanism for Time Test 27
* *
@@ -38,11 +38,11 @@ extern "C" {
#define MUST_WAIT_FOR_INTERRUPT 0 #define MUST_WAIT_FOR_INTERRUPT 0
#define Install_tm27_vector( handler ) #define Install_tm27_vector( handler )
#define Cause_tm27_intr() #define Cause_tm27_intr()
#define Clear_tm27_intr() #define Clear_tm27_intr()
#define Lower_tm27_intr() #define Lower_tm27_intr()

View File

@@ -12,15 +12,15 @@
#ifndef __LMREGS_H__ #ifndef __LMREGS_H__
#define __LMREGS_H__ #define __LMREGS_H__
/* /*
* VARIABLE DECLARATION * VARIABLE DECLARATION
****************************************************************************** ******************************************************************************
*/ */
/* register area size */ /* register area size */
#define LM_REG_AREA_SIZ (0x4000/4) #define LM_REG_AREA_SIZ (0x4000/4)
/*** Register mapping : defined by indexes in an array ***/ /*** Register mapping : defined by indexes in an array ***/
/*** NOTE : only 1 register every 4 byte address location (+ some holes) */ /*** NOTE : only 1 register every 4 byte address location (+ some holes) */
@@ -216,7 +216,7 @@ extern volatile unsigned long *Regs; /* Chip registers */
#define RINGCNTL ((MISC_BASE+0x90)/4) #define RINGCNTL ((MISC_BASE+0x90)/4)
#define RINGFREQ ((MISC_BASE+0x94)/4) #define RINGFREQ ((MISC_BASE+0x94)/4)
#define RSCNTL ((MISC_BASE+0xA0)/4) #define RSCNTL ((MISC_BASE+0xA0)/4)
/*#ifndef PRODUCT_VERSION*/ /*#ifndef PRODUCT_VERSION*/
#define RSRXD ((MISC_BASE+0xA4)/4) #define RSRXD ((MISC_BASE+0xA4)/4)
#define RSTXD ((MISC_BASE+0xA8)/4) #define RSTXD ((MISC_BASE+0xA8)/4)
/*#endif*/ /*#endif*/
@@ -235,7 +235,7 @@ extern volatile unsigned long *Regs; /* Chip registers */
#define CLKCNTL ((MISC_BASE+0xF4)/4) #define CLKCNTL ((MISC_BASE+0xF4)/4)
#define OSCCOR ((MISC_BASE+0xF8)/4) #define OSCCOR ((MISC_BASE+0xF8)/4)
/* PRODUCT_VERSION */ /* PRODUCT_VERSION */
/* Added 30/08/99 : New Control register for UART control */ /* Added 30/08/99 : New Control register for UART control */
#define UART_BASE 0x3000 #define UART_BASE 0x3000
#define RSRBR ((UART_BASE+0x00)/4) #define RSRBR ((UART_BASE+0x00)/4)
@@ -248,7 +248,7 @@ extern volatile unsigned long *Regs; /* Chip registers */
#define RSDLL ((UART_BASE+0x00)/4) #define RSDLL ((UART_BASE+0x00)/4)
#define RSDLH ((UART_BASE+0x04)/4) #define RSDLH ((UART_BASE+0x04)/4)
#define RSCNT ((UART_BASE+0x20)/4) #define RSCNT ((UART_BASE+0x20)/4)
/*PRODUCT_VERSION*/ /*PRODUCT_VERSION*/
/** THUMB and INTERFACES BLOCK 0x3400 - 0x4FFF */ /** THUMB and INTERFACES BLOCK 0x3400 - 0x4FFF */
@@ -830,12 +830,12 @@ extern volatile unsigned long *Regs; /* Chip registers */
/* DCC register */ /* DCC register */
/* bit ENABLE=0x80 already defined */ /* bit ENABLE=0x80 already defined */
#define DCC_ENABLE 0x80 #define DCC_ENABLE 0x80
/* TIMERCNTL[0:1] register */ /* TIMERCNTL[0:1] register */
/* bit ENABLE=0x80 already defined */ /* bit ENABLE=0x80 already defined */
#define TIMER_ENABLE 0x80 #define TIMER_ENABLE 0x80
#define RELOAD 0x0040 #define RELOAD 0x0040
#define MSK_FREQ 0x0003 /* mask on FREQ field */ #define MSK_FREQ 0x0003 /* mask on FREQ field */
@@ -882,7 +882,7 @@ extern volatile unsigned long *Regs; /* Chip registers */
/****************************************************************************** /******************************************************************************
* Memory Mapping definition * Memory Mapping definition
****************************************************************************** ******************************************************************************
*/ */
@@ -901,7 +901,7 @@ extern volatile unsigned long *Regs; /* Chip registers */
/****************************************************************************** /******************************************************************************
* Slot Control bloc * Slot Control bloc
****************************************************************************** ******************************************************************************
*/ */
@@ -915,7 +915,7 @@ typedef volatile struct /* normal Slot Control Block */
unsigned char CNTL0; unsigned char CNTL0;
unsigned char CNTL1; unsigned char CNTL1;
unsigned char CNTL2; unsigned char CNTL2;
unsigned char STAT0; unsigned char STAT0;
unsigned char STAT1; unsigned char STAT1;
unsigned char STAT2; unsigned char STAT2;
unsigned char CRYPT; unsigned char CRYPT;
@@ -1051,7 +1051,7 @@ typedef LM_SCB *LM_SCB_P; /* pointer to Slot Control Block */
#define ZFIELD 0x01 #define ZFIELD 0x01
/* AMSG parameter */ /* AMSG parameter */
#define PP_FP 0x80 #define PP_FP 0x80
#define CT 0x40 #define CT 0x40
#define NT 0x20 /* NT/CTSEND mapped on same bit */ #define NT 0x20 /* NT/CTSEND mapped on same bit */
#define CTSEND 0x20 #define CTSEND 0x20
@@ -1071,8 +1071,8 @@ typedef LM_SCB *LM_SCB_P; /* pointer to Slot Control Block */
/* /*
* Some macros to mask the VEGA+ interrupt sources * Some macros to mask the VEGA+ interrupt sources
****************************************************************************** ******************************************************************************
*/ */

View File

@@ -14,16 +14,16 @@
#define __asm__ #define __asm__
#include <registers.h> #include <registers.h>
/* /*
* Function to obtain, execute an IT handler and acknowledge the IT * Function to obtain, execute an IT handler and acknowledge the IT
*/ */
.globl ExecuteITHandler .globl ExecuteITHandler
ExecuteITHandler : ExecuteITHandler :
ldr r0, =INTPHAI3 /* read the vector number */ ldr r0, =INTPHAI3 /* read the vector number */
ldr r0, [r0] ldr r0, [r0]
ldr r0, [r0] /* extract the IT handler @ */ ldr r0, [r0] /* extract the IT handler @ */
/* /*
@@ -52,14 +52,14 @@ IRQ_return:
msr cpsr, r0 msr cpsr, r0
mov pc, lr mov pc, lr
/* /*
* Function to acknowledge the IT controller * Function to acknowledge the IT controller
*/ */
.globl AckControler .globl AckControler
#if 0 #if 0
AckControler: AckControler:
ldr r0, =INTEOI3 ldr r0, =INTEOI3
mov r1, #EOI mov r1, #EOI
str r1, [r0] str r1, [r0]

View File

@@ -21,7 +21,7 @@ void BSP_rtems_irq_mngt_init() {
/* Initialize the vector table address in internal RAM */ /* Initialize the vector table address in internal RAM */
Regs[INTTAB] = VECTOR_TABLE; Regs[INTTAB] = VECTOR_TABLE;
/* Initialize the GLOBAL INT CONTROL register */ /* Initialize the GLOBAL INT CONTROL register */
Regs[INTGCNTL] = 0x00; Regs[INTGCNTL] = 0x00;
@@ -33,7 +33,7 @@ void BSP_rtems_irq_mngt_init() {
/* Ack pending interrupt */ /* Ack pending interrupt */
while ( ( Regs[INTSTAT] & 0xF433 ) != 0 ) { while ( ( Regs[INTSTAT] & 0xF433 ) != 0 ) {
Regs[INTACK] = 0xFFFF; Regs[INTACK] = 0xFFFF;
Regs[INTEOI] = EOI; Regs[INTEOI] = EOI;
} }
} }

View File

@@ -40,7 +40,7 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
{ {
rtems_irq_hdl *HdlTable; rtems_irq_hdl *HdlTable;
rtems_interrupt_level level; rtems_interrupt_level level;
if (!isValidInterrupt(irq->name)) { if (!isValidInterrupt(irq->name)) {
return 0; return 0;
} }
@@ -51,7 +51,7 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
if (*(HdlTable + irq->name) != default_int_handler) { if (*(HdlTable + irq->name) != default_int_handler) {
return 0; return 0;
} }
_CPU_ISR_Disable(level); _CPU_ISR_Disable(level);
/* /*
@@ -60,7 +60,7 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
*(HdlTable + irq->name) = irq->hdl; *(HdlTable + irq->name) = irq->hdl;
/* /*
* initialize the control register for the concerned interrupt * initialize the control register for the concerned interrupt
*/ */
Regs[(INTCNTL0 + irq->name)] = (long)(irq->irqTrigger) | (long)(irq->irqLevel) ; Regs[(INTCNTL0 + irq->name)] = (long)(irq->irqTrigger) | (long)(irq->irqLevel) ;
@@ -68,17 +68,17 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
* ack pending interrupt * ack pending interrupt
*/ */
Regs[INTACK] |= (long)(1 << irq->name); Regs[INTACK] |= (long)(1 << irq->name);
/* /*
* unmask at INT controler level level * unmask at INT controler level level
*/ */
Regs[INTMASK] &= ~(long)(1 << irq->name); Regs[INTMASK] &= ~(long)(1 << irq->name);
/* /*
* Enable interrupt on device * Enable interrupt on device
*/ */
irq->on(irq); irq->on(irq);
_CPU_ISR_Enable(level); _CPU_ISR_Enable(level);
return 1; return 1;
@@ -88,7 +88,7 @@ int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq)
{ {
rtems_irq_hdl *HdlTable; rtems_irq_hdl *HdlTable;
rtems_interrupt_level level; rtems_interrupt_level level;
if (!isValidInterrupt(irq->name)) { if (!isValidInterrupt(irq->name)) {
return 0; return 0;
} }
@@ -115,7 +115,7 @@ int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq)
* restore the default irq value * restore the default irq value
*/ */
*(HdlTable + irq->name) = default_int_handler; *(HdlTable + irq->name) = default_int_handler;
_CPU_ISR_Enable(level); _CPU_ISR_Enable(level);
return 1; return 1;

View File

@@ -22,7 +22,7 @@ extern "C" {
/* /*
* Include some preprocessor value also used by assember code * Include some preprocessor value also used by assember code
*/ */
#include <rtems.h> #include <rtems.h>
extern void default_int_handler(); extern void default_int_handler();
@@ -62,11 +62,11 @@ typedef enum {
#define MASKIRQ 0x80 #define MASKIRQ 0x80
#define MASKFIQ 0x40 #define MASKFIQ 0x40
#define END_OF_INT 0x80 #define END_OF_INT 0x80
#define VECTOR_TABLE 0x40 #define VECTOR_TABLE 0x40
/* /*
* Type definition for RTEMS managed interrupts * Type definition for RTEMS managed interrupts
*/ */
@@ -96,9 +96,9 @@ typedef struct __rtems_irq_connect_data__ {
* It is usually called immediately AFTER connecting the interrupt handler. * It is usually called immediately AFTER connecting the interrupt handler.
* RTEMS may well need such a function when restoring normal interrupt * RTEMS may well need such a function when restoring normal interrupt
* processing after a debug session. * processing after a debug session.
* *
*/ */
rtems_irq_enable on; rtems_irq_enable on;
/* /*
* function for disabling interrupts at device level (ONLY!). * function for disabling interrupts at device level (ONLY!).
* The code will disable it at i8259s level. RATIONALE : anyway * The code will disable it at i8259s level. RATIONALE : anyway
@@ -168,7 +168,7 @@ void BSP_rtems_irq_mngt_init();
* 4) perform rescheduling when necessary, * 4) perform rescheduling when necessary,
* 5) restore the C scratch registers... * 5) restore the C scratch registers...
* 6) restore initial execution flow * 6) restore initial execution flow
* *
*/ */
int BSP_install_rtems_irq_handler (const rtems_irq_connect_data*); int BSP_install_rtems_irq_handler (const rtems_irq_connect_data*);

View File

@@ -9,7 +9,7 @@
* http://www.rtems.com/license/LICENSE. * http://www.rtems.com/license/LICENSE.
* *
*/ */
/* Register definition */ /* Register definition */
.equ CNTL_BASE_ADR, 0xF3000 /* Base address of registers */ .equ CNTL_BASE_ADR, 0xF3000 /* Base address of registers */
@@ -22,7 +22,7 @@
.equ CSCNTL1_2, 0x0C28 /* Offset of CS0CNTL */ .equ CSCNTL1_2, 0x0C28 /* Offset of CS0CNTL */
.equ CNTL_CLK_ADR, 0xF2000 /* Base address of registers */ .equ CNTL_CLK_ADR, 0xF2000 /* Base address of registers */
.equ CLKCNTL, 0x08F4 /* Offset of CS0CNTL */ .equ CLKCNTL, 0x08F4 /* Offset of CS0CNTL */
.equ INTHPAI, 0x0800 .equ INTHPAI, 0x0800
.equ INTEOI, 0x0808 .equ INTEOI, 0x0808
.equ EOI, 0x80 .equ EOI, 0x80
@@ -47,37 +47,37 @@
.equ MARK_STACK, 0 /*Fill every stack with a pattern for debug (0 or 1)*/ .equ MARK_STACK, 0 /*Fill every stack with a pattern for debug (0 or 1)*/
/*----------------------------------------------------------------------------- /*-----------------------------------------------------------------------------
* Definitions * Definitions
----------------------------------------------------------------------------*/ ----------------------------------------------------------------------------*/
.equ PID_RAM_Limit, 0x1800 .equ PID_RAM_Limit, 0x1800
/* stack size definition */ /* stack size definition */
.equ FIQ_StackSize, 0x400 /* FIQ stack size */ .equ FIQ_StackSize, 0x400 /* FIQ stack size */
.equ IRQ_StackSize, 0xE00 /* IRQ stack size */ .equ IRQ_StackSize, 0xE00 /* IRQ stack size */
.equ SVC_StackSize, 0x200 /* SVC stack size */ .equ SVC_StackSize, 0x200 /* SVC stack size */
.equ ABORT_StackSize, 0x100 /* ABORT stack size */ .equ ABORT_StackSize, 0x100 /* ABORT stack size */
.equ UNDEF_StackSize, 0x100 /* UNDEF stack size */ .equ UNDEF_StackSize, 0x100 /* UNDEF stack size */
/* sack size address */ /* sack size address */
.equ Stack_Limit, PID_RAM_Limit .equ Stack_Limit, PID_RAM_Limit
.equ SVC_Stack, Stack_Limit .equ SVC_Stack, Stack_Limit
.equ ABORT_Stack, Stack_Limit - SVC_StackSize .equ ABORT_Stack, Stack_Limit - SVC_StackSize
.equ UNDEF_Stack, ABORT_Stack - ABORT_StackSize .equ UNDEF_Stack, ABORT_Stack - ABORT_StackSize
.equ IRQ_Stack, UNDEF_Stack - UNDEF_StackSize .equ IRQ_Stack, UNDEF_Stack - UNDEF_StackSize
.equ FIQ_Stack, IRQ_Stack - IRQ_StackSize .equ FIQ_Stack, IRQ_Stack - IRQ_StackSize
.equ END_FIQ, FIQ_Stack - FIQ_StackSize .equ END_FIQ, FIQ_Stack - FIQ_StackSize
.text .text
.globl _start .globl _start
/* /*
* This "strange" code is used to switch the memory access * This "strange" code is used to switch the memory access
* from 8 bits to 16 bits, because the vega plus accesses * from 8 bits to 16 bits, because the vega plus accesses
* the memory via 8 bits at reset time * the memory via 8 bits at reset time
*/ */
_start: _start:
.long 0x00300010 /*LDR r3,0x18*/ .long 0x00300010 /*LDR r3,0x18*/
.long 0x00E5009F .long 0x00E5009F
@@ -106,7 +106,7 @@ _start:
.code 32 .code 32
/* --- Initialise external bus*/ /* --- Initialise external bus*/
Real_start: Real_start:
MOV r0,#CNTL_BASE_ADR MOV r0,#CNTL_BASE_ADR
/*Load timing configuration of CS0*/ /*Load timing configuration of CS0*/
@@ -116,7 +116,7 @@ Real_start:
STR r1, [r0,#CSCNTL1_0] STR r1, [r0,#CSCNTL1_0]
/* Load timing configuration and access mode of CS1 /* Load timing configuration and access mode of CS1
NOTE : Important for macro REGION_INIT of Region_init.s NOTE : Important for macro REGION_INIT of Region_init.s
if initialisation of data in external RAM */ if initialisation of data in external RAM */
LDR r1, =0x2200 LDR r1, =0x2200
STR r1, [r0,#CSCNTL0_1] STR r1, [r0,#CSCNTL0_1]
@@ -128,7 +128,7 @@ Real_start:
STR r1, [r0,#CSCNTL0_2] STR r1, [r0,#CSCNTL0_2]
LDR r1, =0xA2 LDR r1, =0xA2
STR r1, [r0,#CSCNTL1_2] STR r1, [r0,#CSCNTL1_2]
MOV r0,#CNTL_CLK_ADR MOV r0,#CNTL_CLK_ADR
/* Load clock mode 55 MHz */ /* Load clock mode 55 MHz */
@@ -140,7 +140,7 @@ Real_start:
LDR r1, =0x400000 /* execution address of region */ LDR r1, =0x400000 /* execution address of region */
LDR r2, =_edata /* copy execution address into r2 */ LDR r2, =_edata /* copy execution address into r2 */
copy: copy:
CMP r1, r2 /* loop whilst r1 < r2 */ CMP r1, r2 /* loop whilst r1 < r2 */
LDRLO r3, [r0], #4 LDRLO r3, [r0], #4
STRLO r3, [r1], #4 STRLO r3, [r1], #4
@@ -149,15 +149,15 @@ copy:
/* zero the bss */ /* zero the bss */
LDR r1, =__bss_end__ /* get end of ZI region */ LDR r1, =__bss_end__ /* get end of ZI region */
LDR r0, =__bss_start__ /* load base address of ZI region */ LDR r0, =__bss_start__ /* load base address of ZI region */
zi_init: zi_init:
MOV r2, #0 MOV r2, #0
CMP r0, r1 /* loop whilst r0 < r1 */ CMP r0, r1 /* loop whilst r0 < r1 */
STRLOT r2, [r0], #4 STRLOT r2, [r0], #4
BLO zi_init BLO zi_init
/* Load basic ARM7 interrupt table */ /* Load basic ARM7 interrupt table */
VectorInit: VectorInit:
MOV R8, #0 MOV R8, #0
ADR R9, Vector_Init_Block ADR R9, Vector_Init_Block
LDMIA R9!, {R0-R7} /* Copy the Vectors (8 words) */ LDMIA R9!, {R0-R7} /* Copy the Vectors (8 words) */
@@ -169,10 +169,10 @@ VectorInit:
/******************************************************* /*******************************************************
standard exception vectors table standard exception vectors table
*** Must be located at address 0 *** Must be located at address 0
********************************************************/ ********************************************************/
Vector_Init_Block: Vector_Init_Block:
LDR PC, Reset_Addr LDR PC, Reset_Addr
LDR PC, Undefined_Addr LDR PC, Undefined_Addr
LDR PC, SWI_Addr LDR PC, SWI_Addr
@@ -183,36 +183,36 @@ Vector_Init_Block:
LDR PC, FIQ_Addr LDR PC, FIQ_Addr
.globl Reset_Addr .globl Reset_Addr
Reset_Addr: .long _start Reset_Addr: .long _start
Undefined_Addr: .long Undefined_Handler Undefined_Addr: .long Undefined_Handler
SWI_Addr: .long SWI_Handler SWI_Addr: .long SWI_Handler
Prefetch_Addr: .long Prefetch_Handler Prefetch_Addr: .long Prefetch_Handler
Abort_Addr: .long Abort_Handler Abort_Addr: .long Abort_Handler
.long 0 .long 0
IRQ_Addr: .long IRQ_Handler IRQ_Addr: .long IRQ_Handler
FIQ_Addr: .long FIQ_Handler FIQ_Addr: .long FIQ_Handler
/* The following handlers do not do anything useful */ /* The following handlers do not do anything useful */
.globl Undefined_Handler .globl Undefined_Handler
Undefined_Handler: Undefined_Handler:
B Undefined_Handler B Undefined_Handler
.globl SWI_Handler .globl SWI_Handler
SWI_Handler: SWI_Handler:
B SWI_Handler B SWI_Handler
.globl Prefetch_Handler .globl Prefetch_Handler
Prefetch_Handler: Prefetch_Handler:
B Prefetch_Handler B Prefetch_Handler
.globl Abort_Handler .globl Abort_Handler
Abort_Handler: Abort_Handler:
B Abort_Handler B Abort_Handler
.globl IRQ_Handler .globl IRQ_Handler
IRQ_Handler: IRQ_Handler:
B IRQ_Handler B IRQ_Handler
.globl FIQ_Handler .globl FIQ_Handler
FIQ_Handler: FIQ_Handler:
B FIQ_Handler B FIQ_Handler
init2 : init2 :
/* --- Initialise stack pointer registers /* --- Initialise stack pointer registers
Set up the ABORT stack pointer last and stay in SVC mode */ Set up the ABORT stack pointer last and stay in SVC mode */
MOV r0, #(Mode_ABORT | I_Bit | F_Bit) /* No interrupts */ MOV r0, #(Mode_ABORT | I_Bit | F_Bit) /* No interrupts */

View File

@@ -1,7 +1,7 @@
/*-------------------------------------------------------------------------+ /*-------------------------------------------------------------------------+
| This file contains the ARM BSP startup package. It includes application, | This file contains the ARM BSP startup package. It includes application,
| board, and monitor specific initialization and configuration. The generic CPU | board, and monitor specific initialization and configuration. The generic CPU
| dependent initialization has been performed before this routine is invoked. | dependent initialization has been performed before this routine is invoked.
+--------------------------------------------------------------------------+ +--------------------------------------------------------------------------+
| |
| Copyright (c) 2000 Canon Research Centre France SA. | Copyright (c) 2000 Canon Research Centre France SA.
@@ -26,11 +26,11 @@
volatile unsigned long *Regs = (unsigned long*)0xF0000; /* Chip registers */ volatile unsigned long *Regs = (unsigned long*)0xF0000; /* Chip registers */
extern uint32_t _end; /* End of BSS. Defined in 'linkcmds'. */ extern uint32_t _end; /* End of BSS. Defined in 'linkcmds'. */
/* /*
* Size of heap if it is 0 it will be dynamically defined by memory size, * Size of heap if it is 0 it will be dynamically defined by memory size,
* otherwise the value should be changed by binary patch * otherwise the value should be changed by binary patch
*/ */
uint32_t _heap_size = 0; uint32_t _heap_size = 0;
/* Size of stack used during initialization. Defined in 'start.s'. */ /* Size of stack used during initialization. Defined in 'start.s'. */
extern uint32_t _stack_size; extern uint32_t _stack_size;
@@ -63,7 +63,7 @@ void bsp_postdriver_hook(void);
| since drivers are not yet initialized. | since drivers are not yet initialized.
| Global Variables: None. | Global Variables: None.
| Arguments: None. | Arguments: None.
| Returns: Nothing. | Returns: Nothing.
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
void bsp_pretasking_hook(void) void bsp_pretasking_hook(void)
{ {
@@ -72,9 +72,9 @@ void bsp_pretasking_hook(void)
{ {
_heap_size = 0x420000 - rtemsFreeMemStart; _heap_size = 0x420000 - rtemsFreeMemStart;
} }
bsp_libc_init((void *)rtemsFreeMemStart, _heap_size, 0); bsp_libc_init((void *)rtemsFreeMemStart, _heap_size, 0);
rtemsFreeMemStart += _heap_size; /* HEAP_SIZE in KBytes */ rtemsFreeMemStart += _heap_size; /* HEAP_SIZE in KBytes */
@@ -85,14 +85,14 @@ void bsp_pretasking_hook(void)
#endif /* RTEMS_DEBUG */ #endif /* RTEMS_DEBUG */
} /* bsp_pretasking_hook */ } /* bsp_pretasking_hook */
/*-------------------------------------------------------------------------+ /*-------------------------------------------------------------------------+
| Function: bsp_start | Function: bsp_start
| Description: Called before main is invoked. | Description: Called before main is invoked.
| Global Variables: None. | Global Variables: None.
| Arguments: None. | Arguments: None.
| Returns: Nothing. | Returns: Nothing.
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
void bsp_start_default( void ) void bsp_start_default( void )
{ {
@@ -112,7 +112,7 @@ void bsp_start_default( void )
/* Place RTEMS workspace at beginning of free memory. */ /* Place RTEMS workspace at beginning of free memory. */
BSP_Configuration.work_space_start = (void *)rtemsFreeMemStart; BSP_Configuration.work_space_start = (void *)rtemsFreeMemStart;
rtemsFreeMemStart += BSP_Configuration.work_space_size; rtemsFreeMemStart += BSP_Configuration.work_space_size;
/* /*

View File

@@ -1,5 +1,5 @@
/*-------------------------------------------------------------------------+ /*-------------------------------------------------------------------------+
| exit.c - ARM BSP | exit.c - ARM BSP
+--------------------------------------------------------------------------+ +--------------------------------------------------------------------------+
| Routines to shutdown and reboot the BSP. | Routines to shutdown and reboot the BSP.
+--------------------------------------------------------------------------+ +--------------------------------------------------------------------------+

View File

@@ -11,7 +11,7 @@
* found in the file LICENSE in this distribution or at * found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE. * http://www.rtems.com/license/LICENSE.
* *
* $Id$ * $Id$
*/ */
#ifndef __BARE_BSP_h #ifndef __BARE_BSP_h
@@ -53,7 +53,7 @@ extern "C" {
#define MUST_WAIT_FOR_INTERRUPT 0 #define MUST_WAIT_FOR_INTERRUPT 0
#define Install_tm27_vector( handler ) #define Install_tm27_vector( handler )
#define Cause_tm27_intr() #define Cause_tm27_intr()
@@ -81,7 +81,7 @@ extern rtems_configuration_table BSP_Configuration;
/* /*
* NOTE: Use the standard Console driver entry * NOTE: Use the standard Console driver entry
*/ */
/* /*
* NOTE: Use the standard Clock driver entry * NOTE: Use the standard Clock driver entry
*/ */

View File

@@ -3,7 +3,7 @@
## ##
## Explicitly set CPPASCOMPILE ## Explicitly set CPPASCOMPILE
# to be able to use it for compilation of *.S even if automake # to be able to use it for compilation of *.S even if automake
# doesn't generate this variable. (automake-1.8.2+ only generates # doesn't generate this variable. (automake-1.8.2+ only generates
# this rule if *_SOURCES contain *.S.) # this rule if *_SOURCES contain *.S.)
CPPASCOMPILE = $(CCAS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) CPPASCOMPILE = $(CCAS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)

View File

@@ -5,4 +5,3 @@ $(ARCH)/%$(LIB_VARIANT).$(OBJEXT): %.c $(ARCH)/$(dirstamp)
${COMPILE} -o $@ -c $< ${COMPILE} -o $@ -c $<
$(ARCH)/%$(LIB_VARIANT).$(OBJEXT): %.S $(ARCH)/$(dirstamp) $(ARCH)/%$(LIB_VARIANT).$(OBJEXT): %.S $(ARCH)/$(dirstamp)
${CCASCOMPILE} -DASM -o $@ -c $< ${CCASCOMPILE} -DASM -o $@ -c $<

View File

@@ -41,7 +41,7 @@ volatile uint32_t Clock_driver_ticks;
/* /*
* These are set by clock driver during its init * These are set by clock driver during its init
*/ */
rtems_device_major_number rtems_clock_major = ~0; rtems_device_major_number rtems_clock_major = ~0;
rtems_device_minor_number rtems_clock_minor; rtems_device_minor_number rtems_clock_minor;
@@ -68,7 +68,7 @@ rtems_isr Clock_isr(
) )
{ {
/* /*
* The counter register gets reset automatically as well as the * The counter register gets reset automatically as well as the
* interrupt occurred flag so we should not have to do anything * interrupt occurred flag so we should not have to do anything
* with the hardware. * with the hardware.
*/ */
@@ -127,7 +127,7 @@ void Install_clock(
Clock_counter_register_value = (unsigned int) tmp; Clock_counter_register_value = (unsigned int) tmp;
#if 0 #if 0
Clock_counter_register_value = Clock_counter_register_value =
(uint32_t) ((float) BSP_Configuration.microseconds_per_tick / (uint32_t) ((float) BSP_Configuration.microseconds_per_tick /
((float)_ClockFrequency / 2.0))); ((float)_ClockFrequency / 2.0)));
#endif #endif
@@ -185,14 +185,14 @@ rtems_device_driver Clock_initialize(
) )
{ {
Install_clock( Clock_isr ); Install_clock( Clock_isr );
/* /*
* make major/minor avail to others such as shared memory driver * make major/minor avail to others such as shared memory driver
*/ */
rtems_clock_major = major; rtems_clock_major = major;
rtems_clock_minor = minor; rtems_clock_minor = minor;
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
@@ -204,15 +204,15 @@ rtems_device_driver Clock_control(
{ {
uint32_t isrlevel; uint32_t isrlevel;
rtems_libio_ioctl_args_t *args = pargp; rtems_libio_ioctl_args_t *args = pargp;
if (args == 0) if (args == 0)
goto done; goto done;
/* /*
* This is hokey, but until we get a defined interface * This is hokey, but until we get a defined interface
* to do this, it will just be this simple... * to do this, it will just be this simple...
*/ */
if (args->command == rtems_build_name('I', 'S', 'R', ' ')) if (args->command == rtems_build_name('I', 'S', 'R', ' '))
{ {
Clock_isr(CLOCK_VECTOR); Clock_isr(CLOCK_VECTOR);
@@ -223,7 +223,7 @@ rtems_device_driver Clock_control(
(void) set_vector( args->buffer, CLOCK_VECTOR, 1 ); (void) set_vector( args->buffer, CLOCK_VECTOR, 1 );
rtems_interrupt_enable( isrlevel ); rtems_interrupt_enable( isrlevel );
} }
done: done:
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }

View File

@@ -31,7 +31,7 @@ void console_outbyte_polled(
); );
/* /*
* console_inbyte_nonblocking * console_inbyte_nonblocking
* *
* This routine polls for a character. * This routine polls for a character.
*/ */
@@ -67,7 +67,7 @@ int console_write_support (
* Console Device Driver Entry Points * Console Device Driver Entry Points
* *
*/ */
rtems_device_driver console_initialize( rtems_device_driver console_initialize(
rtems_device_major_number major, rtems_device_major_number major,
rtems_device_minor_number minor, rtems_device_minor_number minor,
@@ -111,12 +111,12 @@ rtems_device_driver console_open(
assert( minor <= 1 ); assert( minor <= 1 );
if ( minor > 2 ) if ( minor > 2 )
return RTEMS_INVALID_NUMBER; return RTEMS_INVALID_NUMBER;
sc = rtems_termios_open (major, minor, arg, &pollCallbacks ); sc = rtems_termios_open (major, minor, arg, &pollCallbacks );
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
rtems_device_driver console_close( rtems_device_driver console_close(
rtems_device_major_number major, rtems_device_major_number major,
rtems_device_minor_number minor, rtems_device_minor_number minor,
@@ -125,7 +125,7 @@ rtems_device_driver console_close(
{ {
return rtems_termios_close (arg); return rtems_termios_close (arg);
} }
rtems_device_driver console_read( rtems_device_driver console_read(
rtems_device_major_number major, rtems_device_major_number major,
rtems_device_minor_number minor, rtems_device_minor_number minor,
@@ -134,7 +134,7 @@ rtems_device_driver console_read(
{ {
return rtems_termios_read (arg); return rtems_termios_read (arg);
} }
rtems_device_driver console_write( rtems_device_driver console_write(
rtems_device_major_number major, rtems_device_major_number major,
rtems_device_minor_number minor, rtems_device_minor_number minor,
@@ -143,7 +143,7 @@ rtems_device_driver console_write(
{ {
return rtems_termios_write (arg); return rtems_termios_write (arg);
} }
rtems_device_driver console_control( rtems_device_driver console_control(
rtems_device_major_number major, rtems_device_major_number major,
rtems_device_minor_number minor, rtems_device_minor_number minor,

View File

@@ -43,7 +43,7 @@ C4X_BSP_output_char( int c )
} }
/* /*
* console_inbyte_nonblocking * console_inbyte_nonblocking
* *
* This routine polls for a character. * This routine polls for a character.
*/ */

View File

@@ -74,15 +74,15 @@ extern "C" {
/* /*
* Device Driver Table Entries * Device Driver Table Entries
*/ */
/* /*
* NOTE: Use the standard Console driver entry * NOTE: Use the standard Console driver entry
*/ */
/* /*
* NOTE: Use the standard Clock driver entry * NOTE: Use the standard Clock driver entry
*/ */
/* /*
* Information placed in the linkcmds file. * Information placed in the linkcmds file.

View File

@@ -22,7 +22,7 @@ _start:
ldi 0800h,st ldi 0800h,st
ldp @mem_control ldp @mem_control
ldi @mem_control,ar0 ldi @mem_control,ar0
ldp @mem_data ldp @mem_data
ldi @mem_data,r0 ldi @mem_data,r0
sti r0,*+ar0(0) sti r0,*+ar0(0)
sti r0,*+ar0(4) sti r0,*+ar0(4)
@@ -42,7 +42,7 @@ _start:
ldi 0800h,st ldi 0800h,st
ldp @mem_control ldp @mem_control
ldi @mem_control,ar0 ldi @mem_control,ar0
ldp @mem_data ldp @mem_data
ldi @mem_data,r0 ldi @mem_data,r0
sti r0,*+ar0(0) sti r0,*+ar0(0)
sti r0,*+ar0(4) sti r0,*+ar0(4)

View File

@@ -24,7 +24,7 @@
* The original table from the application and our copy of it with * The original table from the application and our copy of it with
* some changes. * some changes.
*/ */
extern rtems_configuration_table Configuration; extern rtems_configuration_table Configuration;
rtems_configuration_table BSP_Configuration; rtems_configuration_table BSP_Configuration;
@@ -33,7 +33,7 @@ rtems_cpu_table Cpu_table;
/* /*
* Use the shared implementations of the following routines * Use the shared implementations of the following routines
*/ */
void bsp_postdriver_hook(void); void bsp_postdriver_hook(void);
void bsp_libc_init( void *, uint32_t, int ); void bsp_libc_init( void *, uint32_t, int );
extern void bsp_spurious_initialize(); extern void bsp_spurious_initialize();
@@ -102,7 +102,7 @@ void bsp_start( void )
if ( BSP_Configuration.work_space_size > (int) &_WorkspaceMax ) if ( BSP_Configuration.work_space_size > (int) &_WorkspaceMax )
rtems_fatal_error_occurred( 0x43218765 ); rtems_fatal_error_occurred( 0x43218765 );
BSP_output_char = C4X_BSP_output_char; BSP_output_char = C4X_BSP_output_char;
BSP_poll_char = (BSP_polling_getchar_function_type) NULL; BSP_poll_char = (BSP_polling_getchar_function_type) NULL;
} }

View File

@@ -1,7 +1,7 @@
/* /*
* CXX Simulator Spurious Trap Handler Assistant * CXX Simulator Spurious Trap Handler Assistant
* *
* This is just enough of a trap handler to let us know what * This is just enough of a trap handler to let us know what
* the likely source of the trap was. * the likely source of the trap was.
* *
* COPYRIGHT (c) 1989-1999. * COPYRIGHT (c) 1989-1999.

View File

@@ -35,7 +35,7 @@ void Timer_initialize( void )
* implemenations of timer but .... * implemenations of timer but ....
*/ */
c4x_timer_stop(C4X_TIMER_0); c4x_timer_stop(C4X_TIMER_0);
c4x_timer_set_period(C4X_TIMER_0, 0xffffffff); /* so no interupts */ c4x_timer_set_period(C4X_TIMER_0, 0xffffffff); /* so no interupts */
c4x_timer_start(C4X_TIMER_0); c4x_timer_start(C4X_TIMER_0);

View File

@@ -1,7 +1,7 @@
/* /*
* CXX Spurious Trap Handler Install Routine * CXX Spurious Trap Handler Install Routine
* *
* This is just enough of a trap handler to let us know what * This is just enough of a trap handler to let us know what
* the likely source of the trap was. * the likely source of the trap was.
* *
* COPYRIGHT (c) 1989-1999. * COPYRIGHT (c) 1989-1999.
@@ -20,7 +20,7 @@
/* /*
* bsp_spurious_initialize * bsp_spurious_initialize
* *
* Install the spurious handler for most vectors. * Install the spurious handler for most vectors.
*/ */
rtems_isr bsp_spurious_handler( rtems_isr bsp_spurious_handler(

View File

@@ -1,7 +1,7 @@
/* /*
* C3X Spurious Trap Handler * C3X Spurious Trap Handler
* *
* This is just enough of a trap handler to let us know what * This is just enough of a trap handler to let us know what
* the likely source of the trap was. * the likely source of the trap was.
* *
* COPYRIGHT (c) 1989-1999. * COPYRIGHT (c) 1989-1999.

View File

@@ -1,7 +1,7 @@
/* /*
* C4X Spurious Trap Handler * C4X Spurious Trap Handler
* *
* This is just enough of a trap handler to let us know what * This is just enough of a trap handler to let us know what
* the likely source of the trap was. * the likely source of the trap was.
* *
* COPYRIGHT (c) 1989-1999. * COPYRIGHT (c) 1989-1999.

View File

@@ -40,12 +40,12 @@ void console_outbyte_polled(
char ch char ch
) )
{ {
asm volatile( "mov.b #0,r1l ; mov.b %0l,r2l ; jsr @@0xc4" asm volatile( "mov.b #0,r1l ; mov.b %0l,r2l ; jsr @@0xc4"
: : "r" (ch) : "r1", "r2"); : : "r" (ch) : "r1", "r2");
} }
/* /*
* console_inbyte_nonblocking * console_inbyte_nonblocking
* *
* This routine polls for a character. * This routine polls for a character.
*/ */

View File

@@ -85,7 +85,7 @@ extern rtems_configuration_table BSP_Configuration;
/* /*
* NOTE: Use the standard Console driver entry * NOTE: Use the standard Console driver entry
*/ */
/* /*
* NOTE: Use the standard Clock driver entry * NOTE: Use the standard Clock driver entry
*/ */

View File

@@ -20,7 +20,7 @@ _start:
jmp @_start ; restart jmp @_start ; restart
#else #else
#if defined(__H8300H__) #if defined(__H8300H__)
.h8300h .h8300h
#else /* must be __H300S__ */ #else /* must be __H300S__ */
.h8300s .h8300s

View File

@@ -19,7 +19,7 @@
#include <bsp.h> #include <bsp.h>
#include <rtems/libio.h> #include <rtems/libio.h>
#include <rtems/libcsupport.h> #include <rtems/libcsupport.h>
/* /*
* The original table from the application and our copy of it with * The original table from the application and our copy of it with
* some changes. * some changes.
@@ -36,7 +36,7 @@ char *rtems_progname;
/* /*
* Use the shared implementations of the following routines * Use the shared implementations of the following routines
*/ */
void bsp_postdriver_hook(void); void bsp_postdriver_hook(void);
void bsp_libc_init( void *, uint32_t, int ); void bsp_libc_init( void *, uint32_t, int );
@@ -53,7 +53,7 @@ void bsp_libc_init( void *, uint32_t, int );
* not yet initialized. * not yet initialized.
* *
*/ */
void bsp_pretasking_hook(void) void bsp_pretasking_hook(void)
{ {
void *heapStart; void *heapStart;
@@ -72,7 +72,7 @@ void bsp_pretasking_hook(void)
#endif #endif
} }
/* /*
* bsp_start * bsp_start
* *

View File

@@ -41,7 +41,7 @@ void Clock_exit( void );
/* /*
* These are set by clock driver during its init * These are set by clock driver during its init
*/ */
rtems_device_major_number rtems_clock_major = ~0; rtems_device_major_number rtems_clock_major = ~0;
rtems_device_major_number rtems_clock_minor = 0; rtems_device_major_number rtems_clock_minor = 0;
@@ -91,28 +91,28 @@ rtems_device_driver Clock_initialize(
{ {
unsigned timer_counter_init_value; unsigned timer_counter_init_value;
unsigned char clock_lsb, clock_msb; unsigned char clock_lsb, clock_msb;
Clock_driver_ticks = 0; Clock_driver_ticks = 0;
Clock_isrs = Clock_isrs =
Clock_initial_isr_value = Clock_initial_isr_value =
BSP_Configuration.microseconds_per_tick / 1000; /* ticks per clock_isr */ BSP_Configuration.microseconds_per_tick / 1000; /* ticks per clock_isr */
/* /*
* configure the counter timer ( should be based on microsecs/tick ) * configure the counter timer ( should be based on microsecs/tick )
* NB. The divisor(Clock_isrs) resolves the is the same number that appears in confdefs.h * NB. The divisor(Clock_isrs) resolves the is the same number that appears in confdefs.h
* when setting the microseconds_per_tick value. * when setting the microseconds_per_tick value.
*/ */
ClockOff ( &clockIrqData ); ClockOff ( &clockIrqData );
timer_counter_init_value = BSP_Configuration.microseconds_per_tick / Clock_isrs; timer_counter_init_value = BSP_Configuration.microseconds_per_tick / Clock_isrs;
clock_lsb = (unsigned char)timer_counter_init_value; clock_lsb = (unsigned char)timer_counter_init_value;
clock_msb = timer_counter_init_value >> 8; clock_msb = timer_counter_init_value >> 8;
outport_byte ( TMRCON , 0x34 ); outport_byte ( TMRCON , 0x34 );
outport_byte ( TMR0 , clock_lsb ); /* load LSB first */ outport_byte ( TMR0 , clock_lsb ); /* load LSB first */
outport_byte ( TMR0 , clock_msb ); /* then MSB */ outport_byte ( TMR0 , clock_msb ); /* then MSB */
if (!BSP_install_rtems_irq_handler (&clockIrqData)) { if (!BSP_install_rtems_irq_handler (&clockIrqData)) {
printk("Unable to initialize system clock\n"); printk("Unable to initialize system clock\n");
rtems_fatal_error_occurred(1); rtems_fatal_error_occurred(1);
@@ -121,10 +121,10 @@ rtems_device_driver Clock_initialize(
/* /*
* make major/minor avail to others such as shared memory driver * make major/minor avail to others such as shared memory driver
*/ */
rtems_clock_major = major; rtems_clock_major = major;
rtems_clock_minor = minor; rtems_clock_minor = minor;
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
@@ -135,15 +135,15 @@ rtems_device_driver Clock_control(
) )
{ {
rtems_libio_ioctl_args_t *args = pargp; rtems_libio_ioctl_args_t *args = pargp;
if (args == 0) if (args == 0)
goto done; goto done;
/* /*
* This is hokey, but until we get a defined interface * This is hokey, but until we get a defined interface
* to do this, it will just be this simple... * to do this, it will just be this simple...
*/ */
if (args->command == rtems_build_name('I', 'S', 'R', ' ')) if (args->command == rtems_build_name('I', 'S', 'R', ' '))
{ {
Clock_isr(); Clock_isr();
@@ -159,13 +159,13 @@ rtems_device_driver Clock_control(
printk("Clock installed AGAIN\n"); printk("Clock installed AGAIN\n");
#endif #endif
} }
done: done:
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void Clock_exit() void Clock_exit()
{ {
ClockOff(&clockIrqData); ClockOff(&clockIrqData);
BSP_remove_rtems_irq_handler (&clockIrqData); BSP_remove_rtems_irq_handler (&clockIrqData);
} }

View File

@@ -1,7 +1,7 @@
/*-------------------------------------------------------------------------+ /*-------------------------------------------------------------------------+
| console.c v1.1 - i386ex BSP - 1997/08/07 | console.c v1.1 - i386ex BSP - 1997/08/07
+--------------------------------------------------------------------------+ +--------------------------------------------------------------------------+
| This file contains the i386ex console I/O package. It is just a termios | This file contains the i386ex console I/O package. It is just a termios
| wrapper. | wrapper.
+--------------------------------------------------------------------------+ +--------------------------------------------------------------------------+
| (C) Copyright 1997 - | (C) Copyright 1997 -
@@ -48,7 +48,7 @@
* Possible value for console input/output : * Possible value for console input/output :
* BSP_UART_COM1 * BSP_UART_COM1
* BSP_UART_COM2 * BSP_UART_COM2
* BSP_CONSOLE_PORT_CONSOLE is not valid in this BSP. * BSP_CONSOLE_PORT_CONSOLE is not valid in this BSP.
* All references to either keyboard or video handling have been removed. * All references to either keyboard or video handling have been removed.
*/ */
@@ -67,7 +67,7 @@ static int isr_is_on(const rtems_irq_connect_data *);
* Change references to com2 if required. * Change references to com2 if required.
*/ */
static rtems_irq_connect_data console_isr_data = static rtems_irq_connect_data console_isr_data =
{ BSP_UART_COM2_IRQ, { BSP_UART_COM2_IRQ,
BSP_uart_termios_isr_com2, BSP_uart_termios_isr_com2,
isr_on, isr_on,
@@ -79,7 +79,7 @@ isr_on(const rtems_irq_connect_data *unused)
{ {
return; return;
} }
static void static void
isr_off(const rtems_irq_connect_data *unused) isr_off(const rtems_irq_connect_data *unused)
{ {
@@ -108,21 +108,21 @@ console_initialize(rtems_device_major_number major,
* Set up TERMIOS * Set up TERMIOS
*/ */
rtems_termios_initialize (); rtems_termios_initialize ();
/* /*
* Do device-specific initialization * Do device-specific initialization
*/ */
/* 9600-8-N-1, no hardware flow control */ /* 9600-8-N-1, no hardware flow control */
BSP_uart_init(BSPConsolePort, 9600, CHR_8_BITS, 0, 0, 0); BSP_uart_init(BSPConsolePort, 9600, CHR_8_BITS, 0, 0, 0);
/* Set interrupt handler */ /* Set interrupt handler */
if(BSPConsolePort == BSP_UART_COM1) if(BSPConsolePort == BSP_UART_COM1)
{ {
console_isr_data.name = BSP_UART_COM1_IRQ; console_isr_data.name = BSP_UART_COM1_IRQ;
console_isr_data.hdl = BSP_uart_termios_isr_com1; console_isr_data.hdl = BSP_uart_termios_isr_com1;
} }
else else
{ {
@@ -130,9 +130,9 @@ console_initialize(rtems_device_major_number major,
console_isr_data.name = BSP_UART_COM2_IRQ; console_isr_data.name = BSP_UART_COM2_IRQ;
console_isr_data.hdl = BSP_uart_termios_isr_com2; console_isr_data.hdl = BSP_uart_termios_isr_com2;
} }
status = BSP_install_rtems_irq_handler(&console_isr_data); status = BSP_install_rtems_irq_handler(&console_isr_data);
if (!status){ if (!status){
printk("Error installing serial console interrupt handler!\n"); printk("Error installing serial console interrupt handler!\n");
rtems_fatal_error_occurred(status); rtems_fatal_error_occurred(status);
@@ -146,7 +146,7 @@ console_initialize(rtems_device_major_number major,
printk("Error registering console device!\n"); printk("Error registering console device!\n");
rtems_fatal_error_occurred (status); rtems_fatal_error_occurred (status);
} }
if(BSPConsolePort == BSP_UART_COM1) if(BSPConsolePort == BSP_UART_COM1)
{ {
printk("Initialized console on port COM1 9600-8-N-1\n\n"); printk("Initialized console on port COM1 9600-8-N-1\n\n");
@@ -176,7 +176,7 @@ console_open(rtems_device_major_number major,
void *arg) void *arg)
{ {
rtems_status_code status; rtems_status_code status;
static rtems_termios_callbacks cb = static rtems_termios_callbacks cb =
{ {
NULL, /* firstOpen */ NULL, /* firstOpen */
console_last_close, /* lastClose */ console_last_close, /* lastClose */
@@ -204,9 +204,9 @@ console_open(rtems_device_major_number major,
/* /*
* Pass data area info down to driver * Pass data area info down to driver
*/ */
BSP_uart_termios_set(BSPConsolePort, BSP_uart_termios_set(BSPConsolePort,
((rtems_libio_open_close_args_t *)arg)->iop->data1); ((rtems_libio_open_close_args_t *)arg)->iop->data1);
/* Enable interrupts on channel */ /* Enable interrupts on channel */
BSP_uart_intr_ctrl(BSPConsolePort, BSP_UART_INTR_CTRL_TERMIOS); BSP_uart_intr_ctrl(BSPConsolePort, BSP_UART_INTR_CTRL_TERMIOS);
@@ -223,10 +223,10 @@ console_close(rtems_device_major_number major,
{ {
return (rtems_termios_close (arg)); return (rtems_termios_close (arg));
} /* console_close */ } /* console_close */
/*-------------------------------------------------------------------------+ /*-------------------------------------------------------------------------+
| Console device driver READ entry point. | Console device driver READ entry point.
+--------------------------------------------------------------------------+ +--------------------------------------------------------------------------+
@@ -248,7 +248,7 @@ console_read(rtems_device_major_number major,
return sc; return sc;
} /* console_read */ } /* console_read */
/*-------------------------------------------------------------------------+ /*-------------------------------------------------------------------------+
| Console device driver WRITE entry point. | Console device driver WRITE entry point.
@@ -261,20 +261,20 @@ console_write(rtems_device_major_number major,
void * arg) void * arg)
{ {
return rtems_termios_write (arg); return rtems_termios_write (arg);
} /* console_write */ } /* console_write */
/* /*
* Handle ioctl request. * Handle ioctl request.
*/ */
rtems_device_driver rtems_device_driver
console_control(rtems_device_major_number major, console_control(rtems_device_major_number major,
rtems_device_minor_number minor, rtems_device_minor_number minor,
void * arg void * arg
) )
{ {
return rtems_termios_ioctl (arg); return rtems_termios_ioctl (arg);
} }
@@ -283,45 +283,45 @@ conSetAttr(int minor, const struct termios *t)
{ {
int baud; int baud;
switch (t->c_cflag & CBAUD) switch (t->c_cflag & CBAUD)
{ {
case B50: case B50:
baud = 50; baud = 50;
break; break;
case B75: case B75:
baud = 75; baud = 75;
break; break;
case B110: case B110:
baud = 110; baud = 110;
break; break;
case B134: case B134:
baud = 134; baud = 134;
break; break;
case B150: case B150:
baud = 150; baud = 150;
break; break;
case B200: case B200:
baud = 200; baud = 200;
break; break;
case B300: case B300:
baud = 300; baud = 300;
break; break;
case B600: case B600:
baud = 600; baud = 600;
break; break;
case B1200: case B1200:
baud = 1200; baud = 1200;
break; break;
case B1800: case B1800:
baud = 1800; baud = 1800;
break; break;
case B2400: case B2400:
baud = 2400; baud = 2400;
break; break;
case B4800: case B4800:
baud = 4800; baud = 4800;
break; break;
case B9600: case B9600:
baud = 9600; baud = 9600;
break; break;
case B19200: case B19200:
@@ -330,7 +330,7 @@ conSetAttr(int minor, const struct termios *t)
case B38400: case B38400:
baud = 38400; baud = 38400;
break; break;
case B57600: case B57600:
baud = 57600; baud = 57600;
break; break;
case B115200: case B115200:
@@ -351,13 +351,13 @@ conSetAttr(int minor, const struct termios *t)
* BSP initialization * BSP initialization
*/ */
BSP_output_char_function_type BSP_output_char = BSP_output_char_function_type BSP_output_char =
(BSP_output_char_function_type) BSP_output_char_via_serial; (BSP_output_char_function_type) BSP_output_char_via_serial;
BSP_polling_getchar_function_type BSP_poll_char = BSP_polling_getchar_function_type BSP_poll_char =
(BSP_polling_getchar_function_type) BSP_poll_char_via_serial; (BSP_polling_getchar_function_type) BSP_poll_char_via_serial;
int BSP_poll_read(int ttyMinor){ int BSP_poll_read(int ttyMinor){
return BSP_poll_char_via_serial(); return BSP_poll_char_via_serial();
} }

View File

@@ -27,7 +27,7 @@ extern "C" {
#include <rtems/bspIo.h> #include <rtems/bspIo.h>
#include <libcpu/cpu.h> #include <libcpu/cpu.h>
#include <irq.h> #include <irq.h>
/* /*
* confdefs.h overrides for this BSP: * confdefs.h overrides for this BSP:
* - number of termios serial ports (defaults to 1) * - number of termios serial ports (defaults to 1)
@@ -120,15 +120,15 @@ extern "C" {
/* /*
* Device Driver Table Entries * Device Driver Table Entries
*/ */
/* /*
* NOTE: Use the standard Console driver entry * NOTE: Use the standard Console driver entry
*/ */
/* /*
* NOTE: Use the standard Clock driver entry * NOTE: Use the standard Clock driver entry
*/ */
/* miscellaneous stuff assumed to exist */ /* miscellaneous stuff assumed to exist */
extern rtems_configuration_table BSP_Configuration; extern rtems_configuration_table BSP_Configuration;

View File

@@ -11,7 +11,7 @@
extern int uti596_attach(struct rtems_bsdnet_ifconfig *); extern int uti596_attach(struct rtems_bsdnet_ifconfig *);
extern int uti596dump(char * ); extern int uti596dump(char * );
extern void uti596reset(void); extern void uti596reset(void);
extern void uti596Diagnose(int); extern void uti596Diagnose(int);
extern void uti596_request_reset(void); extern void uti596_request_reset(void);

File diff suppressed because it is too large Load Diff

View File

@@ -58,13 +58,13 @@ struct enet_statistics{
enum commands { enum commands {
CmdNOp = 0, CmdNOp = 0,
CmdSASetup = 1, CmdSASetup = 1,
CmdConfigure = 2, CmdConfigure = 2,
CmdMulticastList = 3, CmdMulticastList = 3,
CmdTx = 4, CmdTx = 4,
CmdTDR = 5, CmdTDR = 5,
CmdDump = 6, CmdDump = 6,
CmdDiagnose = 7 CmdDiagnose = 7
}; };
@@ -142,7 +142,7 @@ struct i596_tbd {
unsigned short size; unsigned short size;
unsigned short pad; unsigned short pad;
struct i596_tbd *next; struct i596_tbd *next;
char *data; char *data;
}; };
/* /*
@@ -153,7 +153,7 @@ struct i596_rbd {
unsigned short count; unsigned short count;
unsigned short offset; unsigned short offset;
struct i596_rbd *next; struct i596_rbd *next;
char *data; char *data;
unsigned short size; unsigned short size;
unsigned short pad; unsigned short pad;
}; };
@@ -176,10 +176,10 @@ struct i596_rfd {
volatile unsigned short stat; volatile unsigned short stat;
volatile unsigned short cmd; volatile unsigned short cmd;
struct i596_rfd *next; struct i596_rfd *next;
struct i596_rbd *pRbd; struct i596_rbd *pRbd;
unsigned short count; unsigned short count;
unsigned short size; unsigned short size;
char data [1532 ]; char data [1532 ];
} ; } ;
@@ -228,7 +228,7 @@ struct i596_scb {
}; };
/* /*
* Intermediate System Control Block * Intermediate System Control Block
*/ */
struct i596_iscp { struct i596_iscp {
@@ -253,7 +253,7 @@ struct uti596_softc {
struct i596_set_add set_add; struct i596_set_add set_add;
struct i596_configure set_conf; struct i596_configure set_conf;
struct i596_tdr tdr; struct i596_tdr tdr;
struct i596_nop nop; struct i596_nop nop;
unsigned long stat; unsigned long stat;
struct tx_cmd *pTxCmd; struct tx_cmd *pTxCmd;
struct i596_tbd *pTbd; struct i596_tbd *pTbd;

View File

@@ -8,7 +8,7 @@
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at * found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE. * http://www.rtems.com/license/LICENSE.
* *
* $Id$ * $Id$
*/ */

View File

@@ -2,14 +2,14 @@
* This file is the main boot and configuration file for the i386ex. It is * This file is the main boot and configuration file for the i386ex. It is
* solely responsible for initializing the internal register set to reflect * solely responsible for initializing the internal register set to reflect
* the proper board configuration. This version is the "generic" i386ex * the proper board configuration. This version is the "generic" i386ex
* startup: * startup:
* *
* 1) 512K flask ROM @3f80000 * 1) 512K flask ROM @3f80000
* 2) 1 Mb RAM @ 0x0 * 2) 1 Mb RAM @ 0x0
* 3) Timer0 used as RTEMS clock ticker, 1 msec tick rate. * 3) Timer0 used as RTEMS clock ticker, 1 msec tick rate.
* 4) READY# is generated by CPU * 4) READY# is generated by CPU
* *
* The file is a multi-section file, with sections as follows: * The file is a multi-section file, with sections as follows:
* 1) interrupt gates, in section "ints" * 1) interrupt gates, in section "ints"
* 2) interrupt descriptor table, in section "idt" * 2) interrupt descriptor table, in section "idt"
* 3) global descriptor table, in section "gdt" * 3) global descriptor table, in section "gdt"
@@ -28,11 +28,11 @@
* *
* $Id$ * $Id$
changes: changes:
SetExRegByte(ICW3S , 0x02 ) # MUST be 0x02 according to intel SetExRegByte(ICW3S , 0x02 ) # MUST be 0x02 according to intel
SetExRegByte(ICW3M , 0x04 ) # IR2 is cascaded internally: was 0x02 => IR1 is cascaded SetExRegByte(ICW3M , 0x04 ) # IR2 is cascaded internally: was 0x02 => IR1 is cascaded
*/ */
@@ -43,56 +43,56 @@ changes:
/* /*
* NEW_GAS Needed for binutils 2.9.1.0.7 and higher * NEW_GAS Needed for binutils 2.9.1.0.7 and higher
*/ */
EXTERN (boot_card) /* exits to bspstart */ EXTERN (boot_card) /* exits to bspstart */
EXTERN (stack_start) /* defined in startup/linkcmds */ EXTERN (stack_start) /* defined in startup/linkcmds */
EXTERN (Clock_exit) EXTERN (Clock_exit)
PUBLIC (Interrupt_descriptor_table) PUBLIC (Interrupt_descriptor_table)
PUBLIC ( SYM(IDTR) ) PUBLIC ( SYM(IDTR) )
/* PUBLIC( SYM(_initInternalRegisters) ) */ /* PUBLIC( SYM(_initInternalRegisters) ) */
BEGIN_DATA BEGIN_DATA
SYM(IDTR): DESC3( SYM(Interrupt_descriptor_table), 0x07ff ); SYM(IDTR): DESC3( SYM(Interrupt_descriptor_table), 0x07ff );
SYM(Interrupt_descriptor_table): /* Now in data section */ SYM(Interrupt_descriptor_table): /* Now in data section */
.rept 256 .rept 256
.word 0,0,0,0 .word 0,0,0,0
.endr .endr
END_DATA END_DATA
BEGIN_DATA BEGIN_DATA
PUBLIC (_Global_descriptor_table) PUBLIC (_Global_descriptor_table)
SYM(GDTR): DESC3( GDT_TABLE, 0x1f ); # one less than the size SYM(GDTR): DESC3( GDT_TABLE, 0x1f ); # one less than the size
SYM (_Global_descriptor_table): SYM (_Global_descriptor_table):
SYM(GDT_TABLE): DESC2(0,0,0,0,0,0); SYM(GDT_TABLE): DESC2(0,0,0,0,0,0);
SYM(GDT_ALIAS): DESC2(32,0x1000,0x0,0x93,0,0x0); SYM(GDT_ALIAS): DESC2(32,0x1000,0x0,0x93,0,0x0);
SYM(GDT_CODE): DESC2(0xffff,0,0x0,0x9B,0xDF,0x00); SYM(GDT_CODE): DESC2(0xffff,0,0x0,0x9B,0xDF,0x00);
SYM(GDT_DATA): DESC2(0xffff,0,0x0,0x92,0xDF,0x00); # was CF SYM(GDT_DATA): DESC2(0xffff,0,0x0,0x92,0xDF,0x00); # was CF
SYM(GDT_END): SYM(GDT_END):
END_DATA END_DATA
/* This section is the section that is used by the interrupt /* This section is the section that is used by the interrupt
descriptor table. It is used to provide the IDT with the descriptor table. It is used to provide the IDT with the
correct vector offsets. It is for symbol definition only. correct vector offsets. It is for symbol definition only.
*/ */
.code16 .code16
.section .reset, "ax" .section .reset, "ax"
PUBLIC ( SYM(reset) ) PUBLIC ( SYM(reset) )
SYM(reset): SYM(reset):
nop nop
cli cli
#ifdef NEW_GAS #ifdef NEW_GAS
data32 addr32 jmp SYM(_initInternalRegisters) /* different section in this file */ data32 addr32 jmp SYM(_initInternalRegisters) /* different section in this file */
#else #else
jmp SYM(_initInternalRegisters) /* different section in this file */ jmp SYM(_initInternalRegisters) /* different section in this file */
#endif #endif
/* .code32 in case this section moves */ /* .code32 in case this section moves */
nop /* required by CHIP LAB to pad out size */ nop /* required by CHIP LAB to pad out size */
nop nop
@@ -105,27 +105,27 @@ SYM(reset):
nop nop
nop nop
nop nop
.section .initial, "ax" .section .initial, "ax"
/* nop */ /* required for linker -- initial jump is to "label - 2" */ /* nop */ /* required for linker -- initial jump is to "label - 2" */
/* nop */ /* ie. _initInternalRegisters -2 ( which now == .initial ) */ /* nop */ /* ie. _initInternalRegisters -2 ( which now == .initial ) */
/* /*
* Enable access to peripheral register at expanded I/O addresses * Enable access to peripheral register at expanded I/O addresses
*/ */
SYM(_initInternalRegisters): SYM(_initInternalRegisters):
/* .code16 */ /* .code16 */
movw $0x8000 , ax movw $0x8000 , ax
outb al , $REMAPCFGH outb al , $REMAPCFGH
xchg al , ah xchg al , ah
outb al,$REMAPCFGL outb al,$REMAPCFGL
outw ax, $REMAPCFG ; outw ax, $REMAPCFG ;
/* /*
* Configure operation of the A20 Address Line * Configure operation of the A20 Address Line
*/ */
SYM(A20): SYM(A20):
movw $PORT92 , dx movw $PORT92 , dx
inb dx , al # clear A20 port reset inb dx , al # clear A20 port reset
andb $0xfe , al # b0 Fast Reset(0)=disabled,(1)=reset triggered andb $0xfe , al # b0 Fast Reset(0)=disabled,(1)=reset triggered
orb $0x02 , al # Bit 1 Fast A20 = 0 (always 0) else enabled. orb $0x02 , al # Bit 1 Fast A20 = 0 (always 0) else enabled.
@@ -135,11 +135,11 @@ SYM(A20):
SYM(Watchdog): SYM(Watchdog):
movw $WDTSTATUS , dx # address the WDT status port movw $WDTSTATUS , dx # address the WDT status port
inb dx , al # get the WDT status inb dx , al # get the WDT status
orb $0x01 , al # set the CLKDIS bit orb $0x01 , al # set the CLKDIS bit
outb al , dx # disable the clock to the WDT outb al , dx # disable the clock to the WDT
/* /*
* Initialize Refresh Control Unit for: * Initialize Refresh Control Unit for:
* Refresh Address = 0x0000 * Refresh Address = 0x0000
* Refresh gate between rows is 15.6 uSec * Refresh gate between rows is 15.6 uSec
@@ -148,20 +148,20 @@ SYM(Watchdog):
* The refresh pin is not used. * The refresh pin is not used.
*/ */
SYM(InitRCU): SYM(InitRCU):
SetExRegWord( RFSCIR , 390) # refresh interval was 390, tried 312 SetExRegWord( RFSCIR , 390) # refresh interval was 390, tried 312
SetExRegWord( RFSBAD , 0x0) # base address SetExRegWord( RFSBAD , 0x0) # base address
SetExRegWord( RFSADD , 0x0) # address register SetExRegWord( RFSADD , 0x0) # address register
SetExRegWord( RFSCON , 0x8000) # enable bit SetExRegWord( RFSCON , 0x8000) # enable bit
/* /*
* Initialize clock and power mgmt unit for: * Initialize clock and power mgmt unit for:
* Clock Frequency = 50 Mhz * Clock Frequency = 50 Mhz
* Prescaled clock output = 1 Mhz * Prescaled clock output = 1 Mhz
* Normal halt instructions * Normal halt instructions
*/ */
SYM(InitClk): SYM(InitClk):
SetExRegByte( PWRCON, 0x0 ) SetExRegByte( PWRCON, 0x0 )
SetExRegWord( CLKPRS, 0x17) # 0x13 for 1.19318 MHz. 0x17 for 1MHz. SetExRegWord( CLKPRS, 0x17) # 0x13 for 1.19318 MHz. 0x17 for 1MHz.
@@ -170,7 +170,7 @@ SYM(InitClk):
*************************************************************/ *************************************************************/
/* /*
* Initialize I/O port 1 for: * Initialize I/O port 1 for:
* PIN 0 = 1, DCD0# to package pin * PIN 0 = 1, DCD0# to package pin
* PIN 1 = 1, RTS0# to package pin * PIN 1 = 1, RTS0# to package pin
* PIN 2 = 1, DTR0# to package pin * PIN 2 = 1, DTR0# to package pin
@@ -181,15 +181,15 @@ SYM(InitClk):
* PIN 7 = 0, Outport (P17_HOLD to 386ex option header JP7 pin 3) * PIN 7 = 0, Outport (P17_HOLD to 386ex option header JP7 pin 3)
*/ */
SYM(InitPort1): SYM(InitPort1):
SetExRegByte( P1LTC , 0xff ) SetExRegByte( P1LTC , 0xff )
SetExRegByte( P1DIR , 0x0 ) SetExRegByte( P1DIR , 0x0 )
SetExRegByte( P1CFG , 0x1f) SetExRegByte( P1CFG , 0x1f)
/* /*
* Initialize I/O port 2 for: * Initialize I/O port 2 for:
* PIN 0 = 0, Outport (P20_CS0# to 386ex option header JP7 pin 11) * PIN 0 = 0, Outport (P20_CS0# to 386ex option header JP7 pin 11)
* PIN 1 = 0, Outport (P21_CS1# to 386ex option header JP7 pin 9) * PIN 1 = 0, Outport (P21_CS1# to 386ex option header JP7 pin 9)
* PIN 2 = 1, CS2# (SMRAM) If not using CS2 can be configured as.? * PIN 2 = 1, CS2# (SMRAM) If not using CS2 can be configured as.?
* PIN 3 = 0, Outport ( no connect ) * PIN 3 = 0, Outport ( no connect )
* PIN 4 = 1, CS#4 (DRAM) * PIN 4 = 1, CS#4 (DRAM)
@@ -197,34 +197,34 @@ SYM(InitPort1):
* PIN 6 = 1, TXD0 output. * PIN 6 = 1, TXD0 output.
* PIN 7 = 1, CTS0# input. * PIN 7 = 1, CTS0# input.
*/ */
SYM(InitPort2): SYM(InitPort2):
SetExRegByte( P2LTC , 0xff ) SetExRegByte( P2LTC , 0xff )
SetExRegByte( P2DIR , 0x0 ) SetExRegByte( P2DIR , 0x0 )
SetExRegByte( P2CFG , 0xfe) SetExRegByte( P2CFG , 0xfe)
/* /*
* Initialize I/O port 3 P3CFG * Initialize I/O port 3 P3CFG
* PIN 0 = 1, TMROUT0 to package pin * PIN 0 = 1, TMROUT0 to package pin
* PIN 1 = 0, (TMROUT1 to 386ex option header JP7 pin 23) * PIN 1 = 0, (TMROUT1 to 386ex option header JP7 pin 23)
* PIN 2 = 0, INT0 (IR1) disabled, (P3.2 out to JP7 pin 21) * PIN 2 = 0, INT0 (IR1) disabled, (P3.2 out to JP7 pin 21)
* PIN 3 = 0, INT1 (IR5) disbled (P3.3 to option header JP7 pin 19) * PIN 3 = 0, INT1 (IR5) disbled (P3.3 to option header JP7 pin 19)
* PIN 4 = 0, INT2 (IR6) disbled (P3.4 to option header JP7 pin 17) * PIN 4 = 0, INT2 (IR6) disbled (P3.4 to option header JP7 pin 17)
* PIN 5 = 0, INT2 (IR7) disabled (P3.5 to 386ex header JP7 pin 15) * PIN 5 = 0, INT2 (IR7) disabled (P3.5 to 386ex header JP7 pin 15)
* PIN 6 = 0, Inport (Debugger Break P3.6/PWRD to package pin ) * PIN 6 = 0, Inport (Debugger Break P3.6/PWRD to package pin )
* P3.6 selected * P3.6 selected
* PIN 7 = 0, COMCLK output disabled, 1.8432 Mhz OSC1 oscillator. * PIN 7 = 0, COMCLK output disabled, 1.8432 Mhz OSC1 oscillator.
* ( Debbugger uses COMCLK as the clocking source ) * ( Debbugger uses COMCLK as the clocking source )
* P3.7 connected to package pin. * P3.7 connected to package pin.
*/ */
SYM(InitPort3): SYM(InitPort3):
SetExRegByte( P3LTC , 0xff ) SetExRegByte( P3LTC , 0xff )
SetExRegByte( P3DIR , 0x41 ) SetExRegByte( P3DIR , 0x41 )
SetExRegByte( P3CFG , 0x09 ) # can check TMROUT0 SetExRegByte( P3CFG , 0x09 ) # can check TMROUT0
/* /*
* Initialize Peripheral Pin Configurations: * Initialize Peripheral Pin Configurations:
* PIN 0 = 1, RTS1# to package pin * PIN 0 = 1, RTS1# to package pin
* PIN 1 = 1, DTR1# to package pin * PIN 1 = 1, DTR1# to package pin
* PIN 2 = 1, TXD1 out to package pin * PIN 2 = 1, TXD1 out to package pin
* PIN 3 = 0, EOP#/TC * PIN 3 = 0, EOP#/TC
@@ -233,20 +233,20 @@ SYM(InitPort3):
* PIN 6 = 0, 0 => CS6# connected to package pin * PIN 6 = 0, 0 => CS6# connected to package pin
* PIN 7 = 0, Don't care * PIN 7 = 0, Don't care
*/ */
SYM(InitPeriph): SYM(InitPeriph):
SetExRegByte( PINCFG , 0x24) SetExRegByte( PINCFG , 0x24)
/* /*
* Initialize the Asynchronous Serial Ports: * Initialize the Asynchronous Serial Ports:
* BIT 7 = 1, Internal SIO1 modem signals * BIT 7 = 1, Internal SIO1 modem signals
* BIT 6 = 1, Internal SIO0 modem signals * BIT 6 = 1, Internal SIO0 modem signals
* BIT 2 = 0, PSCLK for SSIO clock * BIT 2 = 0, PSCLK for SSIO clock
* BIT 1 = 1, SERCLK for SIO1 clock * BIT 1 = 1, SERCLK for SIO1 clock
* BIT 0 = 1, SERCLK for SIO0 clock * BIT 0 = 1, SERCLK for SIO0 clock
*/ */
SYM(InitSIO): SYM(InitSIO):
SetExRegByte( SIOCFG, 0xC3 ) # SIOn clocked internally SetExRegByte( SIOCFG, 0xC3 ) # SIOn clocked internally
SetExRegByte( LCR0, 0x80 ) # latch DLL0, DLH0 SetExRegByte( LCR0, 0x80 ) # latch DLL0, DLH0
@@ -255,48 +255,48 @@ SYM(InitSIO):
SetExRegByte( LCR0, 0x03 ) # enable r/w buffers, IER0 accessible SetExRegByte( LCR0, 0x03 ) # enable r/w buffers, IER0 accessible
# mode 8-n-1 # mode 8-n-1
SetExRegByte( IER0, 0x00 ) # was 0x0f All interrupts detected SetExRegByte( IER0, 0x00 ) # was 0x0f All interrupts detected
SetExRegByte( LCR1, 0x80 ) # latch DLL0, DLH0 SetExRegByte( LCR1, 0x80 ) # latch DLL0, DLH0
SetExRegByte( DLL1, 0x51 ) # 0x51 set to 9600 baud, 0x7 = 115200 SetExRegByte( DLL1, 0x51 ) # 0x51 set to 9600 baud, 0x7 = 115200
SetExRegByte( DLH1, 0x00 ) # 0x145 is 2400 baud SetExRegByte( DLH1, 0x00 ) # 0x145 is 2400 baud
SetExRegByte( LCR1, 0x03 ) # enable r/w buffers, IER1 accessible SetExRegByte( LCR1, 0x03 ) # enable r/w buffers, IER1 accessible
# reg 8-n-1 # reg 8-n-1
SetExRegByte( IER1, 0x00 ) # was 0x0f - All interrupts detected SetExRegByte( IER1, 0x00 ) # was 0x0f - All interrupts detected
SYM(InitMCR): SYM(InitMCR):
/* /*
* Initialize Timer for: * Initialize Timer for:
* BIT 7 = 1, Timer clocks disabled * BIT 7 = 1, Timer clocks disabled
* BIT 6 = 0, Reserved * BIT 6 = 0, Reserved
* BIT 5 = 1, TMRCLK2 instead of Vcc to Gate2 * BIT 5 = 1, TMRCLK2 instead of Vcc to Gate2
* BIT 4 = 0, PSCLK to CLK2 * BIT 4 = 0, PSCLK to CLK2
* BIT 3 = 1, TMRCLK1 instead of Vcc to Gate1 * BIT 3 = 1, TMRCLK1 instead of Vcc to Gate1
* BIT 2 = 0, PSCLK to Gate1 * BIT 2 = 0, PSCLK to Gate1
* BIT 1 = 0, Vcc to Gate0 * BIT 1 = 0, Vcc to Gate0
* BIT 0 = 0, PSCLK to Gate0 * BIT 0 = 0, PSCLK to Gate0
*/ */
SYM(InitTimer): SYM(InitTimer):
SetExRegByte(TMRCFG , 0x80 ) # All counters disabled, Gates 0,1 SetExRegByte(TMRCFG , 0x80 ) # All counters disabled, Gates 0,1
# and 2 are set to Vcc # and 2 are set to Vcc
SetExRegByte(TMRCON , 0x34 ) # prepare to write counter 0 LSB,MSB SetExRegByte(TMRCON , 0x34 ) # prepare to write counter 0 LSB,MSB
SetExRegByte(TMR0 , 0x00 ) # sfa SetExRegByte(TMR0 , 0x00 ) # sfa
SetExRegByte(TMR0 , 0x00 ) # sfa SetExRegByte(TMR0 , 0x00 ) # sfa
SetExRegByte(TMRCON , 0x70 ) # mode 0 disables on Gate= Vcc SetExRegByte(TMRCON , 0x70 ) # mode 0 disables on Gate= Vcc
SetExRegByte(TMR1 , 0x00 ) # sfa
SetExRegByte(TMR1 , 0x00 ) # sfa SetExRegByte(TMR1 , 0x00 ) # sfa
SetExRegByte(TMR1 , 0x00 ) # sfa
SetExRegByte(TMRCON , 0xB0 ) # mode 0 disables on gate =Vcc SetExRegByte(TMRCON , 0xB0 ) # mode 0 disables on gate =Vcc
SetExRegByte(TMR2 , 0x00 ) # SetExRegByte(TMR2 , 0x00 ) #
SetExRegByte(TMR2 , 0x00 ) # SetExRegByte(TMR2 , 0x00 ) #
SetExRegByte(TMRCFG , 0x80 ) # Enable = 0x00 SetExRegByte(TMRCFG , 0x80 ) # Enable = 0x00
/* /*
* Initialize the DMACFG register for: * Initialize the DMACFG register for:
* BIT 7 = 1 , Disable DACK#1 * BIT 7 = 1 , Disable DACK#1
* BITs 6:4 = 100, TMROUT2 connected to DRQ1 * BITs 6:4 = 100, TMROUT2 connected to DRQ1
* BIT 3 = 1 , Disable DACK0# * BIT 3 = 1 , Disable DACK0#
@@ -316,17 +316,17 @@ SYM(InitTimer):
*/ */
SYM(InitInt): SYM(InitInt):
cli # ! cli # !
/* SetExRegByte(OCW3S, 0x20) # address the Slave status port /* SetExRegByte(OCW3S, 0x20) # address the Slave status port
movw $OCW3S , dx movw $OCW3S , dx
inb dx , al # Read the IRR. inb dx , al # Read the IRR.
SetExRegByte(OCW3M, 0x20) # address the Master status port SetExRegByte(OCW3M, 0x20) # address the Master status port
movw $OCW3M , dx movw $OCW3M , dx
inb dx , al # Read the IRR. inb dx , al # Read the IRR.
*/ */
SetExRegByte(ICW1S , 0x11 ) # EDGE TRIGGERED SetExRegByte(ICW1S , 0x11 ) # EDGE TRIGGERED
SetExRegByte(ICW2S , 0x28 ) # Slave base vector after Master SetExRegByte(ICW2S , 0x28 ) # Slave base vector after Master
SetExRegByte(ICW3S , 0x02 ) # slave cascaded to IR2 on master SetExRegByte(ICW3S , 0x02 ) # slave cascaded to IR2 on master
@@ -336,65 +336,65 @@ SYM(InitInt):
SetExRegByte(ICW2M , 0x20 ) # base vector starts at byte 32 SetExRegByte(ICW2M , 0x20 ) # base vector starts at byte 32
SetExRegByte(ICW3M , 0x04) # IR2 is cascaded internally SetExRegByte(ICW3M , 0x04) # IR2 is cascaded internally
SetExRegByte(ICW4M , 0x01 ) # fully nested mode SetExRegByte(ICW4M , 0x01 ) # fully nested mode
SetExRegByte(OCW1M , 0xde ) # IR0 only = 0xfe. SetExRegByte(OCW1M , 0xde ) # IR0 only = 0xfe.
# for IR5 and IR0 active use 0xde # for IR5 and IR0 active use 0xde
# for IR0 and IR2 use 0xfa # for IR0 and IR2 use 0xfa
SetExRegByte(INTCFG , 0x00 ) SetExRegByte(INTCFG , 0x00 )
SYM(SetCS4): SYM(SetCS4):
SetExRegWord(CS4ADL , 0x702) #Configure chip select 4 SetExRegWord(CS4ADL , 0x702) #Configure chip select 4
SetExRegWord(CS4ADH , 0x00) SetExRegWord(CS4ADH , 0x00)
SetExRegWord(CS4MSKH, 0x03F) SetExRegWord(CS4MSKH, 0x03F)
SetExRegWord(CS4MSKL, 0xFC01) SetExRegWord(CS4MSKL, 0xFC01)
SYM(SetUCS1): SYM(SetUCS1):
SetExRegWord(UCSADL , 0x0304) # 512K block starting at 0x80000 until 0x3f80000 SetExRegWord(UCSADL , 0x0304) # 512K block starting at 0x80000 until 0x3f80000
SetExRegWord(UCSADH , 0x03F8) SetExRegWord(UCSADH , 0x03F8)
SetExRegWord(UCSMSKH, 0x03F7) SetExRegWord(UCSMSKH, 0x03F7)
SetExRegWord(UCSMSKL, 0xFC01) # configure upper chip select SetExRegWord(UCSMSKL, 0xFC01) # configure upper chip select
/****************************************************** /******************************************************
* The GDT must be in RAM since it must be writeable, * The GDT must be in RAM since it must be writeable,
* So, move the whole data section down. * So, move the whole data section down.
********************************************************/ ********************************************************/
movw $ _ram_data_offset , di movw $ _ram_data_offset , di
movw $ _ram_data_segment, cx movw $ _ram_data_segment, cx
mov cx , es mov cx , es
movw $ _data_size , cx movw $ _data_size , cx
movw $ _rom_data_segment, ax movw $ _rom_data_segment, ax
movw $ _rom_data_offset , si movw $ _rom_data_offset , si
mov ax , ds mov ax , ds
repne repne
movsb movsb
/***************************** /*****************************
* Load the Global Descriptor * Load the Global Descriptor
* Table Register * Table Register
****************************/ ****************************/
#ifdef NEW_GAS #ifdef NEW_GAS
data32 addr32 lgdt SYM(GDTR) # location of GDT data32 addr32 lgdt SYM(GDTR) # location of GDT
#else #else
lgdt SYM(GDTR) # location of GDT lgdt SYM(GDTR) # location of GDT
#endif #endif
SYM(SetUCS): SYM(SetUCS):
SetExRegWord(UCSADL, 0x0702) # now 512K starting at 0x3f80000. SetExRegWord(UCSADL, 0x0702) # now 512K starting at 0x3f80000.
SetExRegWord(UCSADH, 0x03f8) SetExRegWord(UCSADH, 0x03f8)
SetExRegWord(UCSMSKH, 0x0007) SetExRegWord(UCSMSKH, 0x0007)
SetExRegWord(UCSMSKL, 0xFC01) # configure upper chip select SetExRegWord(UCSMSKL, 0xFC01) # configure upper chip select
/* /*
* SRAM chip select: 16 bit bus size,starting 16Mb, size 512k, * SRAM chip select: 16 bit bus size,starting 16Mb, size 512k,
* 4 waits * 4 waits
*/ */
#ifdef UT_I386EX #ifdef UT_I386EX
SYM(SetCS1): SYM(SetCS1):
@@ -411,7 +411,7 @@ SYM(SetCS2):
/* /*
* Real-time clock: 8 bit bus size, starting@16Mb+512K, size 32k * Real-time clock: 8 bit bus size, starting@16Mb+512K, size 32k
* 4 waits * 4 waits
*/ */
SYM(SetCS3): SYM(SetCS3):
SetExRegWord(CS3ADL, 0x0504) SetExRegWord(CS3ADL, 0x0504)
@@ -427,25 +427,25 @@ SYM(SetCS3):
mov cr0, eax mov cr0, eax
orw $0x1, ax orw $0x1, ax
mov eax, cr0 mov eax, cr0
/************************** /**************************
* Flush prefetch queue, * Flush prefetch queue,
* and load CS selector * and load CS selector
*********************/ *********************/
ljmpl $ GDT_CODE_PTR , $ SYM(_load_segment_registers) # sets the code selector ljmpl $ GDT_CODE_PTR , $ SYM(_load_segment_registers) # sets the code selector
/* /*
* Load the segment registers * Load the segment registers
*/ */
SYM(_load_segment_registers): SYM(_load_segment_registers):
.code32 .code32
pLOAD_SEGMENT( GDT_DATA_PTR, fs) pLOAD_SEGMENT( GDT_DATA_PTR, fs)
pLOAD_SEGMENT( GDT_DATA_PTR, gs) pLOAD_SEGMENT( GDT_DATA_PTR, gs)
pLOAD_SEGMENT( GDT_DATA_PTR, ss) pLOAD_SEGMENT( GDT_DATA_PTR, ss)
pLOAD_SEGMENT( GDT_DATA_PTR, ds) pLOAD_SEGMENT( GDT_DATA_PTR, ds)
pLOAD_SEGMENT( GDT_DATA_PTR, es) pLOAD_SEGMENT( GDT_DATA_PTR, es)
/* /*
* Set up the stack * Set up the stack
*/ */
@@ -481,7 +481,7 @@ SYM (zero_bss):
pushl $0 # argc pushl $0 # argc
movw $0xFFFB, SYM(i8259s_cache) # ICU mask values reflect movw $0xFFFB, SYM(i8259s_cache) # ICU mask values reflect
# initial ICU state # initial ICU state
call SYM(boot_card) call SYM(boot_card)
addl $12,esp addl $12,esp

View File

@@ -13,10 +13,10 @@
* *
* Ported to the i386ex and submitted by: * Ported to the i386ex and submitted by:
* *
* Erik Ivanenko * Erik Ivanenko
* University of Toronto * University of Toronto
* erik.ivanenko@utoronto.ca * erik.ivanenko@utoronto.ca
* *
* $Id$ * $Id$
*/ */
@@ -46,7 +46,7 @@ extern uint32_t rdb_start;
/* /*
* Use the shared implementations of the following routines * Use the shared implementations of the following routines
*/ */
void bsp_postdriver_hook(void); void bsp_postdriver_hook(void);
void bsp_libc_init( void *, uint32_t, int ); void bsp_libc_init( void *, uint32_t, int );
@@ -63,7 +63,7 @@ void bsp_libc_init( void *, uint32_t, int );
* not yet initialized. * not yet initialized.
* *
*/ */
void bsp_pretasking_hook(void) void bsp_pretasking_hook(void)
{ {
extern int heap_bottom; extern int heap_bottom;

View File

@@ -48,7 +48,7 @@ void TimerOn(const rtems_raw_irq_connect_data* used)
outport_byte ( TMRCON , 0xb0 ); /* select tmr2, stay in mode 0 */ outport_byte ( TMRCON , 0xb0 ); /* select tmr2, stay in mode 0 */
outport_byte ( TMR1 , 0xfa ); /* set to 250 usec interval */ outport_byte ( TMR1 , 0xfa ); /* set to 250 usec interval */
outport_byte ( TMR1 , 0x00 ); outport_byte ( TMR1 , 0x00 );
outport_byte ( TMRCON , 0x64 ); /* change to mode 2 ( starts timer ) */ outport_byte ( TMRCON , 0x64 ); /* change to mode 2 ( starts timer ) */
/* interrupts ARE enabled */ /* interrupts ARE enabled */
/* outport_byte( IERA, 0x41 ); enable interrupt */ /* outport_byte( IERA, 0x41 ); enable interrupt */
/* /*
@@ -116,7 +116,7 @@ int Read_timer()
/* outport_byte( TBCR, 0x00 ); stop the timer -- not needed on intel */ /* outport_byte( TBCR, 0x00 ); stop the timer -- not needed on intel */
outport_byte ( TMRCON, 0x40 ); /* latch the count */ outport_byte ( TMRCON, 0x40 ); /* latch the count */
inport_byte ( TMR1, clicks ); /* read the count */ inport_byte ( TMR1, clicks ); /* read the count */
total = Ttimer_val + 250 - clicks; total = Ttimer_val + 250 - clicks;

View File

@@ -6,7 +6,7 @@
* e-mail: rdasilva@connecttel.com * e-mail: rdasilva@connecttel.com
* *
* MODULE DESCRIPTION: * MODULE DESCRIPTION:
* RTEMS driver for 3COM 3C509 Ethernet Card. * RTEMS driver for 3COM 3C509 Ethernet Card.
* The driver has been tested on PC with a single network card. * The driver has been tested on PC with a single network card.
* *
* *
@@ -54,10 +54,13 @@
* Saskatoon, Saskatchewan, CANADA * Saskatoon, Saskatchewan, CANADA
* eric@skatter.usask.ca * eric@skatter.usask.ca
******************************************************************************* *******************************************************************************
* *
* *
* MODIFICATION/HISTORY: * MODIFICATION/HISTORY:
* $Log$ * $Log$
* Revision 1.2 1999/12/13 21:21:31 joel
* Warning removal patch from Philip A. Prindeville <philipp@zembu.com>.
*
* Revision 1.1 1999/05/14 16:23:42 joel * Revision 1.1 1999/05/14 16:23:42 joel
* Added 3COM 3C509 driver from Rosimildo DaSilva <rdasilva@connecttel.com>. * Added 3COM 3C509 driver from Rosimildo DaSilva <rdasilva@connecttel.com>.
* *
@@ -140,7 +143,7 @@
* more powerful mechanism for detecting and dealing with multiple types * more powerful mechanism for detecting and dealing with multiple types
* of non-fatal conflict. -jkh XXX * of non-fatal conflict. -jkh XXX
*/ */
struct isa_device struct isa_device
{ {
int id_id; /* device id */ int id_id; /* device id */
int id_unit; /* unit number */ int id_unit; /* unit number */
@@ -149,7 +152,7 @@ struct isa_device
}; };
struct ep_board struct ep_board
{ {
int epb_addr; /* address of this board */ int epb_addr; /* address of this board */
char epb_used; /* was this entry already used for configuring ? */ char epb_used; /* was this entry already used for configuring ? */
@@ -163,7 +166,7 @@ struct ep_board
/* /*
* Ethernet software status per interface. * Ethernet software status per interface.
*/ */
struct ep_softc struct ep_softc
{ {
struct arpcom arpcom; /* Ethernet common part */ struct arpcom arpcom; /* Ethernet common part */
int ep_io_addr; /* i/o bus address */ int ep_io_addr; /* i/o bus address */
@@ -194,7 +197,7 @@ struct ep_softc
static volatile unsigned long overrun; static volatile unsigned long overrun;
static volatile unsigned long resend; static volatile unsigned long resend;
static struct ep_softc ep_softc[ NWDDRIVER ]; static struct ep_softc ep_softc[ NWDDRIVER ];
static struct isa_device isa_dev[ NWDDRIVER ] = static struct isa_device isa_dev[ NWDDRIVER ] =
{ {
{ 0, /* device id */ { 0, /* device id */
0, /* unit number */ 0, /* unit number */
@@ -230,7 +233,7 @@ extern void Wait_X_ms( unsigned int timeToWait ); /* timer.c ??? */
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: Writes a buffer of data to the I/O port. The data is sent to the * DESCRIPTION: Writes a buffer of data to the I/O port. The data is sent to the
* port as 32 bits units( 4 bytes ). * port as 32 bits units( 4 bytes ).
* *
@@ -239,7 +242,7 @@ extern void Wait_X_ms( unsigned int timeToWait ); /* timer.c ??? */
**********************************************************************************/ **********************************************************************************/
static __inline void outsl( unsigned short io_addr, unsigned char *out_data, int len ) static __inline void outsl( unsigned short io_addr, unsigned char *out_data, int len )
{ {
u_long *pl = ( u_long *)out_data; u_long *pl = ( u_long *)out_data;
while( len-- ) while( len-- )
{ {
outport_long( io_addr, *pl ); outport_long( io_addr, *pl );
@@ -248,7 +251,7 @@ static __inline void outsl( unsigned short io_addr, unsigned char *out_data, int
} }
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: Writes a buffer of data to the I/O port. The data is sent to the * DESCRIPTION: Writes a buffer of data to the I/O port. The data is sent to the
* port as 16 bits units( 2 bytes ). * port as 16 bits units( 2 bytes ).
* *
@@ -257,7 +260,7 @@ static __inline void outsl( unsigned short io_addr, unsigned char *out_data, int
**********************************************************************************/ **********************************************************************************/
static __inline void outsw( unsigned short io_addr, unsigned char *out_data, int len ) static __inline void outsw( unsigned short io_addr, unsigned char *out_data, int len )
{ {
u_short *ps = ( u_short *)out_data; u_short *ps = ( u_short *)out_data;
while( len-- ) while( len-- )
{ {
outport_word( io_addr, *ps ); outport_word( io_addr, *ps );
@@ -266,7 +269,7 @@ static __inline void outsw( unsigned short io_addr, unsigned char *out_data, int
} }
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: Writes a buffer of data to the I/O port. The data is sent to the * DESCRIPTION: Writes a buffer of data to the I/O port. The data is sent to the
* port as 8 bits units( 1 byte ). * port as 8 bits units( 1 byte ).
* *
@@ -284,7 +287,7 @@ static __inline void outsb( unsigned short io_addr, unsigned char *out_data, int
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: Read a buffer of data from an I/O port. The data is read as 16 bits * DESCRIPTION: Read a buffer of data from an I/O port. The data is read as 16 bits
* units or 2 bytes. * units or 2 bytes.
* *
@@ -293,7 +296,7 @@ static __inline void outsb( unsigned short io_addr, unsigned char *out_data, int
**********************************************************************************/ **********************************************************************************/
static __inline void insw( unsigned short io_addr, unsigned char *in_data, int len ) static __inline void insw( unsigned short io_addr, unsigned char *in_data, int len )
{ {
u_short *ps = ( u_short *)in_data; u_short *ps = ( u_short *)in_data;
while( len-- ) while( len-- )
{ {
inport_word( io_addr, *ps ); inport_word( io_addr, *ps );
@@ -302,7 +305,7 @@ static __inline void insw( unsigned short io_addr, unsigned char *in_data, int l
} }
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: Read a buffer of data from an I/O port. The data is read as 32 bits * DESCRIPTION: Read a buffer of data from an I/O port. The data is read as 32 bits
* units or 4 bytes. * units or 4 bytes.
* *
@@ -311,7 +314,7 @@ static __inline void insw( unsigned short io_addr, unsigned char *in_data, int l
**********************************************************************************/ **********************************************************************************/
static __inline void insl( unsigned short io_addr, unsigned char *in_data, int len ) static __inline void insl( unsigned short io_addr, unsigned char *in_data, int len )
{ {
u_long *pl = ( u_long *)in_data; u_long *pl = ( u_long *)in_data;
while( len-- ) while( len-- )
{ {
inport_long( io_addr, *pl ); inport_long( io_addr, *pl );
@@ -320,7 +323,7 @@ static __inline void insl( unsigned short io_addr, unsigned char *in_data, int l
} }
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: Read a buffer of data from an I/O port. The data is read as 8 bits * DESCRIPTION: Read a buffer of data from an I/O port. The data is read as 8 bits
* units or 1 bytes. * units or 1 bytes.
* *
@@ -337,7 +340,7 @@ static __inline void insb( unsigned short io_addr, unsigned char *in_data, int l
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: Writes a word to the I/O port. * DESCRIPTION: Writes a word to the I/O port.
* *
* RETURNS: nothing. * RETURNS: nothing.
@@ -353,7 +356,7 @@ static __inline void outw( unsigned short io_addr, unsigned short out_data )
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: Routine to read a word as defined in FreeBSD. * DESCRIPTION: Routine to read a word as defined in FreeBSD.
* *
* RETURNS: nothing * RETURNS: nothing
@@ -367,7 +370,7 @@ static __inline unsigned short inw( unsigned short io_addr )
} }
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: Routine to output a word as defined in FreeBSD. * DESCRIPTION: Routine to output a word as defined in FreeBSD.
* *
* RETURNS: nothing. * RETURNS: nothing.
@@ -379,7 +382,7 @@ void __inline outb( unsigned short io_addr, unsigned char out_data )
} }
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: Routine to read a word as defined in FreeBSD. * DESCRIPTION: Routine to read a word as defined in FreeBSD.
* *
* RETURNS: byte read. * RETURNS: byte read.
@@ -394,7 +397,7 @@ static __inline unsigned char inb( unsigned short io_addr )
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: * DESCRIPTION:
* We get eeprom data from the id_port given an offset into the eeprom. * We get eeprom data from the id_port given an offset into the eeprom.
* Basically; after the ID_sequence is sent to all of the cards; they enter * Basically; after the ID_sequence is sent to all of the cards; they enter
@@ -422,7 +425,7 @@ static int get_eeprom_data( int id_port, int offset )
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: Waits until the EEPROM of the card is ready to be accessed. * DESCRIPTION: Waits until the EEPROM of the card is ready to be accessed.
* *
* RETURNS: 0 - not ready; 1 - ok * RETURNS: 0 - not ready; 1 - ok
@@ -434,7 +437,7 @@ static int eeprom_rdy( struct ep_softc *sc )
for (i = 0; is_eeprom_busy(BASE) && i < MAX_EEPROMBUSY; i++) for (i = 0; is_eeprom_busy(BASE) && i < MAX_EEPROMBUSY; i++)
continue; continue;
if (i >= MAX_EEPROMBUSY) if (i >= MAX_EEPROMBUSY)
{ {
printf("ep%d: eeprom failed to come ready.\n", sc->unit); printf("ep%d: eeprom failed to come ready.\n", sc->unit);
return (0); return (0);
@@ -443,9 +446,9 @@ static int eeprom_rdy( struct ep_softc *sc )
} }
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: * DESCRIPTION:
* get_e: gets a 16 bits word from the EEPROM. * get_e: gets a 16 bits word from the EEPROM.
* We must have set the window before call this routine. * We must have set the window before call this routine.
* *
* RETURNS: data from EEPROM * RETURNS: data from EEPROM
@@ -463,7 +466,7 @@ u_short get_e( struct ep_softc *sc, int offset )
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: * DESCRIPTION:
* Driver interrupt handler. This routine is called by the RTEMS kernel when this * Driver interrupt handler. This routine is called by the RTEMS kernel when this
* interrupt is raised. * interrupt is raised.
@@ -477,14 +480,14 @@ static rtems_isr ap_interrupt_handler( rtems_vector_number v )
/* de-activate any pending interrrupt, and sent and event to interrupt task /* de-activate any pending interrrupt, and sent and event to interrupt task
* to process all events required by this interrupt. * to process all events required by this interrupt.
*/ */
outw( BASE + EP_COMMAND, SET_INTR_MASK ); /* disable all Ints */ outw( BASE + EP_COMMAND, SET_INTR_MASK ); /* disable all Ints */
rtems_event_send( sc->rxDaemonTid, INTERRUPT_EVENT ); rtems_event_send( sc->rxDaemonTid, INTERRUPT_EVENT );
} }
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: * DESCRIPTION:
* *
* RETURNS: * RETURNS:
@@ -496,7 +499,7 @@ static void nopOn(const rtems_irq_connect_data* notUsed)
} }
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: * DESCRIPTION:
* *
* RETURNS: * RETURNS:
@@ -509,7 +512,7 @@ static int _3c509_IsOn(const rtems_irq_connect_data* irq)
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: * DESCRIPTION:
* Initializes the ethernet hardware. * Initializes the ethernet hardware.
* *
@@ -521,15 +524,15 @@ static void _3c509_initialize_hardware (struct ep_softc *sc)
rtems_status_code st; rtems_status_code st;
epinit( sc ); epinit( sc );
/* /*
* Set up interrupts * Set up interrupts
*/ */
sc->irqInfo.hdl = ( rtems_irq_hdl )ap_interrupt_handler; sc->irqInfo.hdl = ( rtems_irq_hdl )ap_interrupt_handler;
sc->irqInfo.on = nopOn; sc->irqInfo.on = nopOn;
sc->irqInfo.off = nopOn; sc->irqInfo.off = nopOn;
sc->irqInfo.isOn = _3c509_IsOn; sc->irqInfo.isOn = _3c509_IsOn;
printf ("3c509: IRQ with Kernel: %d\n", sc->irqInfo.name ); printf ("3c509: IRQ with Kernel: %d\n", sc->irqInfo.name );
st = BSP_install_rtems_irq_handler( &sc->irqInfo ); st = BSP_install_rtems_irq_handler( &sc->irqInfo );
if( !st ) if( !st )
@@ -539,7 +542,7 @@ static void _3c509_initialize_hardware (struct ep_softc *sc)
} }
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: Driver interrupt daemon. * DESCRIPTION: Driver interrupt daemon.
* *
* RETURNS: nothing. * RETURNS: nothing.
@@ -561,13 +564,13 @@ static void _3c509_rxDaemon (void *arg)
/* printk( "R+" ); */ /* printk( "R+" ); */
ep_intr( dp ); ep_intr( dp );
epstart( &dp->arpcom.ac_if ); epstart( &dp->arpcom.ac_if );
} }
printf ("3C509: RX Daemon is finishing.\n"); printf ("3C509: RX Daemon is finishing.\n");
} }
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: Driver transmit daemon * DESCRIPTION: Driver transmit daemon
* *
* RETURNS: * RETURNS:
@@ -578,7 +581,7 @@ static void _3c509_txDaemon (void *arg)
struct ep_softc *sc = (struct ep_softc *)&ep_softc[0]; struct ep_softc *sc = (struct ep_softc *)&ep_softc[0];
struct ifnet *ifp = &sc->arpcom.ac_if; struct ifnet *ifp = &sc->arpcom.ac_if;
rtems_event_set events; rtems_event_set events;
printf ("3C509: TX Daemon is starting.\n"); printf ("3C509: TX Daemon is starting.\n");
for( ;; ) for( ;; )
{ {
@@ -586,9 +589,9 @@ static void _3c509_txDaemon (void *arg)
* Wait for packet * Wait for packet
*/ */
/* printk( "T-\n" ); */ /* printk( "T-\n" ); */
rtems_bsdnet_event_receive( START_TRANSMIT_EVENT, rtems_bsdnet_event_receive( START_TRANSMIT_EVENT,
RTEMS_EVENT_ANY | RTEMS_WAIT, RTEMS_EVENT_ANY | RTEMS_WAIT,
RTEMS_NO_TIMEOUT, RTEMS_NO_TIMEOUT,
&events ); &events );
/* printk( "T+\n" ); */ /* printk( "T+\n" ); */
epstart( ifp ); epstart( ifp );
@@ -600,7 +603,7 @@ static void _3c509_txDaemon (void *arg)
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: Activates the trabsmitter task... * DESCRIPTION: Activates the trabsmitter task...
* *
* RETURNS: nothing. * RETURNS: nothing.
@@ -615,7 +618,7 @@ static void _3c509_start (struct ifnet *ifp)
} }
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: Initialize and start the device * DESCRIPTION: Initialize and start the device
* *
* RETURNS: * RETURNS:
@@ -628,11 +631,11 @@ static void _3c509_init (void *arg)
printf ("3C509: Initialization called.\n"); printf ("3C509: Initialization called.\n");
if (sc->txDaemonTid == 0) { if (sc->txDaemonTid == 0) {
/* /*
* Set up WD hardware * Set up WD hardware
*/ */
_3c509_initialize_hardware (sc); _3c509_initialize_hardware (sc);
printf ("3C509: starting network driver tasks..\n"); printf ("3C509: starting network driver tasks..\n");
/* /*
* Start driver tasks * Start driver tasks
@@ -648,7 +651,7 @@ static void _3c509_init (void *arg)
} }
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: Stop the device * DESCRIPTION: Stop the device
* *
* RETURNS: * RETURNS:
@@ -679,7 +682,7 @@ static void _3c509_stop (struct ep_softc *sc)
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: Show interface statistics * DESCRIPTION: Show interface statistics
* *
* RETURNS: nothing. * RETURNS: nothing.
@@ -697,10 +700,10 @@ static void _3c509_stats (struct ep_softc *sc)
} }
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: Driver ioctl handler * DESCRIPTION: Driver ioctl handler
* *
* RETURNS: * RETURNS:
* *
**********************************************************************************/ **********************************************************************************/
static int _3c509_ioctl (struct ifnet *ifp, int command, caddr_t data) static int _3c509_ioctl (struct ifnet *ifp, int command, caddr_t data)
@@ -738,7 +741,7 @@ static int _3c509_ioctl (struct ifnet *ifp, int command, caddr_t data)
case SIO_RTEMS_SHOW_STATS: case SIO_RTEMS_SHOW_STATS:
_3c509_stats( sc ); _3c509_stats( sc );
break; break;
/* /*
* FIXME: All sorts of multicast commands need to be added here! * FIXME: All sorts of multicast commands need to be added here!
*/ */
@@ -750,7 +753,7 @@ static int _3c509_ioctl (struct ifnet *ifp, int command, caddr_t data)
} }
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: * DESCRIPTION:
* Attaches this network driver to the system. This function is called by the network * Attaches this network driver to the system. This function is called by the network
* interface during the initialization of the system. * interface during the initialization of the system.
@@ -784,7 +787,7 @@ int rtems_3c509_driver_attach (struct rtems_bsdnet_ifconfig *config )
if (ifp->if_softc == NULL) if (ifp->if_softc == NULL)
break; break;
} }
if (i >= NWDDRIVER) if (i >= NWDDRIVER)
{ {
printf ("Too many 3C509 drivers.\n"); printf ("Too many 3C509 drivers.\n");
return 0; return 0;
@@ -793,11 +796,11 @@ int rtems_3c509_driver_attach (struct rtems_bsdnet_ifconfig *config )
/* /*
* Process options * Process options
*/ */
if( config->hardware_address ) if( config->hardware_address )
{ {
memcpy (sc->arpcom.ac_enaddr, config->hardware_address, ETHER_ADDR_LEN); memcpy (sc->arpcom.ac_enaddr, config->hardware_address, ETHER_ADDR_LEN);
} }
else else
{ {
/* set it to something ... */ /* set it to something ... */
memset (sc->arpcom.ac_enaddr, 0x08,ETHER_ADDR_LEN); memset (sc->arpcom.ac_enaddr, 0x08,ETHER_ADDR_LEN);
@@ -856,11 +859,11 @@ int rtems_3c509_driver_attach (struct rtems_bsdnet_ifconfig *config )
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: * DESCRIPTION:
* This function looks for a 3COM card 3c5x9 in an isa bus. If a board is found, it * This function looks for a 3COM card 3c5x9 in an isa bus. If a board is found, it
* returns a structure describing the caracteristics of the card. It returns zero when * returns a structure describing the caracteristics of the card. It returns zero when
* card can not be found. * card can not be found.
* *
* RETURNS: 0 - fail - could not find a card... * RETURNS: 0 - fail - could not find a card...
* <> description of the card. * <> description of the card.
@@ -871,7 +874,7 @@ static struct ep_board *ep_look_for_board_at( struct isa_device *is )
int data, i, j, id_port = ELINK_ID_PORT; int data, i, j, id_port = ELINK_ID_PORT;
int count = 0; int count = 0;
if(ep_current_tag == (EP_LAST_TAG + 1) ) if(ep_current_tag == (EP_LAST_TAG + 1) )
{ {
/* Come here just one time */ /* Come here just one time */
ep_current_tag--; ep_current_tag--;
@@ -883,7 +886,7 @@ static struct ep_board *ep_look_for_board_at( struct isa_device *is )
elink_idseq(0xCF); elink_idseq(0xCF);
elink_reset(); elink_reset();
Wait_X_ms( 10 ); /* RPS: assuming delay in miliseconds */ Wait_X_ms( 10 ); /* RPS: assuming delay in miliseconds */
for (i = 0; i < EP_MAX_BOARDS; i++) for (i = 0; i < EP_MAX_BOARDS; i++)
{ {
outb(id_port, 0); outb(id_port, 0);
outb(id_port, 0); outb(id_port, 0);
@@ -923,7 +926,7 @@ static struct ep_board *ep_look_for_board_at( struct isa_device *is )
ep_current_tag--; ep_current_tag--;
} }
ep_board[ep_boards].epb_addr = 0; ep_board[ep_boards].epb_addr = 0;
if( count ) if( count )
{ {
printf("%d 3C5x9 board(s) on ISA found at", count); printf("%d 3C5x9 board(s) on ISA found at", count);
for (j = 0; ep_board[j].epb_addr; j++) for (j = 0; ep_board[j].epb_addr; j++)
@@ -943,7 +946,7 @@ static struct ep_board *ep_look_for_board_at( struct isa_device *is )
* *
*/ */
if (IS_BASE == -1) if (IS_BASE == -1)
{ /* port? */ { /* port? */
for (i = 0; ep_board[i].epb_addr && ep_board[i].epb_used; i++) ; for (i = 0; ep_board[i].epb_addr && ep_board[i].epb_used; i++) ;
if (ep_board[i].epb_addr == 0) if (ep_board[i].epb_addr == 0)
@@ -952,15 +955,15 @@ static struct ep_board *ep_look_for_board_at( struct isa_device *is )
IS_BASE = ep_board[i].epb_addr; IS_BASE = ep_board[i].epb_addr;
ep_board[i].epb_used = 1; ep_board[i].epb_used = 1;
return &ep_board[ i ]; return &ep_board[ i ];
} }
else else
{ {
for (i = 0; ep_board[i].epb_addr && ep_board[i].epb_addr != IS_BASE; i++ ) ; for (i = 0; ep_board[i].epb_addr && ep_board[i].epb_addr != IS_BASE; i++ ) ;
if (ep_board[i].epb_used || ep_board[i].epb_addr != IS_BASE) if (ep_board[i].epb_used || ep_board[i].epb_addr != IS_BASE)
return 0; return 0;
if (inw(IS_BASE + EP_W0_EEPROM_COMMAND) & EEPROM_TST_MODE) if (inw(IS_BASE + EP_W0_EEPROM_COMMAND) & EEPROM_TST_MODE)
{ {
printf("ep%d: 3c5x9 at 0x%x in PnP mode. Disable PnP mode!\n", printf("ep%d: 3c5x9 at 0x%x in PnP mode. Disable PnP mode!\n",
is->id_unit, IS_BASE ); is->id_unit, IS_BASE );
} }
ep_board[i].epb_used = 1; ep_board[i].epb_used = 1;
@@ -971,7 +974,7 @@ static struct ep_board *ep_look_for_board_at( struct isa_device *is )
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: * DESCRIPTION:
* This routine checks if there card installed on the machine. * This routine checks if there card installed on the machine.
* *
@@ -989,7 +992,7 @@ static int ep_isa_probe( struct isa_device *is )
if( (epb = ep_look_for_board_at(is)) == 0 ) if( (epb = ep_look_for_board_at(is)) == 0 )
return (0); return (0);
sc = &ep_softc[ 0 ]; sc = &ep_softc[ 0 ];
sc->ep_io_addr = epb->epb_addr; sc->ep_io_addr = epb->epb_addr;
sc->epb = epb; sc->epb = epb;
@@ -1001,10 +1004,10 @@ static int ep_isa_probe( struct isa_device *is )
GO_WINDOW(0); GO_WINDOW(0);
k = sc->epb->prod_id; k = sc->epb->prod_id;
#ifdef PC98 #ifdef PC98
if ((k & 0xf0f0) != (PROD_ID & 0xf0f0)) if ((k & 0xf0f0) != (PROD_ID & 0xf0f0))
{ {
#else #else
if ((k & 0xf0ff) != (PROD_ID & 0xf0ff)) if ((k & 0xf0ff) != (PROD_ID & 0xf0ff))
{ {
#endif #endif
printf("ep_isa_probe: ignoring model %04x\n", k ); printf("ep_isa_probe: ignoring model %04x\n", k );
@@ -1024,7 +1027,7 @@ static int ep_isa_probe( struct isa_device *is )
* *
*/ */
if (is->id_irq == 0) if (is->id_irq == 0)
{ /* irq? */ { /* irq? */
is->id_irq = ( k == 2 ) ? 9 : k; is->id_irq = ( k == 2 ) ? 9 : k;
} }
@@ -1039,9 +1042,9 @@ static int ep_isa_probe( struct isa_device *is )
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: * DESCRIPTION:
* This routine attaches this network driver and the network interface routines. * This routine attaches this network driver and the network interface routines.
* *
* RETURNS: 0 - failed to attach * RETURNS: 0 - failed to attach
* 1 - success * 1 - success
@@ -1055,15 +1058,15 @@ static int ep_isa_attach( struct isa_device *is )
sc->ep_connectors = 0; sc->ep_connectors = 0;
config = inw( IS_BASE + EP_W0_CONFIG_CTRL ); config = inw( IS_BASE + EP_W0_CONFIG_CTRL );
if (config & IS_AUI) if (config & IS_AUI)
{ {
sc->ep_connectors |= AUI; sc->ep_connectors |= AUI;
} }
if (config & IS_BNC) if (config & IS_BNC)
{ {
sc->ep_connectors |= BNC; sc->ep_connectors |= BNC;
} }
if (config & IS_UTP) if (config & IS_UTP)
{ {
sc->ep_connectors |= UTP; sc->ep_connectors |= UTP;
} }
@@ -1082,7 +1085,7 @@ static int ep_isa_attach( struct isa_device *is )
GO_WINDOW( 0 ); GO_WINDOW( 0 );
SET_IRQ( BASE, irq ); SET_IRQ( BASE, irq );
printf( "3C509: I/O=0x%x, IRQ=%d, CONNECTOR=%s, ", printf( "3C509: I/O=0x%x, IRQ=%d, CONNECTOR=%s, ",
sc->ep_io_addr, sc->irqInfo.name,ep_conn_type[ sc->ep_connector ] ); sc->ep_io_addr, sc->irqInfo.name,ep_conn_type[ sc->ep_connector ] );
ep_attach( sc ); ep_attach( sc );
@@ -1090,7 +1093,7 @@ static int ep_isa_attach( struct isa_device *is )
} }
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: Completes the initialization/attachement of the driver. * DESCRIPTION: Completes the initialization/attachement of the driver.
* *
* RETURNS: 0 - ok. * RETURNS: 0 - ok.
@@ -1100,21 +1103,21 @@ static int ep_attach( struct ep_softc *sc )
{ {
u_short *p; u_short *p;
int i; int i;
/* /*
* Setup the station address * Setup the station address
*/ */
p = (u_short *) &sc->arpcom.ac_enaddr; p = (u_short *) &sc->arpcom.ac_enaddr;
GO_WINDOW(2); GO_WINDOW(2);
printf("ADDRESS=" ); printf("ADDRESS=" );
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
{ {
p[i] = htons( sc->epb->eth_addr[i] ); p[i] = htons( sc->epb->eth_addr[i] );
outw( BASE + EP_W2_ADDR_0 + (i * 2), ntohs( p[i] ) ); outw( BASE + EP_W2_ADDR_0 + (i * 2), ntohs( p[i] ) );
printf("%04x ", (u_short)ntohs( p[i] ) ); printf("%04x ", (u_short)ntohs( p[i] ) );
} }
printf("\n" ); printf("\n" );
sc->rx_no_first = sc->rx_no_mbuf = sc->rx_no_first = sc->rx_no_mbuf =
sc->rx_bpf_disc = sc->rx_overrunf = sc->rx_overrunl = sc->rx_bpf_disc = sc->rx_overrunf = sc->rx_overrunl =
sc->tx_underrun = 0; sc->tx_underrun = 0;
@@ -1126,7 +1129,7 @@ static int ep_attach( struct ep_softc *sc )
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: * DESCRIPTION:
* Initializes the card. * Initializes the card.
* The order in here seems important. Otherwise we may not receive interrupts. ?! * The order in here seems important. Otherwise we may not receive interrupts. ?!
@@ -1199,19 +1202,19 @@ static void epinit( struct ep_softc *sc )
*/ */
/* Set the xcvr. */ /* Set the xcvr. */
if (ifp->if_flags & IFF_LINK0 && sc->ep_connectors & AUI) if (ifp->if_flags & IFF_LINK0 && sc->ep_connectors & AUI)
{ {
i = ACF_CONNECTOR_AUI; i = ACF_CONNECTOR_AUI;
} }
else if (ifp->if_flags & IFF_LINK1 && sc->ep_connectors & BNC) else if (ifp->if_flags & IFF_LINK1 && sc->ep_connectors & BNC)
{ {
i = ACF_CONNECTOR_BNC; i = ACF_CONNECTOR_BNC;
} }
else if (ifp->if_flags & IFF_LINK2 && sc->ep_connectors & UTP) else if (ifp->if_flags & IFF_LINK2 && sc->ep_connectors & UTP)
{ {
i = ACF_CONNECTOR_UTP; i = ACF_CONNECTOR_UTP;
} }
else else
{ {
i = sc->ep_connector; i = sc->ep_connector;
} }
@@ -1219,10 +1222,10 @@ static void epinit( struct ep_softc *sc )
j = inw(BASE + EP_W0_ADDRESS_CFG) & 0x3fff; j = inw(BASE + EP_W0_ADDRESS_CFG) & 0x3fff;
outw(BASE + EP_W0_ADDRESS_CFG, j | (i << ACF_CONNECTOR_BITS)); outw(BASE + EP_W0_ADDRESS_CFG, j | (i << ACF_CONNECTOR_BITS));
switch(i) switch(i)
{ {
case ACF_CONNECTOR_UTP: case ACF_CONNECTOR_UTP:
if (sc->ep_connectors & UTP) if (sc->ep_connectors & UTP)
{ {
GO_WINDOW(4); GO_WINDOW(4);
outw(BASE + EP_W4_MEDIA_TYPE, ENABLE_UTP); outw(BASE + EP_W4_MEDIA_TYPE, ENABLE_UTP);
@@ -1230,7 +1233,7 @@ static void epinit( struct ep_softc *sc )
break; break;
case ACF_CONNECTOR_BNC: case ACF_CONNECTOR_BNC:
if (sc->ep_connectors & BNC) if (sc->ep_connectors & BNC)
{ {
outw(BASE + EP_COMMAND, START_TRANSCEIVER); outw(BASE + EP_COMMAND, START_TRANSCEIVER);
Wait_X_ms( 1 ); Wait_X_ms( 1 );
@@ -1258,7 +1261,7 @@ static void epinit( struct ep_softc *sc )
sc->tx_underrun = 0; sc->tx_underrun = 0;
ep_fset(F_RX_FIRST); ep_fset(F_RX_FIRST);
if( sc->top ) if( sc->top )
{ {
m_freem( sc->top ); m_freem( sc->top );
sc->top = sc->mcur = 0; sc->top = sc->mcur = 0;
@@ -1279,7 +1282,7 @@ static void epinit( struct ep_softc *sc )
static const char padmap[] = {0, 3, 2, 1}; static const char padmap[] = {0, 3, 2, 1};
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: Routine to transmit frames to the card. * DESCRIPTION: Routine to transmit frames to the card.
* *
* RETURNS: nothing. * RETURNS: nothing.
@@ -1293,14 +1296,14 @@ static void epstart( struct ifnet *ifp )
struct mbuf *top; struct mbuf *top;
int pad; int pad;
while( inw(BASE + EP_STATUS) & S_COMMAND_IN_PROGRESS ) while( inw(BASE + EP_STATUS) & S_COMMAND_IN_PROGRESS )
; ;
startagain: startagain:
/* printk( "S-" ); */ /* printk( "S-" ); */
/* Sneak a peek at the next packet */ /* Sneak a peek at the next packet */
m = ifp->if_snd.ifq_head; m = ifp->if_snd.ifq_head;
if (m == 0) if (m == 0)
{ {
ifp->if_flags &= ~IFF_OACTIVE; ifp->if_flags &= ~IFF_OACTIVE;
return; return;
@@ -1316,7 +1319,7 @@ startagain:
* but we drop packets that are too large. Perhaps we should truncate * but we drop packets that are too large. Perhaps we should truncate
* them instead? * them instead?
*/ */
if( len + pad > ETHER_MAX_LEN ) if( len + pad > ETHER_MAX_LEN )
{ {
/* packet is obviously too large: toss it */ /* packet is obviously too large: toss it */
++ifp->if_oerrors; ++ifp->if_oerrors;
@@ -1324,30 +1327,30 @@ startagain:
m_freem( m ); m_freem( m );
goto readcheck; goto readcheck;
} }
if (inw(BASE + EP_W1_FREE_TX) < len + pad + 4) if (inw(BASE + EP_W1_FREE_TX) < len + pad + 4)
{ {
/* no room in FIFO */ /* no room in FIFO */
outw(BASE + EP_COMMAND, SET_TX_AVAIL_THRESH | (len + pad + 4)); outw(BASE + EP_COMMAND, SET_TX_AVAIL_THRESH | (len + pad + 4));
/* make sure */ /* make sure */
if (inw(BASE + EP_W1_FREE_TX) < len + pad + 4) if (inw(BASE + EP_W1_FREE_TX) < len + pad + 4)
{ {
ifp->if_flags |= IFF_OACTIVE; ifp->if_flags |= IFF_OACTIVE;
return; return;
} }
} }
IF_DEQUEUE( &ifp->if_snd, m ); IF_DEQUEUE( &ifp->if_snd, m );
outw(BASE + EP_W1_TX_PIO_WR_1, len); outw(BASE + EP_W1_TX_PIO_WR_1, len);
outw(BASE + EP_W1_TX_PIO_WR_1, 0x0); /* Second dword meaningless */ outw(BASE + EP_W1_TX_PIO_WR_1, 0x0); /* Second dword meaningless */
for (top = m; m != 0; m = m->m_next) for (top = m; m != 0; m = m->m_next)
{ {
if( ep_ftst(F_ACCESS_32_BITS ) ) if( ep_ftst(F_ACCESS_32_BITS ) )
{ {
outsl( BASE + EP_W1_TX_PIO_WR_1, mtod(m, caddr_t), m->m_len / 4 ); outsl( BASE + EP_W1_TX_PIO_WR_1, mtod(m, caddr_t), m->m_len / 4 );
if( m->m_len & 3 ) if( m->m_len & 3 )
outsb(BASE + EP_W1_TX_PIO_WR_1, mtod(m, caddr_t) + (m->m_len & (~3)), m->m_len & 3 ); outsb(BASE + EP_W1_TX_PIO_WR_1, mtod(m, caddr_t) + (m->m_len & (~3)), m->m_len & 3 );
} }
else else
{ {
outsw( BASE + EP_W1_TX_PIO_WR_1, mtod(m, caddr_t), m->m_len / 2 ); outsw( BASE + EP_W1_TX_PIO_WR_1, mtod(m, caddr_t), m->m_len / 2 );
if( m->m_len & 1 ) if( m->m_len & 1 )
@@ -1368,13 +1371,13 @@ startagain:
* fifo. * fifo.
*/ */
readcheck: readcheck:
if( inw(BASE + EP_W1_RX_STATUS) & RX_BYTES_MASK ) if( inw(BASE + EP_W1_RX_STATUS) & RX_BYTES_MASK )
{ {
/* /*
* we check if we have packets left, in that case we prepare to come * we check if we have packets left, in that case we prepare to come
* back later * back later
*/ */
if( ifp->if_snd.ifq_head ) if( ifp->if_snd.ifq_head )
{ {
outw(BASE + EP_COMMAND, SET_TX_AVAIL_THRESH | 8); outw(BASE + EP_COMMAND, SET_TX_AVAIL_THRESH | 8);
} }
@@ -1386,7 +1389,7 @@ readcheck:
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: Routine to read frames from the card. * DESCRIPTION: Routine to read frames from the card.
* *
* RETURNS: nothing. * RETURNS: nothing.
@@ -1407,10 +1410,10 @@ static void epread( register struct ep_softc *sc )
read_again: read_again:
if (status & ERR_RX) if (status & ERR_RX)
{ {
++ifp->if_ierrors; ++ifp->if_ierrors;
if( status & ERR_RX_OVERRUN ) if( status & ERR_RX_OVERRUN )
{ {
/* /*
* we can think the rx latency is actually greather than we * we can think the rx latency is actually greather than we
@@ -1426,7 +1429,7 @@ read_again:
} }
rx_fifo = rx_fifo2 = status & RX_BYTES_MASK; rx_fifo = rx_fifo2 = status & RX_BYTES_MASK;
if( ep_ftst( F_RX_FIRST ) ) if( ep_ftst( F_RX_FIRST ) )
{ {
MGETHDR( m, M_DONTWAIT, MT_DATA ); MGETHDR( m, M_DONTWAIT, MT_DATA );
if( !m ) if( !m )
@@ -1443,8 +1446,8 @@ read_again:
top->m_len = sizeof(struct ether_header); top->m_len = sizeof(struct ether_header);
rx_fifo -= sizeof(struct ether_header); rx_fifo -= sizeof(struct ether_header);
sc->cur_len = rx_fifo2; sc->cur_len = rx_fifo2;
} }
else else
{ {
/* come here if we didn't have a complete packet last time */ /* come here if we didn't have a complete packet last time */
top = sc->top; top = sc->top;
@@ -1453,10 +1456,10 @@ read_again:
} }
/* Reads what is left in the RX FIFO */ /* Reads what is left in the RX FIFO */
while (rx_fifo > 0) while (rx_fifo > 0)
{ {
lenthisone = min( rx_fifo, M_TRAILINGSPACE(m) ); lenthisone = min( rx_fifo, M_TRAILINGSPACE(m) );
if( lenthisone == 0 ) if( lenthisone == 0 )
{ /* no room in this one */ { /* no room in this one */
mcur = m; mcur = m;
MGET(m, M_WAIT, MT_DATA); MGET(m, M_WAIT, MT_DATA);
@@ -1468,15 +1471,15 @@ read_again:
mcur->m_next = m; mcur->m_next = m;
lenthisone = min(rx_fifo, M_TRAILINGSPACE(m)); lenthisone = min(rx_fifo, M_TRAILINGSPACE(m));
} }
if( ep_ftst( F_ACCESS_32_BITS ) ) if( ep_ftst( F_ACCESS_32_BITS ) )
{ /* default for EISA configured cards*/ { /* default for EISA configured cards*/
insl( BASE + EP_W1_RX_PIO_RD_1, mtod(m, caddr_t) + m->m_len, lenthisone / 4); insl( BASE + EP_W1_RX_PIO_RD_1, mtod(m, caddr_t) + m->m_len, lenthisone / 4);
m->m_len += (lenthisone & ~3); m->m_len += (lenthisone & ~3);
if (lenthisone & 3) if (lenthisone & 3)
insb(BASE + EP_W1_RX_PIO_RD_1, mtod(m, caddr_t) + m->m_len, lenthisone & 3); insb(BASE + EP_W1_RX_PIO_RD_1, mtod(m, caddr_t) + m->m_len, lenthisone & 3);
m->m_len += (lenthisone & 3); m->m_len += (lenthisone & 3);
} }
else else
{ {
insw(BASE + EP_W1_RX_PIO_RD_1, mtod(m, caddr_t) + m->m_len, lenthisone / 2); insw(BASE + EP_W1_RX_PIO_RD_1, mtod(m, caddr_t) + m->m_len, lenthisone / 2);
m->m_len += lenthisone; m->m_len += lenthisone;
@@ -1486,12 +1489,12 @@ read_again:
rx_fifo -= lenthisone; rx_fifo -= lenthisone;
} }
if( status & ERR_RX_INCOMPLETE) if( status & ERR_RX_INCOMPLETE)
{ /* we haven't received the complete packet */ { /* we haven't received the complete packet */
sc->mcur = m; sc->mcur = m;
sc->rx_no_first++; /* to know how often we come here */ sc->rx_no_first++; /* to know how often we come here */
ep_frst( F_RX_FIRST ); ep_frst( F_RX_FIRST );
if( !((status = inw(BASE + EP_W1_RX_STATUS)) & ERR_RX_INCOMPLETE) ) if( !((status = inw(BASE + EP_W1_RX_STATUS)) & ERR_RX_INCOMPLETE) )
{ {
/* we see if by now, the packet has completly arrived */ /* we see if by now, the packet has completly arrived */
goto read_again; goto read_again;
@@ -1516,7 +1519,7 @@ read_again:
out: out:
outw(BASE + EP_COMMAND, RX_DISCARD_TOP_PACK); outw(BASE + EP_COMMAND, RX_DISCARD_TOP_PACK);
if (sc->top) if (sc->top)
{ {
m_freem(sc->top); m_freem(sc->top);
sc->top = 0; sc->top = 0;
@@ -1530,10 +1533,10 @@ out:
/********************************************************************************** /**********************************************************************************
* *
* DESCRIPTION: * DESCRIPTION:
* This routine handles interrupts. It is called from the "RX" task whenever * This routine handles interrupts. It is called from the "RX" task whenever
* the ISR post an event to the task. * the ISR post an event to the task.
* This is basically the "isr" from the FreeBSD driver. * This is basically the "isr" from the FreeBSD driver.
* *
* RETURNS: nothing. * RETURNS: nothing.
@@ -1548,17 +1551,17 @@ static void ep_intr( struct ep_softc *sc )
rescan: rescan:
/* printk( "I-" ); */ /* printk( "I-" ); */
while( ( status = inw(BASE + EP_STATUS)) & S_5_INTS ) while( ( status = inw(BASE + EP_STATUS)) & S_5_INTS )
{ {
/* first acknowledge all interrupt sources */ /* first acknowledge all interrupt sources */
outw( BASE + EP_COMMAND, ACK_INTR | ( status & S_MASK ) ); outw( BASE + EP_COMMAND, ACK_INTR | ( status & S_MASK ) );
if( status & ( S_RX_COMPLETE | S_RX_EARLY ) ) if( status & ( S_RX_COMPLETE | S_RX_EARLY ) )
{ {
epread( sc ); epread( sc );
continue; continue;
} }
if (status & S_TX_AVAIL) if (status & S_TX_AVAIL)
{ {
/* we need ACK */ /* we need ACK */
ifp->if_timer = 0; ifp->if_timer = 0;
@@ -1567,7 +1570,7 @@ rescan:
inw(BASE + EP_W1_FREE_TX); inw(BASE + EP_W1_FREE_TX);
epstart(ifp); epstart(ifp);
} }
if (status & S_CARD_FAILURE) if (status & S_CARD_FAILURE)
{ {
ifp->if_timer = 0; ifp->if_timer = 0;
printf("\nep%d:\n\tStatus: %x\n", sc->unit, status); printf("\nep%d:\n\tStatus: %x\n", sc->unit, status);
@@ -1584,7 +1587,7 @@ rescan:
epinit(sc); epinit(sc);
return; return;
} }
if (status & S_TX_COMPLETE) if (status & S_TX_COMPLETE)
{ {
ifp->if_timer = 0; ifp->if_timer = 0;
/* we need ACK. we do it at the end */ /* we need ACK. we do it at the end */
@@ -1592,18 +1595,18 @@ rescan:
* We need to read TX_STATUS until we get a 0 status in order to * We need to read TX_STATUS until we get a 0 status in order to
* turn off the interrupt flag. * turn off the interrupt flag.
*/ */
while ((status = inb(BASE + EP_W1_TX_STATUS)) & TXS_COMPLETE) while ((status = inb(BASE + EP_W1_TX_STATUS)) & TXS_COMPLETE)
{ {
if (status & TXS_SUCCES_INTR_REQ) if (status & TXS_SUCCES_INTR_REQ)
; ;
else if( status & (TXS_UNDERRUN | TXS_JABBER | TXS_MAX_COLLISION ) ) else if( status & (TXS_UNDERRUN | TXS_JABBER | TXS_MAX_COLLISION ) )
{ {
outw(BASE + EP_COMMAND, TX_RESET); outw(BASE + EP_COMMAND, TX_RESET);
if (status & TXS_UNDERRUN) if (status & TXS_UNDERRUN)
{ {
sc->tx_underrun++; sc->tx_underrun++;
} }
else else
{ {
if( status & TXS_JABBER ) if( status & TXS_JABBER )
; ;
@@ -1616,7 +1619,7 @@ rescan:
* To have a tx_avail_int but giving the chance to the * To have a tx_avail_int but giving the chance to the
* Reception * Reception
*/ */
if( ifp->if_snd.ifq_head ) if( ifp->if_snd.ifq_head )
{ {
outw(BASE + EP_COMMAND, SET_TX_AVAIL_THRESH | 8); outw(BASE + EP_COMMAND, SET_TX_AVAIL_THRESH | 8);
} }
@@ -1632,7 +1635,7 @@ rescan:
outw(BASE + EP_COMMAND, C_INTR_LATCH); /* ACK int Latch */ outw(BASE + EP_COMMAND, C_INTR_LATCH); /* ACK int Latch */
if( (status = inw(BASE + EP_STATUS) ) & S_5_INTS ) if( (status = inw(BASE + EP_STATUS) ) & S_5_INTS )
goto rescan; goto rescan;
/* re-enable Ints */ /* re-enable Ints */
outw( BASE + EP_COMMAND, SET_INTR_MASK | S_5_INTS ); outw( BASE + EP_COMMAND, SET_INTR_MASK | S_5_INTS );
/* printk( "I+" ); */ /* printk( "I+" ); */

View File

@@ -64,7 +64,7 @@ rtems_device_minor_number rtems_clock_minor;
| Description: Interrupt Service Routine for clock (0h) interruption. | Description: Interrupt Service Routine for clock (0h) interruption.
| Global Variables: Clock_driver_ticks, Clock_isrs. | Global Variables: Clock_driver_ticks, Clock_isrs.
| Arguments: vector - standard RTEMS argument - see documentation. | Arguments: vector - standard RTEMS argument - see documentation.
| Returns: standard return value - see documentation. | Returns: standard return value - see documentation.
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
static void clockIsr() static void clockIsr()
{ {
@@ -99,7 +99,7 @@ static void clockIsr()
| not really necessary, since there will be a reset at exit. | not really necessary, since there will be a reset at exit.
| Global Variables: None. | Global Variables: None.
| Arguments: None. | Arguments: None.
| Returns: Nothing. | Returns: Nothing.
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
void clockOff(const rtems_irq_connect_data* unused) void clockOff(const rtems_irq_connect_data* unused)
{ {
@@ -115,7 +115,7 @@ void clockOff(const rtems_irq_connect_data* unused)
| Description: Initialize and install clock interrupt handler. | Description: Initialize and install clock interrupt handler.
| Global Variables: None. | Global Variables: None.
| Arguments: None. | Arguments: None.
| Returns: Nothing. | Returns: Nothing.
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
static void clockOn(const rtems_irq_connect_data* unused) static void clockOn(const rtems_irq_connect_data* unused)
{ {
@@ -162,9 +162,9 @@ static void clockOn(const rtems_irq_connect_data* unused)
outport_byte(TIMER_MODE, TIMER_SEL0|TIMER_16BIT|TIMER_RATEGEN); outport_byte(TIMER_MODE, TIMER_SEL0|TIMER_16BIT|TIMER_RATEGEN);
outport_byte(TIMER_CNTR0, count >> 0 & 0xff); outport_byte(TIMER_CNTR0, count >> 0 & 0xff);
outport_byte(TIMER_CNTR0, count >> 8 & 0xff); outport_byte(TIMER_CNTR0, count >> 8 & 0xff);
} }
} }
int clockIsOn(const rtems_irq_connect_data* unused) int clockIsOn(const rtems_irq_connect_data* unused)
{ {
@@ -176,8 +176,8 @@ static rtems_irq_connect_data clockIrqData = {BSP_PERIODIC_TIMER,
clockOn, clockOn,
clockOff, clockOff,
clockIsOn}; clockIsOn};
/*-------------------------------------------------------------------------+ /*-------------------------------------------------------------------------+
| Clock device driver INITIALIZE entry point. | Clock device driver INITIALIZE entry point.
@@ -195,14 +195,14 @@ Clock_initialize(rtems_device_major_number major,
rtems_fatal_error_occurred(1); rtems_fatal_error_occurred(1);
} }
/* make major/minor avail to others such as shared memory driver */ /* make major/minor avail to others such as shared memory driver */
rtems_clock_major = major; rtems_clock_major = major;
rtems_clock_minor = minor; rtems_clock_minor = minor;
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} /* Clock_initialize */ } /* Clock_initialize */
/*-------------------------------------------------------------------------+ /*-------------------------------------------------------------------------+
| Console device driver CONTROL entry point | Console device driver CONTROL entry point
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
@@ -214,12 +214,12 @@ Clock_control(rtems_device_major_number major,
if (pargp != NULL) if (pargp != NULL)
{ {
rtems_libio_ioctl_args_t *args = pargp; rtems_libio_ioctl_args_t *args = pargp;
/*-------------------------------------------------------------------------+ /*-------------------------------------------------------------------------+
| This is hokey, but until we get a defined interface to do this, it will | This is hokey, but until we get a defined interface to do this, it will
| just be this simple... | just be this simple...
+-------------------------------------------------------------------------*/ +-------------------------------------------------------------------------*/
if (args->command == rtems_build_name('I', 'S', 'R', ' ')) if (args->command == rtems_build_name('I', 'S', 'R', ' '))
clockIsr(); clockIsr();
else if (args->command == rtems_build_name('N', 'E', 'W', ' ')) else if (args->command == rtems_build_name('N', 'E', 'W', ' '))

View File

@@ -79,9 +79,9 @@
| Description: Convert 2 digit number to its BCD representation. | Description: Convert 2 digit number to its BCD representation.
| Global Variables: None. | Global Variables: None.
| Arguments: i - Number to convert. | Arguments: i - Number to convert.
| Returns: BCD representation of number. | Returns: BCD representation of number.
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
static inline uint8_t static inline uint8_t
bcd(uint8_t i) bcd(uint8_t i)
{ {
return ((i / 16) * 10 + (i % 16)); return ((i / 16) * 10 + (i % 16));
@@ -99,9 +99,9 @@ bcd(uint8_t i)
| Description: Convert years to seconds (since 1970). | Description: Convert years to seconds (since 1970).
| Global Variables: None. | Global Variables: None.
| Arguments: y - year to convert (1970 <= y <= 2100). | Arguments: y - year to convert (1970 <= y <= 2100).
| Returns: number of seconds since 1970. | Returns: number of seconds since 1970.
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
static inline uint32_t static inline uint32_t
ytos(uint16_t y) ytos(uint16_t y)
{ /* v NUM LEAP YEARS v */ { /* v NUM LEAP YEARS v */
return ((y - 1970) * SECS_PER_REG_YEAR + (y - 1970 + 1) / 4 * SECS_PER_DAY); return ((y - 1970) * SECS_PER_REG_YEAR + (y - 1970 + 1) / 4 * SECS_PER_DAY);
@@ -113,9 +113,9 @@ ytos(uint16_t y)
| Description: Convert months to seconds since January. | Description: Convert months to seconds since January.
| Global Variables: None. | Global Variables: None.
| Arguments: m - month to convert, leap - is this a month of a leap year. | Arguments: m - month to convert, leap - is this a month of a leap year.
| Returns: number of seconds since January. | Returns: number of seconds since January.
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
static inline uint32_t static inline uint32_t
mtos(uint8_t m, rtems_boolean leap) mtos(uint8_t m, rtems_boolean leap)
{ {
static uint16_t daysMonth[] = { 0, 0, 31, 59, 90, 120, 151, 181, static uint16_t daysMonth[] = { 0, 0, 31, 59, 90, 120, 151, 181,
@@ -132,9 +132,9 @@ mtos(uint8_t m, rtems_boolean leap)
| Description: Perform action on RTC and return its result. | Description: Perform action on RTC and return its result.
| Global Variables: None. | Global Variables: None.
| Arguments: what - what to write to RTC port (what to do). | Arguments: what - what to write to RTC port (what to do).
| Returns: result received from RTC port after action performed. | Returns: result received from RTC port after action performed.
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
static inline uint8_t static inline uint8_t
rtcin(uint8_t what) rtcin(uint8_t what)
{ {
uint8_t r; uint8_t r;
@@ -153,7 +153,7 @@ rtcin(uint8_t what)
| Description: Initialize real-time clock (RTC). | Description: Initialize real-time clock (RTC).
| Global Variables: None. | Global Variables: None.
| Arguments: None. | Arguments: None.
| Returns: Nothing. | Returns: Nothing.
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
void void
init_rtc(void) init_rtc(void)
@@ -181,7 +181,7 @@ init_rtc(void)
| Description: Read present time from RTC and return it. | Description: Read present time from RTC and return it.
| Global Variables: None. | Global Variables: None.
| Arguments: tod - to return present time in 'rtems_time_of_day' format. | Arguments: tod - to return present time in 'rtems_time_of_day' format.
| Returns: number of seconds from 1970/01/01 corresponding to 'tod'. | Returns: number of seconds from 1970/01/01 corresponding to 'tod'.
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
long int long int
rtc_read(rtems_time_of_day *tod) rtc_read(rtems_time_of_day *tod)
@@ -201,7 +201,7 @@ rtc_read(rtems_time_of_day *tod)
sa = rtcin(RTC_STATUSA); sa = rtcin(RTC_STATUSA);
tod->year = bcd(rtcin(RTC_YEAR)) + 1900; /* year */ tod->year = bcd(rtcin(RTC_YEAR)) + 1900; /* year */
if (tod->year < 1970) tod->year += 100; if (tod->year < 1970) tod->year += 100;
tod->month = bcd(rtcin(RTC_MONTH)); /* month */ tod->month = bcd(rtcin(RTC_MONTH)); /* month */
tod->day = bcd(rtcin(RTC_DAY)); /* day */ tod->day = bcd(rtcin(RTC_DAY)); /* day */
(void) bcd(rtcin(RTC_WDAY)); /* weekday */ (void) bcd(rtcin(RTC_WDAY)); /* weekday */

View File

@@ -96,7 +96,7 @@ isr_on(const rtems_irq_connect_data *unused)
{ {
return; return;
} }
static void static void
isr_off(const rtems_irq_connect_data *unused) isr_off(const rtems_irq_connect_data *unused)
{ {
@@ -151,9 +151,9 @@ void __assert (const char *file, int line, const char *msg)
{ {
static char exit_msg[] = "EXECUTIVE SHUTDOWN! Any key to reboot..."; static char exit_msg[] = "EXECUTIVE SHUTDOWN! Any key to reboot...";
unsigned char ch; unsigned char ch;
/* /*
* Note we cannot call exit or printf from here, * Note we cannot call exit or printf from here,
* assert can fail inside ISR too * assert can fail inside ISR too
*/ */
@@ -218,13 +218,13 @@ console_initialize(rtems_device_major_number major,
{ {
/* Install keyboard interrupt handler */ /* Install keyboard interrupt handler */
status = BSP_install_rtems_irq_handler(&console_isr_data); status = BSP_install_rtems_irq_handler(&console_isr_data);
if (!status) if (!status)
{ {
printk("Error installing keyboard interrupt handler!\n"); printk("Error installing keyboard interrupt handler!\n");
rtems_fatal_error_occurred(status); rtems_fatal_error_occurred(status);
} }
status = rtems_io_register_name("/dev/console", major, 0); status = rtems_io_register_name("/dev/console", major, 0);
if (status != RTEMS_SUCCESSFUL) if (status != RTEMS_SUCCESSFUL)
{ {
@@ -240,14 +240,14 @@ console_initialize(rtems_device_major_number major,
*/ */
/* 9600-8-N-1 */ /* 9600-8-N-1 */
BSP_uart_init(BSPConsolePort, 9600, CHR_8_BITS, 0, 0, 0); BSP_uart_init(BSPConsolePort, 9600, CHR_8_BITS, 0, 0, 0);
/* Set interrupt handler */ /* Set interrupt handler */
if(BSPConsolePort == BSP_UART_COM1) if(BSPConsolePort == BSP_UART_COM1)
{ {
console_isr_data.name = BSP_UART_COM1_IRQ; console_isr_data.name = BSP_UART_COM1_IRQ;
console_isr_data.hdl = BSP_uart_termios_isr_com1; console_isr_data.hdl = BSP_uart_termios_isr_com1;
} }
else else
{ {
@@ -322,7 +322,7 @@ console_open(rtems_device_major_number major,
void *arg) void *arg)
{ {
rtems_status_code status; rtems_status_code status;
static rtems_termios_callbacks cb = static rtems_termios_callbacks cb =
{ {
NULL, /* firstOpen */ NULL, /* firstOpen */
console_last_close, /* lastClose */ console_last_close, /* lastClose */
@@ -338,7 +338,7 @@ console_open(rtems_device_major_number major,
{ {
/* Let's set the routines for termios to poll the /* Let's set the routines for termios to poll the
* Kbd queue for data * Kbd queue for data
*/ */
cb.pollRead = kbd_poll_read; cb.pollRead = kbd_poll_read;
cb.outputUsesInterrupts = 0; cb.outputUsesInterrupts = 0;
@@ -371,9 +371,9 @@ console_open(rtems_device_major_number major,
/* /*
* Pass data area info down to driver * Pass data area info down to driver
*/ */
BSP_uart_termios_set(BSPConsolePort, BSP_uart_termios_set(BSPConsolePort,
((rtems_libio_open_close_args_t *)arg)->iop->data1); ((rtems_libio_open_close_args_t *)arg)->iop->data1);
/* Enable interrupts on channel */ /* Enable interrupts on channel */
BSP_uart_intr_ctrl(BSPConsolePort, BSP_UART_INTR_CTRL_TERMIOS); BSP_uart_intr_ctrl(BSPConsolePort, BSP_UART_INTR_CTRL_TERMIOS);
@@ -391,7 +391,7 @@ console_close(rtems_device_major_number major,
return rtems_termios_close (arg); return rtems_termios_close (arg);
} /* console_close */ } /* console_close */
/*-------------------------------------------------------------------------+ /*-------------------------------------------------------------------------+
| Console device driver READ entry point. | Console device driver READ entry point.
+--------------------------------------------------------------------------+ +--------------------------------------------------------------------------+
@@ -404,7 +404,7 @@ console_read(rtems_device_major_number major,
{ {
return rtems_termios_read( arg ); return rtems_termios_read( arg );
} /* console_read */ } /* console_read */
/*-------------------------------------------------------------------------+ /*-------------------------------------------------------------------------+
| Console device driver WRITE entry point. | Console device driver WRITE entry point.
@@ -424,7 +424,7 @@ console_write(rtems_device_major_number major,
{ {
return rtems_termios_write (arg); return rtems_termios_write (arg);
} }
/* write data to VGA */ /* write data to VGA */
ibmpc_console_write( minor, buffer, maximum ); ibmpc_console_write( minor, buffer, maximum );
rw_args->bytes_moved = maximum; rw_args->bytes_moved = maximum;
@@ -433,18 +433,18 @@ console_write(rtems_device_major_number major,
extern int vt_ioctl( unsigned int cmd, unsigned long arg); extern int vt_ioctl( unsigned int cmd, unsigned long arg);
/* /*
* Handle ioctl request. * Handle ioctl request.
*/ */
rtems_device_driver rtems_device_driver
console_control(rtems_device_major_number major, console_control(rtems_device_major_number major,
rtems_device_minor_number minor, rtems_device_minor_number minor,
void * arg void * arg
) )
{ {
rtems_libio_ioctl_args_t *args = arg; rtems_libio_ioctl_args_t *args = arg;
switch (args->command) switch (args->command)
{ {
default: default:
if( vt_ioctl( args->command, (unsigned long)args->buffer ) != 0 ) if( vt_ioctl( args->command, (unsigned long)args->buffer ) != 0 )
@@ -469,45 +469,45 @@ conSetAttr(int minor, const struct termios *t)
{ {
unsigned long baud, databits, parity, stopbits; unsigned long baud, databits, parity, stopbits;
switch (t->c_cflag & CBAUD) switch (t->c_cflag & CBAUD)
{ {
case B50: case B50:
baud = 50; baud = 50;
break; break;
case B75: case B75:
baud = 75; baud = 75;
break; break;
case B110: case B110:
baud = 110; baud = 110;
break; break;
case B134: case B134:
baud = 134; baud = 134;
break; break;
case B150: case B150:
baud = 150; baud = 150;
break; break;
case B200: case B200:
baud = 200; baud = 200;
break; break;
case B300: case B300:
baud = 300; baud = 300;
break; break;
case B600: case B600:
baud = 600; baud = 600;
break; break;
case B1200: case B1200:
baud = 1200; baud = 1200;
break; break;
case B1800: case B1800:
baud = 1800; baud = 1800;
break; break;
case B2400: case B2400:
baud = 2400; baud = 2400;
break; break;
case B4800: case B4800:
baud = 4800; baud = 4800;
break; break;
case B9600: case B9600:
baud = 9600; baud = 9600;
break; break;
case B19200: case B19200:
@@ -516,7 +516,7 @@ conSetAttr(int minor, const struct termios *t)
case B38400: case B38400:
baud = 38400; baud = 38400;
break; break;
case B57600: case B57600:
baud = 57600; baud = 57600;
break; break;
case B115200: case B115200:
@@ -542,7 +542,7 @@ conSetAttr(int minor, const struct termios *t)
/* No parity */ /* No parity */
parity = 0; parity = 0;
} }
switch (t->c_cflag & CSIZE) { switch (t->c_cflag & CSIZE) {
case CS5: databits = CHR_5_BITS; break; case CS5: databits = CHR_5_BITS; break;
case CS6: databits = CHR_6_BITS; break; case CS6: databits = CHR_6_BITS; break;
@@ -569,7 +569,7 @@ conSetAttr(int minor, const struct termios *t)
* BSP initialization * BSP initialization
*/ */
BSP_output_char_function_type BSP_output_char = BSP_output_char_function_type BSP_output_char =
(BSP_output_char_function_type) _IBMPC_outch; (BSP_output_char_function_type) _IBMPC_outch;
BSP_polling_getchar_function_type BSP_poll_char = BSP_wait_polled_input; BSP_polling_getchar_function_type BSP_poll_char = BSP_wait_polled_input;

View File

@@ -154,34 +154,34 @@ unsigned int keymap_count = 7;
*/ */
char func_buf[] = { char func_buf[] = {
'\033', '[', '[', 'A', 0, '\033', '[', '[', 'A', 0,
'\033', '[', '[', 'B', 0, '\033', '[', '[', 'B', 0,
'\033', '[', '[', 'C', 0, '\033', '[', '[', 'C', 0,
'\033', '[', '[', 'D', 0, '\033', '[', '[', 'D', 0,
'\033', '[', '[', 'E', 0, '\033', '[', '[', 'E', 0,
'\033', '[', '1', '7', '~', 0, '\033', '[', '1', '7', '~', 0,
'\033', '[', '1', '8', '~', 0, '\033', '[', '1', '8', '~', 0,
'\033', '[', '1', '9', '~', 0, '\033', '[', '1', '9', '~', 0,
'\033', '[', '2', '0', '~', 0, '\033', '[', '2', '0', '~', 0,
'\033', '[', '2', '1', '~', 0, '\033', '[', '2', '1', '~', 0,
'\033', '[', '2', '3', '~', 0, '\033', '[', '2', '3', '~', 0,
'\033', '[', '2', '4', '~', 0, '\033', '[', '2', '4', '~', 0,
'\033', '[', '2', '5', '~', 0, '\033', '[', '2', '5', '~', 0,
'\033', '[', '2', '6', '~', 0, '\033', '[', '2', '6', '~', 0,
'\033', '[', '2', '8', '~', 0, '\033', '[', '2', '8', '~', 0,
'\033', '[', '2', '9', '~', 0, '\033', '[', '2', '9', '~', 0,
'\033', '[', '3', '1', '~', 0, '\033', '[', '3', '1', '~', 0,
'\033', '[', '3', '2', '~', 0, '\033', '[', '3', '2', '~', 0,
'\033', '[', '3', '3', '~', 0, '\033', '[', '3', '3', '~', 0,
'\033', '[', '3', '4', '~', 0, '\033', '[', '3', '4', '~', 0,
'\033', '[', '1', '~', 0, '\033', '[', '1', '~', 0,
'\033', '[', '2', '~', 0, '\033', '[', '2', '~', 0,
'\033', '[', '3', '~', 0, '\033', '[', '3', '~', 0,
'\033', '[', '4', '~', 0, '\033', '[', '4', '~', 0,
'\033', '[', '5', '~', 0, '\033', '[', '5', '~', 0,
'\033', '[', '6', '~', 0, '\033', '[', '6', '~', 0,
'\033', '[', 'M', 0, '\033', '[', 'M', 0,
'\033', '[', 'P', 0, '\033', '[', 'P', 0,
}; };
char *funcbufptr = func_buf; char *funcbufptr = func_buf;

View File

@@ -3,14 +3,47 @@
// $Header$ // $Header$
// //
// Copyright (c) 2000 - Rosimildo da Silva ( rdasilva@connecttel.com ) // Copyright (c) 2000 - Rosimildo da Silva ( rdasilva@connecttel.com )
// //
// MODULE DESCRIPTION: // MODULE DESCRIPTION:
// This module implements the micro FB driver for "Bare VGA". It uses the // This module implements the micro FB driver for "Bare VGA". It uses the
// routines for "bare hardware" that comes with MicroWindows. // routines for "bare hardware" that comes with MicroWindows.
// //
// MODIFICATION/HISTORY: // MODIFICATION/HISTORY:
// //
// $Log$ // $Log$
// Revision 1.1 2000/08/30 08:15:30 joel
// 2000-08-26 Rosimildo da Silva <rdasilva@connecttel.com>
//
// * Major rework of the "/dev/console" driver.
// * Added termios support for stdin ( keyboard ).
// * Added ioctls() to support modes similar to Linux( XLATE,
// RAW, MEDIUMRAW ).
// * Added Keyboard mapping and handling of the keyboard's leds.
// * Added Micro FrameBuffer driver ( "/dev/fb0" ) for bare VGA
// controller ( 16 colors ).
// * Added PS/2 and Serial mouse support for PC386 BSP.
// * console/defkeymap.c: New file.
// * console/fb_vga.c: New file.
// * console/fb_vga.h: New file.
// * console/i386kbd.h: New file.
// * console/kd.h: New file.
// * console/keyboard.c: New file.
// * console/keyboard.h: New file.
// * console/mouse_parser.c: New file.
// * console/mouse_parser.h: New file.
// * console/pc_keyb.c: New file.
// * console/ps2_drv.h: New file.
// * console/ps2_mouse.c: New file.
// * console/ps2_mouse.h: New file.
// * console/serial_mouse.c: New file.
// * console/serial_mouse.h: New file.
// * console/vgainit.c: New file.
// * console/vt.c: New file.
// * console/Makefile.am: Reflect new files.
// * console/console.c, console/inch.c, console/outch.c: Console
// functionality modifications.
// * startup/Makefile.am: Pick up tty_drv.c and gdb_glue.c
//
// //
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
*/ */
@@ -28,14 +61,14 @@
/* these routines are defined in the microwindows code. This /* these routines are defined in the microwindows code. This
driver is here more as an example of how to implement and driver is here more as an example of how to implement and
use the micro FB interface use the micro FB interface
*/ */
extern void ega_hwinit( void ); extern void ega_hwinit( void );
extern void ega_hwterm( void ); extern void ega_hwterm( void );
/* screen information for the VGA driver */ /* screen information for the VGA driver */
static struct fb_screeninfo fb_info = static struct fb_screeninfo fb_info =
{ {
640, 480, /* screen size x, y */ 640, 480, /* screen size x, y */
4, /* bits per pixel */ 4, /* bits per pixel */
@@ -109,7 +142,7 @@ fbvga_close(rtems_device_major_number major,
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
/* /*
* fbvga device driver READ entry point. * fbvga device driver READ entry point.
* Read characters from the PS/2 mouse. * Read characters from the PS/2 mouse.
@@ -124,7 +157,7 @@ fbvga_read( rtems_device_major_number major,
rw_args->bytes_moved = 0; rw_args->bytes_moved = 0;
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
/* /*
* fbvga device driver WRITE entry point. * fbvga device driver WRITE entry point.
@@ -187,15 +220,15 @@ static int set_palette( struct fb_cmap *cmap )
* IOCTL entry point -- This method is called to carry * IOCTL entry point -- This method is called to carry
* all services of this interface. * all services of this interface.
*/ */
rtems_device_driver rtems_device_driver
fbvga_control( rtems_device_major_number major, fbvga_control( rtems_device_major_number major,
rtems_device_minor_number minor, rtems_device_minor_number minor,
void * arg void * arg
) )
{ {
rtems_libio_ioctl_args_t *args = arg; rtems_libio_ioctl_args_t *args = arg;
printk( "FBVGA ioctl called, cmd=%x\n", args->command ); printk( "FBVGA ioctl called, cmd=%x\n", args->command );
switch( args->command ) switch( args->command )
{ {
case FB_SCREENINFO: case FB_SCREENINFO:
args->ioctl_return = get_screen_info( args->buffer ); args->ioctl_return = get_screen_info( args->buffer );
@@ -208,7 +241,7 @@ fbvga_control( rtems_device_major_number major,
break; break;
/* this function would execute one of the routines of the /* this function would execute one of the routines of the
* interface based on the operation requested * interface based on the operation requested
*/ */
case FB_EXEC_FUNCTION: case FB_EXEC_FUNCTION:
{ {

View File

@@ -5,8 +5,8 @@
* $Header$ * $Header$
* *
* Copyright (c) 2000 -- Rosimildo da Silva. * Copyright (c) 2000 -- Rosimildo da Silva.
* *
* MODULE DESCRIPTION: * MODULE DESCRIPTION:
* Prototype routines for the fbvga driver. * Prototype routines for the fbvga driver.
* *
* by: Rosimildo da Silva: * by: Rosimildo da Silva:
@@ -16,6 +16,9 @@
* MODIFICATION/HISTORY: * MODIFICATION/HISTORY:
* *
* $Log$ * $Log$
* Revision 1.2 2004/04/15 13:26:12 ralf
* Remove stray white spaces.
*
* Revision 1.1 2000/08/30 08:15:30 joel * Revision 1.1 2000/08/30 08:15:30 joel
* 2000-08-26 Rosimildo da Silva <rdasilva@connecttel.com> * 2000-08-26 Rosimildo da Silva <rdasilva@connecttel.com>
* *

View File

@@ -183,6 +183,6 @@ extern unsigned char aux_device_present;
but then the read function would need but then the read function would need
a lock etc - ick */ a lock etc - ick */
#define mark_bh(x) #define mark_bh(x)
#endif /* _I386_KEYBOARD_H */ #endif /* _I386_KEYBOARD_H */

View File

@@ -64,7 +64,7 @@ static char shift_map[] =
'*',0x80,' ',0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, '*',0x80,' ',0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,'7','8','9',0x80,'4','5','6',0x80, 0x80,0x80,0x80,0x80,'7','8','9',0x80,'4','5','6',0x80,
'1','2','3','0',177 '1','2','3','0',177
}; /* Keyboard scancode -> character map with SHIFT key modifier. */ }; /* Keyboard scancode -> character map with SHIFT key modifier. */
static unsigned short kbd_buffer[KBD_BUF_SIZE]; static unsigned short kbd_buffer[KBD_BUF_SIZE];
@@ -175,7 +175,7 @@ _IBMPC_scankey(char *outChar)
break; break;
case 0x53: case 0x53:
if (ctrl_pressed && alt_pressed) if (ctrl_pressed && alt_pressed)
rtemsReboot(); /* ctrl+alt+del -> reboot */ rtemsReboot(); /* ctrl+alt+del -> reboot */
break; break;
@@ -256,11 +256,11 @@ _IBMPC_inch(void)
return c; return c;
} /* _IBMPC_inch */ } /* _IBMPC_inch */
/* /*
* Routine that can be used before interrupt management is initialized. * Routine that can be used before interrupt management is initialized.
*/ */
char char
BSP_wait_polled_input(void) BSP_wait_polled_input(void)
{ {

View File

@@ -5,11 +5,44 @@
// MODULE DESCRIPTION: // MODULE DESCRIPTION:
// //
// This module was based on the Linux version kd.h // This module was based on the Linux version kd.h
// //
// by: Rosimildo da Silva: rdasilva@connecttel.com // by: Rosimildo da Silva: rdasilva@connecttel.com
// //
// MODIFICATION/HISTORY: // MODIFICATION/HISTORY:
// $Log$ // $Log$
// Revision 1.1 2000/08/30 08:15:30 joel
// 2000-08-26 Rosimildo da Silva <rdasilva@connecttel.com>
//
// * Major rework of the "/dev/console" driver.
// * Added termios support for stdin ( keyboard ).
// * Added ioctls() to support modes similar to Linux( XLATE,
// RAW, MEDIUMRAW ).
// * Added Keyboard mapping and handling of the keyboard's leds.
// * Added Micro FrameBuffer driver ( "/dev/fb0" ) for bare VGA
// controller ( 16 colors ).
// * Added PS/2 and Serial mouse support for PC386 BSP.
// * console/defkeymap.c: New file.
// * console/fb_vga.c: New file.
// * console/fb_vga.h: New file.
// * console/i386kbd.h: New file.
// * console/kd.h: New file.
// * console/keyboard.c: New file.
// * console/keyboard.h: New file.
// * console/mouse_parser.c: New file.
// * console/mouse_parser.h: New file.
// * console/pc_keyb.c: New file.
// * console/ps2_drv.h: New file.
// * console/ps2_mouse.c: New file.
// * console/ps2_mouse.h: New file.
// * console/serial_mouse.c: New file.
// * console/serial_mouse.h: New file.
// * console/vgainit.c: New file.
// * console/vt.c: New file.
// * console/Makefile.am: Reflect new files.
// * console/console.c, console/inch.c, console/outch.c: Console
// functionality modifications.
// * startup/Makefile.am: Pick up tty_drv.c and gdb_glue.c
//
// //
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
*/ */

View File

@@ -14,7 +14,7 @@
* `Sticky' modifier keys, 951006. * `Sticky' modifier keys, 951006.
* *
* 11-11-96: SAK should now work in the raw mode (Martin Mares) * 11-11-96: SAK should now work in the raw mode (Martin Mares)
* *
* Modified to provide 'generic' keyboard support by Hamish Macdonald * Modified to provide 'generic' keyboard support by Hamish Macdonald
* Merge with the m68k keyboard driver and split-off of the PC low-level * Merge with the m68k keyboard driver and split-off of the PC low-level
* parts by Geert Uytterhoeven, May 1997 * parts by Geert Uytterhoeven, May 1997
@@ -24,7 +24,7 @@
* ------------------------------------------------------------------- * -------------------------------------------------------------------
* End of Linux - Copyright notes... * End of Linux - Copyright notes...
* *
* Ported to RTEMS to provide the basic fuctionality to the console driver. * Ported to RTEMS to provide the basic fuctionality to the console driver.
* by: Rosimildo da Silva: rdasilva@connecttel.com * by: Rosimildo da Silva: rdasilva@connecttel.com
* *
*/ */
@@ -110,9 +110,9 @@ static unsigned char k_down[NR_SHIFT] = {0, };
static unsigned long key_down[256/BITS_PER_LONG] = { 0, }; static unsigned long key_down[256/BITS_PER_LONG] = { 0, };
static int dead_key_next = 0; static int dead_key_next = 0;
/* /*
* In order to retrieve the shift_state (for the mouse server), either * In order to retrieve the shift_state (for the mouse server), either
* the variable must be global, or a new procedure must be created to * the variable must be global, or a new procedure must be created to
* return the value. I chose the former way. * return the value. I chose the former way.
*/ */
int shift_state = 0; int shift_state = 0;

View File

@@ -5,11 +5,17 @@
// MODULE DESCRIPTION: // MODULE DESCRIPTION:
// //
// This module was based on the Linux version keyboard.h + kbd_kern.h // This module was based on the Linux version keyboard.h + kbd_kern.h
// //
// by: Rosimildo da Silva: rdasilva@connecttel.com // by: Rosimildo da Silva: rdasilva@connecttel.com
// //
// MODIFICATION/HISTORY: // MODIFICATION/HISTORY:
// $Log$ // $Log$
// Revision 1.2 2000/08/30 17:06:23 joel
// 2000-08-30 Joel Sherrill <joel@OARcorp.com>
//
// * console/keyboard.h: Changed numerous routines from extern inline
// to static inline.
//
// Revision 1.1 2000/08/30 08:15:30 joel // Revision 1.1 2000/08/30 08:15:30 joel
// 2000-08-26 Rosimildo da Silva <rdasilva@connecttel.com> // 2000-08-26 Rosimildo da Silva <rdasilva@connecttel.com>
// //

View File

@@ -5,7 +5,7 @@
* provided that this copyright notice remains intact. * provided that this copyright notice remains intact.
* *
* UNIX Serial Port Mouse Driver * UNIX Serial Port Mouse Driver
* *
* This driver opens a serial port directly, and interprets serial data. * This driver opens a serial port directly, and interprets serial data.
* Microsoft, PC, Logitech and PS/2 mice are supported. * Microsoft, PC, Logitech and PS/2 mice are supported.
* The PS/2 mouse is only supported if the OS runs the mouse * The PS/2 mouse is only supported if the OS runs the mouse
@@ -148,7 +148,7 @@ int MOU_Data( int ch, COORD *dx, COORD *dy, COORD *dz, BUTTON *bptr)
* When a complete state has been read, return the results, * When a complete state has been read, return the results,
* leaving further bytes in the buffer for later calls. * leaving further bytes in the buffer for later calls.
*/ */
if( (*parse)( ch ) ) if( (*parse)( ch ) )
{ {
*dx = xd; *dx = xd;
*dy = yd; *dy = yd;
@@ -268,7 +268,7 @@ static int ParsePS2(int byte)
switch (state) { switch (state) {
case IDLE: case IDLE:
if (byte & PS2_CTRL_BYTE) { if (byte & PS2_CTRL_BYTE) {
buttons = byte & buttons = byte &
(PS2_LEFT_BUTTON|PS2_RIGHT_BUTTON); (PS2_LEFT_BUTTON|PS2_RIGHT_BUTTON);
state = XSET; state = XSET;
} }
@@ -372,7 +372,7 @@ static void kbd_parser( void *ptr, unsigned short keycode, unsigned long mods )
m.m.kbd.modifiers = kbd->ledflagstate; m.m.kbd.modifiers = kbd->ledflagstate;
m.m.kbd.mode = kbd->kbdmode; m.m.kbd.mode = kbd->kbdmode;
/* printk( "kbd: msg: keycode=%X, mod=%X\n", keycode, mods ); */ /* printk( "kbd: msg: keycode=%X, mod=%X\n", keycode, mods ); */
rtems_message_queue_send( queue_id, ( void * )&m, rtems_message_queue_send( queue_id, ( void * )&m,
sizeof( struct MW_UID_MESSAGE ) ); sizeof( struct MW_UID_MESSAGE ) );
} }

View File

@@ -8,9 +8,9 @@ extern "C" {
#endif #endif
/* Use the same definitions as the user interface */ /* Use the same definitions as the user interface */
#define RBUTTON MV_BUTTON_RIGHT #define RBUTTON MV_BUTTON_RIGHT
#define MBUTTON MV_BUTTON_CENTER #define MBUTTON MV_BUTTON_CENTER
#define LBUTTON MV_BUTTON_LEFT #define LBUTTON MV_BUTTON_LEFT
typedef int COORD; /* device coordinates*/ typedef int COORD; /* device coordinates*/
typedef unsigned int BUTTON; /* mouse button mask*/ typedef unsigned int BUTTON; /* mouse button mask*/

View File

@@ -37,12 +37,12 @@ static unsigned char column;
static unsigned short attribute; static unsigned short attribute;
static unsigned int nLines; static unsigned int nLines;
static void static void
scroll(void) scroll(void)
{ {
int i, j; /* Counters */ int i, j; /* Counters */
unsigned short *pt_scroll, *pt_bitmap; /* Pointers on the bit-map */ unsigned short *pt_scroll, *pt_bitmap; /* Pointers on the bit-map */
pt_bitmap = bitMapBaseAddr; pt_bitmap = bitMapBaseAddr;
j = 0; j = 0;
pt_bitmap = pt_bitmap + j; pt_bitmap = pt_bitmap + j;
@@ -50,11 +50,11 @@ scroll(void)
for (i = j; i < (maxRow - 1) * maxCol; i++) { for (i = j; i < (maxRow - 1) * maxCol; i++) {
*pt_bitmap++ = *pt_scroll++; *pt_bitmap++ = *pt_scroll++;
} }
/* /*
* Blank characters are displayed on the last line. * Blank characters are displayed on the last line.
*/ */
for (i = 0; i < maxCol; i++) { for (i = 0; i < maxCol; i++) {
*pt_bitmap++ = (short) (' ' | attribute); *pt_bitmap++ = (short) (' ' | attribute);
} }
} }
@@ -63,9 +63,9 @@ static void
doCRNL(int cr, int nl) doCRNL(int cr, int nl)
{ {
if (nl) { if (nl) {
if (++row == maxRow) { if (++row == maxRow) {
scroll(); /* Scroll the screen now */ scroll(); /* Scroll the screen now */
row = maxRow - 1; row = maxRow - 1;
} }
nLines++; nLines++;
} }
@@ -102,7 +102,7 @@ gotorc(int r, int c)
#define BLANK ((char)0x7f) #define BLANK ((char)0x7f)
static void static void
videoPutChar(char car) videoPutChar(char car)
{ {
unsigned short *pt_bitmap = bitMapBaseAddr + row * maxCol + column; unsigned short *pt_bitmap = bitMapBaseAddr + row * maxCol + column;
@@ -123,7 +123,7 @@ videoPutChar(char car)
doCRNL(1,1); doCRNL(1,1);
return; return;
} }
while (i--) *pt_bitmap++ = ' ' | attribute; while (i--) *pt_bitmap++ = ' ' | attribute;
wr_cursor(row * maxCol + column, ioCrtBaseAddr); wr_cursor(row * maxCol + column, ioCrtBaseAddr);
return; return;
} }
@@ -134,7 +134,7 @@ videoPutChar(char car)
case 7: { /* Bell code must be inserted here */ case 7: { /* Bell code must be inserted here */
return; return;
} }
case '\r' : { case '\r' : {
doCRNL(1,0); doCRNL(1,0);
return; return;
} }
@@ -149,7 +149,7 @@ videoPutChar(char car)
return; return;
} }
} }
} }
/* trivial state machine to handle escape sequences: /* trivial state machine to handle escape sequences:
* *
@@ -161,9 +161,9 @@ videoPutChar(char car)
* ^\ \ \ \ * ^\ \ \ \
* KEY: | \other \ other \ other \ other * KEY: | \other \ other \ other \ other
* <------------------------------------- * <-------------------------------------
* *
* in state '-1', the DCABHKJ cases are handled * in state '-1', the DCABHKJ cases are handled
* *
* (cursor motion and screen clearing) * (cursor motion and screen clearing)
*/ */
@@ -262,7 +262,7 @@ clear_screen(void)
| Description: Higher level (console) interface to consPutc. | Description: Higher level (console) interface to consPutc.
| Global Variables: None. | Global Variables: None.
| Arguments: c - character to write to console. | Arguments: c - character to write to console.
| Returns: Nothing. | Returns: Nothing.
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
void void
_IBMPC_outch(char c) _IBMPC_outch(char c)
@@ -280,7 +280,7 @@ static int escaped = 0;
| Global Variables: bitMapBaseAddr, ioCrtBaseAddr, maxCol, maxRow, row | Global Variables: bitMapBaseAddr, ioCrtBaseAddr, maxCol, maxRow, row
| column, attribute, nLines; | column, attribute, nLines;
| Arguments: None. | Arguments: None.
| Returns: Nothing. | Returns: Nothing.
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
void void
_IBMPC_initVideo(void) _IBMPC_initVideo(void)
@@ -301,7 +301,7 @@ _IBMPC_initVideo(void)
attribute = ((BLACK << 4) | WHITE)<<8; attribute = ((BLACK << 4) | WHITE)<<8;
nLines = 0; nLines = 0;
clear_screen(); clear_screen();
#ifdef DEBUG_EARLY_STAGE #ifdef DEBUG_EARLY_STAGE
printk("bitMapBaseAddr = %X, display controller base IO = %X\n", printk("bitMapBaseAddr = %X, display controller base IO = %X\n",
(unsigned) bitMapBaseAddr, (unsigned) bitMapBaseAddr,
(unsigned) ioCrtBaseAddr); (unsigned) ioCrtBaseAddr);

View File

@@ -369,7 +369,7 @@ static unsigned char handle_kbd_event(void)
} }
status = kbd_read_status(); status = kbd_read_status();
if(!work--) if(!work--)
{ {
printk( "pc_keyb: controller jammed (0x%02X).\n", status); printk( "pc_keyb: controller jammed (0x%02X).\n", status);
@@ -378,10 +378,10 @@ static unsigned char handle_kbd_event(void)
return status; return status;
} }
/* /*
* the commands to set the leds for some reason, returns 0x14, 0x16 * the commands to set the leds for some reason, returns 0x14, 0x16
* and I am intepreting as an ACK, because the original code from * and I am intepreting as an ACK, because the original code from
* Linux was timeing out here... * Linux was timeing out here...
*/ */
acknowledge = 1; acknowledge = 1;
reply_expected = 0; reply_expected = 0;
@@ -595,7 +595,7 @@ static char * initialize_kbd(void)
kbd_wait_for_input(); kbd_wait_for_input();
} }
kbd_write_output_w(KBD_CMD_ENABLE); kbd_write_output_w(KBD_CMD_ENABLE);
if (kbd_wait_for_input() != KBD_REPLY_ACK) if (kbd_wait_for_input() != KBD_REPLY_ACK)
return "Enable keyboard: no ACK"; return "Enable keyboard: no ACK";

View File

@@ -5,7 +5,7 @@
* $Header$ * $Header$
* *
* Copyright (c) 1999 ConnectTel, Inc. All Rights Reserved. * Copyright (c) 1999 ConnectTel, Inc. All Rights Reserved.
* *
* MODULE DESCRIPTION: Prototype routines for the paux driver. * MODULE DESCRIPTION: Prototype routines for the paux driver.
* *
* by: Rosimildo da Silva: * by: Rosimildo da Silva:
@@ -15,6 +15,9 @@
* MODIFICATION/HISTORY: * MODIFICATION/HISTORY:
* *
* $Log$ * $Log$
* Revision 1.2 2004/04/15 13:26:12 ralf
* Remove stray white spaces.
*
* Revision 1.1 2000/08/30 08:15:30 joel * Revision 1.1 2000/08/30 08:15:30 joel
* 2000-08-26 Rosimildo da Silva <rdasilva@connecttel.com> * 2000-08-26 Rosimildo da Silva <rdasilva@connecttel.com>
* *

View File

@@ -82,7 +82,7 @@ isr_on(const rtems_irq_connect_data *unused)
{ {
return; return;
} }
static void static void
isr_off(const rtems_irq_connect_data *unused) isr_off(const rtems_irq_connect_data *unused)
{ {
@@ -126,7 +126,7 @@ static void kb_wait(void)
if (! (status & KBD_STAT_IBF)) if (! (status & KBD_STAT_IBF))
return; return;
mdelay(1); mdelay(1);
timeout--; timeout--;
} while (timeout); } while (timeout);
@@ -463,11 +463,11 @@ size_t read_aux(char * buffer, size_t count )
size_t i = count; size_t i = count;
unsigned char c; unsigned char c;
if (queue_empty()) if (queue_empty())
{ {
return 0; return 0;
} }
while (i > 0 && !queue_empty()) while (i > 0 && !queue_empty())
{ {
c = get_from_queue(); c = get_from_queue();
*buffer++ = c; *buffer++ = c;
@@ -591,7 +591,7 @@ static int paux_last_close(int major, int minor, void *arg)
* It does nothing write now. * It does nothing write now.
*/ */
static int write_aux_echo( int minor, const char * buffer, int count ) static int write_aux_echo( int minor, const char * buffer, int count )
{ {
return 0; return 0;
} }
@@ -617,7 +617,7 @@ paux_open(rtems_device_major_number major,
void *arg) void *arg)
{ {
rtems_status_code status; rtems_status_code status;
static rtems_termios_callbacks cb = static rtems_termios_callbacks cb =
{ {
NULL, /* firstOpen */ NULL, /* firstOpen */
paux_last_close, /* lastClose */ paux_last_close, /* lastClose */
@@ -645,7 +645,7 @@ paux_close(rtems_device_major_number major,
return (rtems_termios_close (arg)); return (rtems_termios_close (arg));
} }
/* /*
* paux device driver READ entry point. * paux device driver READ entry point.
* Read characters from the PS/2 mouse. * Read characters from the PS/2 mouse.
@@ -657,7 +657,7 @@ paux_read(rtems_device_major_number major,
{ {
return rtems_termios_read (arg); return rtems_termios_read (arg);
} /* tty_read */ } /* tty_read */
/* /*
* paux device driver WRITE entry point. * paux device driver WRITE entry point.
@@ -675,18 +675,18 @@ paux_write(rtems_device_major_number major,
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} /* tty_write */ } /* tty_write */
/* /*
* Handle ioctl request. * Handle ioctl request.
*/ */
rtems_device_driver rtems_device_driver
paux_control(rtems_device_major_number major, paux_control(rtems_device_major_number major,
rtems_device_minor_number minor, rtems_device_minor_number minor,
void * arg void * arg
) )
{ {
rtems_libio_ioctl_args_t *args = arg; rtems_libio_ioctl_args_t *args = arg;
switch( args->command ) switch( args->command )
{ {
default: default:
return rtems_termios_ioctl (arg); return rtems_termios_ioctl (arg);

View File

@@ -6,7 +6,7 @@
* RTEMS port: by Rosimildo da Silva. * RTEMS port: by Rosimildo da Silva.
* *
* This module was ported from Linux. * This module was ported from Linux.
* *
*/ */
/* /*

View File

@@ -7,7 +7,7 @@
* as /dev/ttyS1 for COM1 and /dev/ttyS2 as COM2. If one of the ports * as /dev/ttyS1 for COM1 and /dev/ttyS2 as COM2. If one of the ports
* is used as the console, this driver would fail to initialize. * is used as the console, this driver would fail to initialize.
* *
* This code was based on the console driver. It is based on the * This code was based on the console driver. It is based on the
* current termios framework. This is just a shell around the * current termios framework. This is just a shell around the
* termios support. * termios support.
* *
@@ -18,6 +18,12 @@
* MODIFICATION/HISTORY: * MODIFICATION/HISTORY:
* *
* $Log$ * $Log$
* Revision 1.5 2000/12/05 16:37:38 joel
* 2000-12-01 Joel Sherrill <joel@OARcorp.com>
*
* * pc386/console/console.c, pc386/console/serial_mouse.c,
* pc386/console/vgainit.c, shared/comm/tty_drv.c: Remove warnings.
*
* Revision 1.4 2000/10/23 14:10:25 joel * Revision 1.4 2000/10/23 14:10:25 joel
* 2000-10-23 Joel Sherrill <joel@OARcorp.com> * 2000-10-23 Joel Sherrill <joel@OARcorp.com>
* *
@@ -80,8 +86,8 @@ extern int BSPConsolePort;
/* /*
* Interrupt structure for serial_mouse * Interrupt structure for serial_mouse
*/ */
static rtems_irq_connect_data serial_mouse_isr_data = static rtems_irq_connect_data serial_mouse_isr_data =
{ {
BSP_UART_IRQ, BSP_UART_IRQ,
BSP_ISR_FUNC, BSP_ISR_FUNC,
isr_on, isr_on,
@@ -92,7 +98,7 @@ static void isr_on(const rtems_irq_connect_data *unused)
{ {
return; return;
} }
static void isr_off(const rtems_irq_connect_data *unused) static void isr_off(const rtems_irq_connect_data *unused)
{ {
return; return;
@@ -131,7 +137,7 @@ serial_mouse_initialize(rtems_device_major_number major,
* Set up TERMIOS * Set up TERMIOS
*/ */
rtems_termios_initialize(); rtems_termios_initialize();
/* /*
* Do device-specific initialization * Do device-specific initialization
*/ */
@@ -172,7 +178,7 @@ serial_mouse_open(rtems_device_major_number major,
void *arg) void *arg)
{ {
rtems_status_code status; rtems_status_code status;
static rtems_termios_callbacks cb = static rtems_termios_callbacks cb =
{ {
NULL, /* firstOpen */ NULL, /* firstOpen */
serial_mouse_last_close, /* lastClose */ serial_mouse_last_close, /* lastClose */
@@ -194,7 +200,7 @@ serial_mouse_open(rtems_device_major_number major,
/* /*
* Pass data area info down to driver * Pass data area info down to driver
*/ */
BSP_uart_termios_set( BSP_UART_PORT, BSP_uart_termios_set( BSP_UART_PORT,
((rtems_libio_open_close_args_t *)arg)->iop->data1 ); ((rtems_libio_open_close_args_t *)arg)->iop->data1 );
/* Enable interrupts on channel */ /* Enable interrupts on channel */
BSP_uart_intr_ctrl( BSP_UART_PORT, BSP_UART_INTR_CTRL_TERMIOS); BSP_uart_intr_ctrl( BSP_UART_PORT, BSP_UART_INTR_CTRL_TERMIOS);
@@ -211,10 +217,10 @@ serial_mouse_close(rtems_device_major_number major,
{ {
return (rtems_termios_close (arg)); return (rtems_termios_close (arg));
} /* tty_close */ } /* tty_close */
/* /*
* TTY device driver READ entry point. * TTY device driver READ entry point.
* Read characters from the tty device. * Read characters from the tty device.
@@ -226,7 +232,7 @@ serial_mouse_read(rtems_device_major_number major,
{ {
return rtems_termios_read (arg); return rtems_termios_read (arg);
} /* tty_read */ } /* tty_read */
/* /*
* TTY device driver WRITE entry point. * TTY device driver WRITE entry point.
@@ -238,7 +244,7 @@ serial_mouse_write(rtems_device_major_number major,
void * arg) void * arg)
{ {
return rtems_termios_write (arg); return rtems_termios_write (arg);
} /* tty_write */ } /* tty_write */
/* /*
@@ -246,9 +252,9 @@ serial_mouse_write(rtems_device_major_number major,
* routine to handle both devices. * routine to handle both devices.
*/ */
static rtems_device_driver serial_mouse_control_internal( int port, void *arg ) static rtems_device_driver serial_mouse_control_internal( int port, void *arg )
{ {
rtems_libio_ioctl_args_t *args = arg; rtems_libio_ioctl_args_t *args = arg;
switch( args->command ) switch( args->command )
{ {
default: default:
return rtems_termios_ioctl (arg); return rtems_termios_ioctl (arg);
@@ -271,12 +277,12 @@ static rtems_device_driver serial_mouse_control_internal( int port, void *arg )
/* /*
* Handle ioctl request for ttyS1. * Handle ioctl request for ttyS1.
*/ */
rtems_device_driver rtems_device_driver
serial_mouse_control(rtems_device_major_number major, serial_mouse_control(rtems_device_major_number major,
rtems_device_minor_number minor, rtems_device_minor_number minor,
void * arg void * arg
) )
{ {
return serial_mouse_control_internal( BSP_UART_PORT, arg ); return serial_mouse_control_internal( BSP_UART_PORT, arg );
} }
@@ -287,45 +293,45 @@ conSetAttr(int port, int minor, const struct termios *t)
{ {
unsigned long baud, databits, parity, stopbits; unsigned long baud, databits, parity, stopbits;
switch (t->c_cflag & CBAUD) switch (t->c_cflag & CBAUD)
{ {
case B50: case B50:
baud = 50; baud = 50;
break; break;
case B75: case B75:
baud = 75; baud = 75;
break; break;
case B110: case B110:
baud = 110; baud = 110;
break; break;
case B134: case B134:
baud = 134; baud = 134;
break; break;
case B150: case B150:
baud = 150; baud = 150;
break; break;
case B200: case B200:
baud = 200; baud = 200;
break; break;
case B300: case B300:
baud = 300; baud = 300;
break; break;
case B600: case B600:
baud = 600; baud = 600;
break; break;
case B1200: case B1200:
baud = 1200; baud = 1200;
break; break;
case B1800: case B1800:
baud = 1800; baud = 1800;
break; break;
case B2400: case B2400:
baud = 2400; baud = 2400;
break; break;
case B4800: case B4800:
baud = 4800; baud = 4800;
break; break;
case B9600: case B9600:
baud = 9600; baud = 9600;
break; break;
case B19200: case B19200:
@@ -334,7 +340,7 @@ conSetAttr(int port, int minor, const struct termios *t)
case B38400: case B38400:
baud = 38400; baud = 38400;
break; break;
case B57600: case B57600:
baud = 57600; baud = 57600;
break; break;
case B115200: case B115200:
@@ -360,7 +366,7 @@ conSetAttr(int port, int minor, const struct termios *t)
/* No parity */ /* No parity */
parity = 0; parity = 0;
} }
switch (t->c_cflag & CSIZE) { switch (t->c_cflag & CSIZE) {
case CS5: databits = CHR_5_BITS; break; case CS5: databits = CHR_5_BITS; break;
case CS6: databits = CHR_6_BITS; break; case CS6: databits = CHR_6_BITS; break;

View File

@@ -5,7 +5,7 @@
* $Header$ * $Header$
* *
* Copyright (c) 1999 ConnectTel, Inc. All Rights Reserved. * Copyright (c) 1999 ConnectTel, Inc. All Rights Reserved.
* *
* MODULE DESCRIPTION: Prototype routines for the /dev/mouse driver. * MODULE DESCRIPTION: Prototype routines for the /dev/mouse driver.
* *
* by: Rosimildo da Silva: * by: Rosimildo da Silva:
@@ -15,6 +15,9 @@
* MODIFICATION/HISTORY: * MODIFICATION/HISTORY:
* *
* $Log$ * $Log$
* Revision 1.2 2004/04/15 13:26:12 ralf
* Remove stray white spaces.
*
* Revision 1.1 2000/08/30 08:15:30 joel * Revision 1.1 2000/08/30 08:15:30 joel
* 2000-08-26 Rosimildo da Silva <rdasilva@connecttel.com> * 2000-08-26 Rosimildo da Silva <rdasilva@connecttel.com>
* *
@@ -98,7 +101,7 @@ rtems_device_driver serial_mouse_write(
/* Select the mouse type: "ms","pc","ps2" */ /* Select the mouse type: "ms","pc","ps2" */
#define MOUSE_TYPE "ms" #define MOUSE_TYPE "ms"
/* Select the serial port for the serial mouse driver */ /* Select the serial port for the serial mouse driver */
#define SERIAL_MOUSE_COM1 1 #define SERIAL_MOUSE_COM1 1

View File

@@ -1,7 +1,7 @@
/* /*
* videoAsm.S - This file contains code for displaying cursor on the console * videoAsm.S - This file contains code for displaying cursor on the console
* *
* Copyright (C) 1998 valette@crf.canon.fr * Copyright (C) 1998 valette@crf.canon.fr
* *
* This code is free software; you can redistribute it and/or * This code is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public * modify it under the terms of the GNU Library General Public

View File

@@ -73,7 +73,7 @@ _kd_mksound(unsigned int hz, unsigned int ticks)
if (hz > 20 && hz < 32767) if (hz > 20 && hz < 32767)
count = 1193180 / hz; count = 1193180 / hz;
_CPU_ISR_Disable(level); _CPU_ISR_Disable(level);
/* del_timer(&sound_timer); */ /* del_timer(&sound_timer); */
if (count) { if (count) {
@@ -121,7 +121,7 @@ do_kdsk_ioctl(int cmd, struct kbentry *user_kbe, int perm, struct kbd_struct *kb
tmp = *user_kbe; tmp = *user_kbe;
if (i >= NR_KEYS || s >= MAX_NR_KEYMAPS) if (i >= NR_KEYS || s >= MAX_NR_KEYMAPS)
return -EINVAL; return -EINVAL;
switch (cmd) { switch (cmd) {
case KDGKBENT: case KDGKBENT:
@@ -147,7 +147,7 @@ do_kdsk_ioctl(int cmd, struct kbentry *user_kbe, int perm, struct kbd_struct *kb
#define HZ 100 #define HZ 100
static inline int static inline int
do_kbkeycode_ioctl(int cmd, struct kbkeycode *user_kbkc, int perm) do_kbkeycode_ioctl(int cmd, struct kbkeycode *user_kbkc, int perm)
{ {
struct kbkeycode tmp; struct kbkeycode tmp;
@@ -177,7 +177,7 @@ do_kdgkb_ioctl(int cmd, struct kbsentry *user_kdgkb, int perm)
/* /*
* We handle the console-specific ioctl's here. We allow the * We handle the console-specific ioctl's here. We allow the
* capability to modify any console, not just the fg_console. * capability to modify any console, not just the fg_console.
*/ */
int vt_ioctl( unsigned int cmd, unsigned long arg) int vt_ioctl( unsigned int cmd, unsigned long arg)
{ {
@@ -207,7 +207,7 @@ int vt_ioctl( unsigned int cmd, unsigned long arg)
return -EPERM; return -EPERM;
{ {
unsigned int ticks, count; unsigned int ticks, count;
/* /*
* Generate the tone for the appropriate number of ticks. * Generate the tone for the appropriate number of ticks.
* If the time is zero, turn off sound ourselves. * If the time is zero, turn off sound ourselves.

View File

@@ -30,8 +30,8 @@
#include <libchip/ide_ctrl_io.h> #include <libchip/ide_ctrl_io.h>
/* #define DEBUG_OUT */ /* #define DEBUG_OUT */
/* /*
* support functions for IDE harddisk IF * support functions for IDE harddisk IF
*/ */
/*=========================================================================*\ /*=========================================================================*\
| Function: | | Function: |
@@ -52,7 +52,7 @@ boolean pc386_ide_probe
\*=========================================================================*/ \*=========================================================================*/
{ {
boolean ide_card_plugged = TRUE; /* assume: we have a disk here */ boolean ide_card_plugged = TRUE; /* assume: we have a disk here */
return ide_card_plugged; return ide_card_plugged;
} }
@@ -160,9 +160,9 @@ void pc386_ide_read_block
+---------------------------------------------------------------------------+ +---------------------------------------------------------------------------+
| Input Parameters: | | Input Parameters: |
\*-------------------------------------------------------------------------*/ \*-------------------------------------------------------------------------*/
int minor, int minor,
uint16_t block_size, uint16_t block_size,
blkdev_sg_buffer *bufs, blkdev_sg_buffer *bufs,
uint32_t *cbuf, uint32_t *cbuf,
uint32_t *pos uint32_t *pos
) )
@@ -179,7 +179,7 @@ void pc386_ide_read_block
((uint8_t*)(bufs[(*cbuf)].buffer) + (*pos)); ((uint8_t*)(bufs[(*cbuf)].buffer) + (*pos));
inport_byte(port+IDE_REGISTER_STATUS,status_val); inport_byte(port+IDE_REGISTER_STATUS,status_val);
while ((status_val & IDE_REGISTER_STATUS_DRQ) && while ((status_val & IDE_REGISTER_STATUS_DRQ) &&
(cnt < block_size)) { (cnt < block_size)) {
inport_word(port+IDE_REGISTER_DATA,*lbuf); inport_word(port+IDE_REGISTER_DATA,*lbuf);
@@ -187,7 +187,7 @@ void pc386_ide_read_block
printk("0x%x ",*lbuf); printk("0x%x ",*lbuf);
#endif #endif
lbuf++; lbuf++;
cnt += sizeof(*lbuf); cnt += sizeof(*lbuf);
(*pos) += sizeof(*lbuf); (*pos) += sizeof(*lbuf);
if ((*pos) == llength) { if ((*pos) == llength) {
(*pos) = 0; (*pos) = 0;
@@ -196,7 +196,7 @@ void pc386_ide_read_block
llength = bufs[(*cbuf)].length; llength = bufs[(*cbuf)].length;
} }
inport_byte(port+IDE_REGISTER_STATUS,status_val); inport_byte(port+IDE_REGISTER_STATUS,status_val);
} }
#ifdef DEBUG_OUT #ifdef DEBUG_OUT
printk("pc386_ide_read_block()\r\n"); printk("pc386_ide_read_block()\r\n");
#endif #endif
@@ -213,9 +213,9 @@ void pc386_ide_write_block
+---------------------------------------------------------------------------+ +---------------------------------------------------------------------------+
| Input Parameters: | | Input Parameters: |
\*-------------------------------------------------------------------------*/ \*-------------------------------------------------------------------------*/
int minor, int minor,
uint16_t block_size, uint16_t block_size,
blkdev_sg_buffer *bufs, blkdev_sg_buffer *bufs,
uint32_t *cbuf, uint32_t *cbuf,
uint32_t *pos uint32_t *pos
) )
@@ -230,19 +230,19 @@ void pc386_ide_write_block
uint8_t status_val; uint8_t status_val;
uint16_t *lbuf = (uint16_t*) uint16_t *lbuf = (uint16_t*)
((uint8_t*)(bufs[(*cbuf)].buffer) + (*pos)); ((uint8_t*)(bufs[(*cbuf)].buffer) + (*pos));
#ifdef DEBUG_OUT #ifdef DEBUG_OUT
printk("pc386_ide_write_block()\r\n"); printk("pc386_ide_write_block()\r\n");
#endif #endif
inport_byte(port+IDE_REGISTER_STATUS,status_val); inport_byte(port+IDE_REGISTER_STATUS,status_val);
while ((status_val & IDE_REGISTER_STATUS_DRQ) && while ((status_val & IDE_REGISTER_STATUS_DRQ) &&
(cnt < block_size)) { (cnt < block_size)) {
#ifdef DEBUG_OUT #ifdef DEBUG_OUT
printk("0x%x ",*lbuf); printk("0x%x ",*lbuf);
#endif #endif
outport_word(port+IDE_REGISTER_DATA,*lbuf); outport_word(port+IDE_REGISTER_DATA,*lbuf);
lbuf++; lbuf++;
cnt += sizeof(*lbuf); cnt += sizeof(*lbuf);
(*pos) += sizeof(*lbuf); (*pos) += sizeof(*lbuf);
if ((*pos) == llength) { if ((*pos) == llength) {
(*pos) = 0; (*pos) = 0;
@@ -300,7 +300,7 @@ rtems_status_code pc386_ide_config_io_speed
} }
/* /*
* The following table configures the functions used for IDE drivers * The following table configures the functions used for IDE drivers
* in this BSP. * in this BSP.
*/ */

View File

@@ -25,7 +25,7 @@
/* /*
* The following table configures the functions used for IDE drivers * The following table configures the functions used for IDE drivers
* in this BSP. * in this BSP.
*/ */
@@ -48,5 +48,5 @@ ide_controller_bsp_table_t IDE_Controller_Table[] = {
}; };
/* Number of rows in IDE_Controller_Table */ /* Number of rows in IDE_Controller_Table */
unsigned long IDE_Controller_Count = unsigned long IDE_Controller_Count =
sizeof(IDE_Controller_Table)/sizeof(IDE_Controller_Table[0]); sizeof(IDE_Controller_Table)/sizeof(IDE_Controller_Table[0]);

View File

@@ -54,7 +54,7 @@ extern "C" {
#include <rtems/clockdrv.h> #include <rtems/clockdrv.h>
#include <libcpu/cpu.h> #include <libcpu/cpu.h>
#include <rtems/bspIo.h> #include <rtems/bspIo.h>
/* /*
* confdefs.h overrides for this BSP: * confdefs.h overrides for this BSP:
* - number of termios serial ports * - number of termios serial ports
@@ -104,8 +104,8 @@ extern int rtems_dec21140_driver_attach(struct rtems_bsdnet_ifconfig *, int);
| Video (console) related constants. | Video (console) related constants.
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
#include <crt.h> #include <crt.h>
/*-------------------------------------------------------------------------+ /*-------------------------------------------------------------------------+
| Constants relating to the 8254 (or 8253) programmable interval timers. | Constants relating to the 8254 (or 8253) programmable interval timers.
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
@@ -192,7 +192,7 @@ extern int rtems_dec21140_driver_attach(struct rtems_bsdnet_ifconfig *, int);
extern interrupt_gate_descriptor Interrupt_descriptor_table[IDT_SIZE]; extern interrupt_gate_descriptor Interrupt_descriptor_table[IDT_SIZE];
extern segment_descriptors Global_descriptor_table [GDT_SIZE]; extern segment_descriptors Global_descriptor_table [GDT_SIZE];
extern rtems_configuration_table BSP_Configuration; extern rtems_configuration_table BSP_Configuration;
/* User provided BSP configuration table. */ /* User provided BSP configuration table. */
extern uint32_t rtemsFreeMemStart; extern uint32_t rtemsFreeMemStart;
@@ -204,8 +204,8 @@ extern uint32_t rtemsFreeMemStart;
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
void _IBMPC_initVideo(void); /* from 'outch.c' */ void _IBMPC_initVideo(void); /* from 'outch.c' */
void _IBMPC_outch (char); /* from 'outch.c' */ void _IBMPC_outch (char); /* from 'outch.c' */
char _IBMPC_inch (void); /* from 'inch.c' */ char _IBMPC_inch (void); /* from 'inch.c' */
char _IBMPC_inch_sleep (void); /* from 'inch.c' */ char _IBMPC_inch_sleep (void); /* from 'inch.c' */
void rtemsReboot(void); /* from 'exit.c' */ void rtemsReboot(void); /* from 'exit.c' */

View File

@@ -21,7 +21,7 @@
*/ */
/* In monochrome */ /* In monochrome */
#define V_MONO 0xb0000 #define V_MONO 0xb0000
/* In color */ /* In color */
#define V_COLOR 0xb8000 #define V_COLOR 0xb8000
@@ -73,7 +73,7 @@
#define ON 1 #define ON 1
/* /*
* CRT Controller register offset definitions * CRT Controller register offset definitions
*/ */

View File

@@ -17,7 +17,7 @@
/* page 0 read or read/write registers */ /* page 0 read or read/write registers */
#define CMDR 0x00+RO #define CMDR 0x00+RO
#define CLDA0 0x01+RO /* current local dma addr 0 for read */ #define CLDA0 0x01+RO /* current local dma addr 0 for read */
#define CLDA1 0x02+RO /* current local dma addr 1 for read */ #define CLDA1 0x02+RO /* current local dma addr 1 for read */
#define BNRY 0x03+RO /* boundary reg for rd and wr */ #define BNRY 0x03+RO /* boundary reg for rd and wr */
@@ -63,7 +63,7 @@
/*-----CMDR command bits-----*/ /*-----CMDR command bits-----*/
#define MSK_STP 0x01 /* stop the chip */ #define MSK_STP 0x01 /* stop the chip */
#define MSK_STA 0x02 /* start the chip */ #define MSK_STA 0x02 /* start the chip */
#define MSK_TXP 0x04 /* initial txing of a frm */ #define MSK_TXP 0x04 /* initial txing of a frm */
#define MSK_RRE 0x08 /* remote read */ #define MSK_RRE 0x08 /* remote read */
#define MSK_RWR 0x10 /* remote write */ #define MSK_RWR 0x10 /* remote write */

View File

@@ -25,7 +25,7 @@
| |
| ************************************************************************** | **************************************************************************
| * COPYRIGHT (c) 1989-1999. | * COPYRIGHT (c) 1989-1999.
| * On-Line Applications Research Corporation (OAR). | * On-Line Applications Research Corporation (OAR).
| * | *
| * The license and distribution terms for this file may be | * The license and distribution terms for this file may be
| * found in the file LICENSE in this distribution or at | * found in the file LICENSE in this distribution or at
@@ -44,7 +44,7 @@
#include <rtems/asm.h> #include <rtems/asm.h>
/*----------------------------------------------------------------------------+ /*----------------------------------------------------------------------------+
| Size of heap and stack: | Size of heap and stack:
+----------------------------------------------------------------------------*/ +----------------------------------------------------------------------------*/
.set STACK_SIZE, 0x1000 .set STACK_SIZE, 0x1000
@@ -63,7 +63,7 @@ BEGIN_CODE
EXTERN (_IBMPC_initVideo) EXTERN (_IBMPC_initVideo)
EXTERN (debugPollingGetChar) EXTERN (debugPollingGetChar)
EXTERN (checkCPUtypeSetCr0) EXTERN (checkCPUtypeSetCr0)
/* /*
* In case this crashes on your machine and this is not due * In case this crashes on your machine and this is not due
@@ -75,7 +75,7 @@ BEGIN_CODE
SYM (start): SYM (start):
/* /*
* When things are really, REALLY!, bad -- turn on the speaker and * When things are really, REALLY!, bad -- turn on the speaker and
* lock up. This shows whether or not we make it to a certain * lock up. This shows whether or not we make it to a certain
* location. * location.
*/ */
#if 0 #if 0
@@ -91,7 +91,7 @@ speakl: jmp speakl # and SPIN!!!
#ifdef DEBUG_EARLY_START #ifdef DEBUG_EARLY_START
/* /*
* Must get video attribute to have a working printk. * Must get video attribute to have a working printk.
* Note that the following code assume we already have * Note that the following code assume we already have
* valid segments and a stack. It should be true for * valid segments and a stack. It should be true for
* any loader starting RTEMS in protected mode (or * any loader starting RTEMS in protected mode (or
* at least I hope so : -)). * at least I hope so : -)).
@@ -105,13 +105,13 @@ speakl: jmp speakl # and SPIN!!!
addl $4, esp addl $4, esp
/* call debugPollingGetChar */ /* call debugPollingGetChar */
#endif #endif
/*----------------------------------------------------------------------------+ /*----------------------------------------------------------------------------+
| Load the segment registers (this is done by the board's BSP) and perform any | Load the segment registers (this is done by the board's BSP) and perform any
| other board specific initialization procedures, this piece of code | other board specific initialization procedures, this piece of code
| does not know anything about | does not know anything about
| |
| NOTE: Upon return, gs will contain the segment descriptor for a segment which | NOTE: Upon return, gs will contain the segment descriptor for a segment which
| maps directly to all of physical memory. | maps directly to all of physical memory.
@@ -153,12 +153,12 @@ SYM (zero_bss):
| So from now we can use printk | So from now we can use printk
+-------------------------------------------------------------------*/ +-------------------------------------------------------------------*/
call _IBMPC_initVideo call _IBMPC_initVideo
/*---------------------------------------------------------------------+ /*---------------------------------------------------------------------+
| Check CPU type. Enable Cache and init coprocessor if needed. | Check CPU type. Enable Cache and init coprocessor if needed.
+---------------------------------------------------------------------*/ +---------------------------------------------------------------------*/
call checkCPUtypeSetCr0 call checkCPUtypeSetCr0
/*---------------------------------------------------------------------+ /*---------------------------------------------------------------------+
| Transfer control to User's Board Support Package | Transfer control to User's Board Support Package
+---------------------------------------------------------------------*/ +---------------------------------------------------------------------*/

Some files were not shown because too many files have changed in this diff Show More