source: rtems/c/src/lib/libbsp/m68k/dmv152/clock/ckinit.c @ 3a4ae6c

4.104.114.84.95
Last change on this file since 3a4ae6c was 3a4ae6c, checked in by Joel Sherrill <joel.sherrill@…>, on 09/11/95 at 19:35:39

The word "RTEMS" almost completely removed from the core.

Configuration Table Template file added and all tests
modified to use this. All gvar.h and conftbl.h files
removed from test directories.

Configuration parameter maximum_devices added.

Core semaphore and mutex handlers added and RTEMS API Semaphore
Manager updated to reflect this.

Initialization sequence changed to invoke API specific initialization
routines. Initialization tasks table now owned by RTEMS Tasks Manager.

Added user extension for post-switch.

Utilized user extensions to implement API specific functionality
like signal dispatching.

Added extensions to the System Initialization Thread so that an
API can register a function to be invoked while the system
is being initialized. These are largely equivalent to the
pre-driver and post-driver hooks.

Added the Modules file oar-go32_p5, modified oar-go32, and modified
the file make/custom/go32.cfg to look at an environment varable which
determines what CPU model is being used.

All BSPs updated to reflect named devices and clock driver's IOCTL
used by the Shared Memory Driver. Also merged clock isr into
main file and removed ckisr.c where possible.

Updated spsize to reflect new and moved variables.

Makefiles for the executive source and include files updated to show
break down of files into Core, RTEMS API, and Neither.

Header and inline files installed into subdirectory based on whether
logically in the Core or a part of the RTEMS API.

  • Property mode set to 100644
File size: 3.9 KB
Line 
1/*  Clock_init()
2 *
3 *  This routine initializes the Z80386 1 on the MVME136 board.
4 *  The tick frequency is 1 millisecond.
5 *
6 *  Input parameters:  NONE
7 *
8 *  Output parameters:  NONE
9 *
10 *  COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
11 *  On-Line Applications Research Corporation (OAR).
12 *  All rights assigned to U.S. Government, 1994.
13 *
14 *  This material may be reproduced by or for the U.S. Government pursuant
15 *  to the copyright license under the clause at DFARS 252.227-7013.  This
16 *  notice must appear in all copies of this file and its derivatives.
17 *
18 *  $Id$
19 */
20
21#include <stdlib.h>
22 
23#include <bsp.h>
24#include <rtems/libio.h>
25
26rtems_unsigned32 Clock_isrs;        /* ISRs until next tick */
27volatile rtems_unsigned32 Clock_driver_ticks;
28                                    /* ticks since initialization */
29rtems_isr_entry  Old_ticker;
30
31void Clock_exit( void );
32
33#define CLOCK_VECTOR  TIMER_VECTOR
34 
35/*
36 * These are set by clock driver during its init
37 */
38 
39rtems_device_major_number rtems_clock_major = ~0;
40rtems_device_minor_number rtems_clock_minor;
41
42/*
43 *  ISR Handler
44 */
45
46rtems_isr Clock_isr(
47  rtems_vector_number vector
48)
49{
50  Clock_driver_ticks += 1;
51
52  Z8x36_WRITE( TIMER, CT1_CMD_STATUS, 0xE2 );
53  Z8x36_WRITE( TIMER, CT1_CMD_STATUS, 0x22 );
54  Z8x36_WRITE( TIMER, CT1_CMD_STATUS, 0xC6 );
55
56  if ( Clock_isrs == 1 ) {
57    rtems_clock_tick();
58    Clock_isrs = BSP_Configuration.microseconds_per_tick / 1000;
59  }
60  else
61    Clock_isrs -= 1;
62}
63
64void Install_clock(
65  rtems_isr_entry clock_isr
66)
67{
68  rtems_unsigned8 data;
69
70  Clock_driver_ticks = 0;
71  Clock_isrs = BSP_Configuration.microseconds_per_tick / 1000;
72
73  if ( BSP_Configuration.ticks_per_timeslice ) {
74    Old_ticker = (rtems_isr_entry) set_vector( clock_isr, CLOCK_VECTOR, 1 );
75
76    Z8x36_WRITE( TIMER, MASTER_CFG, 0xd4 );
77    Z8x36_READ ( TIMER, MASTER_INTR, data );
78    Z8x36_WRITE( TIMER, MASTER_INTR, (data & 0x7E) );
79    Z8x36_WRITE( TIMER, CT1_TIME_CONST_MSB, 0x04 );
80    Z8x36_WRITE( TIMER, CT1_TIME_CONST_LSB, 0xCE );
81    Z8x36_WRITE( TIMER, CT1_MODE_SPEC, 0x83 );
82    Z8x36_WRITE( TIMER, CNT_TMR_VECTOR, CLOCK_VECTOR );
83    Z8x36_WRITE( TIMER, CT1_CMD_STATUS, 0x20 );
84    Z8x36_READ ( TIMER, MASTER_INTR, data );
85    Z8x36_WRITE( TIMER, MASTER_INTR, (data & 0xDA) | 0x80 );
86
87    /*
88     * ACC_IC54 - interrupt 5 will be vectored and mapped to level 6
89     */
90
91    data = (*(rtems_unsigned8 *)0x0D00000B);
92    (*(rtems_unsigned8 *)0x0D00000B) = (data & 0x7F) | 0x60;
93
94    Z8x36_WRITE( TIMER, CT1_CMD_STATUS, 0xC6 );
95
96    atexit( Clock_exit );
97  }
98}
99
100void ReInstall_clock(
101  rtems_isr_entry clock_isr
102)
103{
104  rtems_unsigned32 isrlevel = 0 ;
105
106  rtems_interrupt_disable( isrlevel );
107   (void) set_vector( clock_isr, CLOCK_VECTOR, 1 );
108  rtems_interrupt_enable( isrlevel );
109}
110
111void Clock_exit( void )
112{
113  rtems_unsigned8 data;
114
115  if ( BSP_Configuration.ticks_per_timeslice ) {
116
117    Z8x36_READ ( TIMER, MASTER_INTR, data );
118    Z8x36_WRITE( TIMER, MASTER_INTR, (data & 0x01) );
119    /* do not restore old vector */
120
121  }
122}
123
124rtems_device_driver Clock_initialize(
125  rtems_device_major_number major,
126  rtems_device_minor_number minor,
127  void *pargp
128)
129{
130  Install_clock( Clock_isr );
131 
132  /*
133   * make major/minor avail to others such as shared memory driver
134   */
135 
136  rtems_clock_major = major;
137  rtems_clock_minor = minor;
138 
139  return RTEMS_SUCCESSFUL;
140}
141 
142rtems_device_driver Clock_control(
143  rtems_device_major_number major,
144  rtems_device_minor_number minor,
145  void *pargp
146)
147{
148    rtems_libio_ioctl_args_t *args = pargp;
149 
150    if (args == 0)
151        goto done;
152 
153    /*
154     * This is hokey, but until we get a defined interface
155     * to do this, it will just be this simple...
156     */
157 
158    if (args->command == rtems_build_name('I', 'S', 'R', ' '))
159    {
160        Clock_isr(CLOCK_VECTOR);
161    }
162    else if (args->command == rtems_build_name('N', 'E', 'W', ' '))
163    {
164        ReInstall_clock(args->buffer);
165    }
166 
167done:
168    return RTEMS_SUCCESSFUL;
169}
170
Note: See TracBrowser for help on using the repository browser.