OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [uclinux/] [uClinux-2.0.x/] [drivers/] [char/] [ChangeLog] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 199 simons
Wed Jun  5 18:52:04 1996  Theodore Ts'o  
2
 
3
        * tty_io.c (do_tty_hangup):
4
        * pty.c (pty_close): When closing a pty, make sure packet mode is
5
                cleared.
6
 
7
Sun May 26 09:33:52 1996  Theodore Ts'o  
8
 
9
        * vesa_blank.c (set_vesa_blanking): Add missing verify_area() call.
10
 
11
        * selection.c (set_selection): Add missing verify_area() call.
12
 
13
        * tty_io.c (tty_ioctl): Add missing verify_area() calls.
14
 
15
        * serial.c (rs_ioctl): Add missing verify_area() calls.
16
                (rs_init): Allow initialization of serial driver
17
                configuration from a module.
18
 
19
        * random.c (extract_entropy): Add missing verify_area call.
20
                Don't limit number of characters returned to
21
                32,768. Extract entropy is now no longer a inlined
22
                function.
23
 
24
                (random_read): Check return value in case extract_entropy
25
                returns an error.
26
 
27
                (secure_tcp_sequence_number): New function which returns a
28
                secure TCP sequence number.  This is needed to prevent some
29
                nasty TCP hijacking attacks.
30
 
31
                (init_std_data): Initialize using gettimeofday() instead of
32
                struct timeval xtime.
33
 
34
                (fast_add_entropy_word, add_entropy_word): Rename the
35
                inline function add_entropy_word() to
36
                fast_add_entropy_word().  Make add_entropy_word() be the
37
                non-inlined function which is used in non-timing critical
38
                places, in order to save space.
39
 
40
                (initialize_benchmark, begin_benchmark, end_benchmark): New
41
                functions defined when RANDOM_BENCHMARK is defined.  They
42
                allow us to benchmark the speed of the
43
                add_timer_randomness() call.
44
 
45
                (int_ln, rotate_left): Add two new inline functions with
46
                i386 optimized asm instructions.  This speeds up the
47
                critical add_entropy_word() and add_timer_randomness()
48
                functions, which are called from interrupt handlers.
49
 
50
Tue May  7 22:51:11 1996    
51
 
52
        * random.c (add_timer_randomness): Limit the amount randomness
53
                that we estimate to 12 bits.  (An arbitrary amount).
54
 
55
                (extract_entropy): To make it harder to analyze the hash
56
                function, fold the hash function in half using XOR, and
57
                use the folded result as the value to emit to the user.
58
                Also, add timer randomness each pass through the
59
                exact_entropy call, to increase the amount of unknown
60
                values during the extraction process.
61
 
62
                (random_ioctl): Use IOR/IOW definitions to define the
63
                ioctl values used by the /dev/random driver.  Allow the
64
                old ioctl values to be used for backwards compatibility
65
                (for a limited amount of time).
66
 
67
Wed Apr 24 14:02:04 1996  Theodore Ts'o  
68
 
69
        * random.c (add_timer_randomness): Use 2nd derivative as well to
70
                better estimate entropy.
71
 
72
                (rand_initialize): Explicitly initialize all the pointers
73
                to NULL.  (Clearing pointers using memset isn't portable.)
74
                Initialize the random pool with OS-dependent data.
75
 
76
                (random_write): Add sanity checking to the arguments to
77
                random_write(), so that bad arguments won't cause a kernel
78
                SEGV.
79
 
80
                (random_read): Update the access time of the device inode
81
                when you return data to the user.
82
 
83
                (random_ioctl): Wake up the random_wait channel when there
84
                are only WAIT_INPUT_BITS available.  Add more paranoia
85
                checks to make sure entropy_count doesn't go beyond the
86
                bounds of (0, POOLSIZE).  Add a few missing verify_area
87
                checks.  Add support for the RNDCLEARPOOL ioctl, which
88
                zaps the random pool.
89
 
90
                (add_timer_randomness): Wake up the random_wait
91
                channel only when there are WAIT_INPUT_BITS available.
92
 
93
                (random_select): Allow a random refresh daemon process to
94
                select on /dev/random for writing; wake up the daemon when
95
                there are less than WAIT_OUTPUT_BITS bits of randomness
96
                available.
97
 
98
Tue Apr 23 22:56:07 1996    
99
 
100
        * tty_io.c (init_dev): Change return code when user attempts to
101
                open master pty which is already open from EAGAIN to EIO,
102
                to match with BSD expectations.  EIO is more correct
103
                anyway, since EAGAIN implies that retrying will be
104
                successful --- which it might be.... Eventually!!
105
 
106
        * pty.c (pty_open, pty_close): Fix wait loop so that we don't
107
                busy loop while waiting for the master side to open.
108
                Fix tty opening/closing logic.  TTY_SLAVE_CLOSED was
109
                renamed to TTY_OTHER_CLOSED, so that the name is more
110
                descriptive.  Also fixed code so that the tty flag
111
                actually works correctly now....
112
 
113
Mon Apr  1 10:22:01 1996    
114
 
115
        * serial.c (rs_close): Cleaned up modularization changes.
116
                Remove code which forced line discipline back to N_TTY
117
                this is done in the tty upper layers, and there's no
118
                reason to do it here.  (Making this change also
119
                removed the requirement that the serial module access
120
                the internal kernel symbol "ldiscs".)
121
 
122
        * tty_io.c (tty_init): Formally register a tty_driver entry for
123
                /dev/tty (device 4, 0) and /dev/console (device 5, 0).
124
                This guarantees that major device numbers 4 and 5 will be
125
                reserved for the tty subsystem (as they have to be because
126
                of /dev/tty and /dev/console).  Removed tty_regdev, as
127
                this interface is no longer necessary.
128
 
129
Sun Mar 17 20:42:47 GMT 1996 
130
 
131
        * serial.c : modularisation (changes in linux/fs/device.c allow
132
                kerneld to automatically load the serial module).
133
 
134
        * Makefile, Config.in : serial modularisation adds.
135
 
136
        * tty_io.c : tty_init_ctty used by to register "cua" driver just
137
                for the /dev/tty device (5,0).  Added tty_regdev.
138
 
139
        * serial.c (shutdown, rs_ioctl) : when port shuts down wakeup processes
140
          waiting on delta_msr_wait. The TIOCMIWAIT ioctl returns EIO
141
          if no change was done since the time of call.
142
 
143
Sat Mar 16 14:33:13 1996 
144
 
145
        * tty_io.c (disassociate_ctty): If disassociate_ctty is called by
146
                exit, do not perform an implicit vhangup on a pty.
147
 
148
Fri Feb  9 14:15:47 1996    
149
 
150
        * serial.c (block_til_ready): Fixed another race condition which
151
                happens if a hangup happens during the open.
152
 
153
Wed Jan 10 10:08:00 1996    
154
 
155
        * serial.c (block_til_ready): Remove race condition which happened
156
                if a hangup condition happened during the setup of the
157
                UART, before rs_open() called block_til_ready().  This
158
                caused the info->count counter to be erroneously
159
                decremented.
160
 
161
        * serial.c (startup, rs_open): Remove race condition that could
162
                cause a memory leak of one page.  (Fortunately, both race
163
                conditions were relatively rare in practice.)
164
 
165
Tue Dec  5 13:21:27 1995    
166
 
167
        * serial.c (check_modem_status, rs_ioctl): Support the new
168
                ioctl()'s TIOCGICOUNT, TIOCMIWAIT.  These allow an
169
                application program to wait on a modem serial register
170
                status bit change, and to find out how many changes have
171
                taken place for the MSR bits.
172
 
173
                (rs_write): Eliminate a race condition which is introduced
174
                if it is necessary to wait for the semaphore.
175
 
176
Sat Nov  4 17:14:45 1995    
177
 
178
        * tty_io.c (tty_init): Move registration of TTY_MAJOR and
179
                TTY_AUX_MAJOR to the end, so that /proc/devices looks
180
                prettier.
181
 
182
        * pty.c (pty_init): Use new major numbers for PTY master and slave
183
                devices.  This allow us to have more than 64 pty's.  We
184
                register the old pty devices for backwards compatibility.
185
                Note that a system should either be using the old pty
186
                devices or the new pty devices --- in general, it should
187
                try to use both, since they map into the same pty table.
188
                The old pty devices are strictly for backwards compatibility.
189
 
190
Wed Oct 11 12:45:24 1995    
191
 
192
        * tty_io.c (disassociate_ctty): If disassociate_ctty is called by
193
                exit, perform an implicit vhangup on the tty.
194
 
195
        * pty.c (pty_close): When the master pty is closed, send a hangup
196
                to the slave pty.
197
                (pty_open): Use the flag TTY_SLAVE_CLOSED to test to see
198
                if there are any open slave ptys, instead of using
199
                tty->link->count.  The old method got confused if there
200
                were processes that had hung-up file descriptors on the
201
                slave tty.
202
 
203
Tue May  2 00:53:25 1995    
204
 
205
        * tty_io.c (tty_set_ldisc): Wait until the output buffer is
206
                drained before closing the old line discipline --- needed
207
                in only one case: XON/XOFF processing.
208
 
209
        * n_tty.c (n_tty_close): Don't bother waiting until the output
210
                driver is closed; in general, the line discipline
211
                shouldn't care if the hardware is finished
212
                transmitting before the line discipline terminates.
213
 
214
        * tty_io.c (release_dev): Shutdown the line discipline after
215
                decrementing the tty count variable; but set the
216
                TTY_CLOSING flag so that we know that this tty structure
217
                isn't long for this world.
218
 
219
        * tty_io.c (init_dev): Add sanity code to check to see if
220
                TTY_CLOSING is set on a tty structure; if so, something
221
                bad has happened (probably a line discipline close blocked
222
                when it shouldn't have; so do a kernel printk and then
223
                return an error).
224
 
225
Wed Apr 26 10:23:44 1995  Theodore Y. Ts'o  
226
 
227
        * tty_io.c (release_dev): Try to shutdown the line discipline
228
                *before* decrementing the tty count variable; this removes
229
                a potential race condition which occurs when the line
230
                discipline close blocks, and another process then tries
231
                open the same serial port.
232
 
233
        * serial.c (rs_hangup): When hanging up, flush the output buffer
234
                before shutting down the UART.  Otherwise the line
235
                discipline close blocks waiting for the characters to get
236
                flushed, which never happens until the serial port gets reused.
237
 
238
Wed Apr 12 08:06:16 1995  Theodore Y. Ts'o  
239
 
240
        * serial.c (do_serial_hangup, do_softint, check_modem_status,
241
                rs_init):  Hangups are now scheduled via a separate tqueue
242
                structure in the async_struct structure, tqueue_hangup.
243
                This task is pushed on to the tq_schedule queue, so that
244
                it is processed synchronously by the scheduler.
245
 
246
Sat Feb 18 12:13:51 1995  Theodore Y. Ts'o  (tytso@rt-11)
247
 
248
        * tty_io.c (disassociate_ctty, tty_open, tty_ioctl): Clear
249
                current->tty_old_pgrp field when a session leader
250
                acquires a controlling tty, and after a session leader
251
                has disassociated from a controlling tty.
252
 
253
Fri Feb 17 09:34:09 1995  Theodore Y. Ts'o  (tytso@rt-11)
254
 
255
        * serial.c (rs_interrupt_single, rs_interrupt, rs_interrupt_multi):
256
                Change the number of passes made from 64 to be 256,
257
                configurable with the #define RS_ISR_PASS_LIMIT.
258
 
259
        * serial.c (rs_init, set_serial_info, get_serial_info, rs_close):
260
                Remove support for closing_wait2.  Instead, set
261
                tty->closing and rely on the line discipline to prevent
262
                echo wars.
263
 
264
        * n_tty.c (n_tty_receive_char):  IEXTEN does not need to be
265
                enabled in order for IXANY to be active.
266
 
267
                If tty->closing is set, then only process XON and XOFF
268
                characters.
269
 
270
Sun Feb 12 23:57:48 1995  Theodore Y. Ts'o  (tytso@rt-11)
271
 
272
        * serial.c (rs_timer): Change the interrupt poll time from 60
273
                seconds to 10 seconds, configurable with the #define
274
                RS_STROBE_TIME.
275
 
276
        * serial.c (rs_interrupt_multi, startup, shutdown, rs_ioctl,
277
                set_multiport_struct, get_multiport_struct): Add
278
                provisions for a new type of interrupt service routine,
279
                which better supports multiple serial ports on a single
280
                IRQ.
281
 
282
Sun Feb  5 19:35:11 1995  Theodore Y. Ts'o  (tytso@rt-11)
283
 
284
        * tty_ioctl.c (n_tty_ioctl, set_termios, tty_wait_until_sent):
285
        * serial.c (rs_ioctl, rs_close):
286
        * cyclades.c (cy_ioctl, cy_close):
287
        * n_tty.c (n_tty_close):  Rename wait_until_sent to
288
                tty_wait_until_sent, so that it's a better name to export
289
                in ksyms.c.
290
 
291
Sat Feb  4 23:36:20 1995  Theodore Y. Ts'o  (tytso@rt-11)
292
 
293
        * serial.c (rs_close): Added missing check for closing_wait2 being
294
                ASYNC_CLOSING_WAIT_NONE.
295
 
296
Thu Jan 26 09:02:49 1995  Theodore Y. Ts'o  (tytso@rt-11)
297
 
298
        * serial.c (rs_init, set_serial_info, get_serial_info,
299
                rs_close): Support close_wait in the serial driver.
300
                This is helpful for slow devices (like serial
301
                plotters) so that their outputs don't get flushed upon
302
                device close.  This has to be configurable because
303
                normally we don't want ports to be hung up for long
304
                periods of time during a close when they are not
305
                connected to a device, or the device is powered off.
306
 
307
                The default is to wait 30 seconds; in the case of a
308
                very slow device, the close_wait timeout should be
309
                lengthened.  If it is set to 0, the kernel will wait
310
                forever for all of the data to be transmitted.
311
 
312
Thu Jan 17 01:17:20 1995  Theodore Y. Ts'o  (tytso@rt-11)
313
 
314
        * serial.c (startup, change_speed, rs_init): Add support to detect
315
                the StarTech 16650 chip.  Treat it as a 16450 for now,
316
                because of its FIFO bugs.
317
 
318
Thu Jan  5 21:21:57 1995  
319
 
320
        * serial.c: (receive_char): Added counter to prevent infinite loop
321
                when a PCMCIA serial device is ejected.
322
 
323
Thu Dec 29 17:53:48 1994    
324
 
325
        * tty_io.c (check_tty_count): New procedure which checks
326
                tty->count to make sure that it matches with the number of
327
                open file descriptors which point at the structure.  If
328
                the number doesn't match, it prints a warning message.
329
 
330
Wed Dec 28 15:41:51 1994    
331
 
332
        * tty_io.c (do_tty_hangup, disassociate_ctty): At hangup time,
333
                save the tty's current foreground process group in the
334
                session leader's task structure.  When the session leader
335
                terminates, send a SIGHUP, SIGCONT to that process group.
336
                This is not required by POSIX, but it's not prohibited
337
                either, and it appears to be the least intrusive way
338
                to fix a problem that dialup servers have with
339
                orphaned process groups caused by modem hangups.
340
 
341
Thu Dec  8 14:52:11 1994    
342
 
343
        * serial.c (rs_ioctl): Don't allow most ioctl's if the serial port
344
                isn't initialized.
345
 
346
        * serial.c (rs_close): Don't clear the IER if the serial port
347
                isn't initialized.
348
 
349
        * serial.c (block_til_ready): Don't try to block on the dialin
350
                port if the serial port isn't initialized.
351
 
352
Wed Dec  7 10:48:30 1994  Si Park (si@wimpol.demon.co.uk)
353
        * tty_io.c (tty_register_driver): Fix bug when linking onto
354
                the tty_drivers list. We now test that there are elements
355
                already on the list before setting the back link from the
356
                first element to the new driver.
357
 
358
        * tty_io.c (tty_unregister_driver): Fix bug in unlinking the
359
                specified driver from the tty_drivers list. We were not
360
                setting the back link correctly. This used to result in
361
                a dangling back link pointer and cause panics on the next
362
                call to get_tty_driver().
363
 
364
Tue Nov 29 10:21:09 1994  Theodore Y. Ts'o  (tytso@rt-11)
365
 
366
        * tty_io.c (tty_unregister_driver): Fix bug in
367
                tty_unregister_driver where the pointer to the refcount is
368
                tested, instead of the refcount itself.  This caused
369
                tty_unregister_driver to always return EBUSY.
370
 
371
Sat Nov 26 11:59:24 1994  Theodore Y. Ts'o  (tytso@rt-11)
372
 
373
        * tty_io.c (tty_ioctl): Add support for the new ioctl
374
                TIOCTTYGSTRUCT, which allow a kernel debugging program
375
                direct read access to the tty and tty_driver structures.
376
 
377
Fri Nov 25 17:26:22 1994  Theodore Y. Ts'o  (tytso@rt-11)
378
 
379
        * serial.c (rs_set_termios): Don't wake up processes blocked in
380
                open when the CLOCAL flag changes, since a blocking
381
                open only samples the CLOCAL flag once when it blocks,
382
                and doesn't check it again.  (n.b.  FreeBSD has a
383
                different behavior for blocking opens; it's not clear
384
                whether Linux or FreeBSD's interpretation is correct.
385
                POSIX doesn't give clear guidance on this issue, so
386
                this may change in the future....)
387
 
388
        * serial.c (block_til_ready): Use the correct termios structure to
389
                check the CLOCAL flag.  If the cuaXX device is active,
390
                then check the saved termios for the ttySXX device.
391
                Otherwise, use the currently active termios structure.
392
 
393
Sun Nov  6 21:05:44 1994  Theodore Y. Ts'o  (tytso@rt-11)
394
 
395
        * serial.c (change_speed): Add support for direct access of
396
                57,600 and 115,200 bps.
397
 
398
Wed Nov  2 10:32:36 1994  Theodore Y. Ts'o  (tytso@rt-11)
399
 
400
        * n_tty.c (n_tty_receive_room): Only allow excess characters
401
                through if we are in ICANON mode *and* there are other no
402
                pending lines in the buffer.  Otherwise cut and paste over
403
                4k breaks.
404
 
405
Sat Oct 29 18:17:34 1994  Theodore Y. Ts'o  (tytso@rt-11)
406
 
407
        * serial.c (rs_ioctl, get_lsr_info): Added patch suggested by Arne
408
                Riiber so that user mode programs can tell when the
409
                transmitter shift register is empty.
410
 
411
Thu Oct 27 23:14:29 1994  Theodore Y. Ts'o  (tytso@rt-11)
412
 
413
        * tty_ioctl.c (wait_until_sent): Added debugging printk statements
414
                (under the #ifdef TTY_DEBUG_WAIT_UNTIL_SENT)
415
 
416
        * serial.c (rs_interrupt, rs_interrupt_single, receive_chars,
417
                change_speed, rs_close): rs_close now disables receiver
418
                interrupts when closing the serial port.  This allows the
419
                serial port to close quickly when Linux and a modem (or a
420
                mouse) are engaged in an echo war; when closing the serial
421
                port, we now first stop listening to incoming characters,
422
                and *then* wait for the transmit buffer to drain.
423
 
424
                In order to make this change, the info->read_status_mask
425
                is now used to control what bits of the line status
426
                register are looked at in the interrupt routine in all
427
                cases; previously it was only used in receive_chars to
428
                select a few of the status bits.
429
 
430
Mon Oct 24 23:36:21 1994  Theodore Y. Ts'o  (tytso@rt-11)
431
 
432
        * serial.c (rs_close): Add a timeout to the transmitter flush
433
                loop; this is just a sanity check in case we have flaky
434
                (or non-existent-but-configured-by-the-user) hardware.
435
 
436
Fri Oct 21 09:37:23 1994  Theodore Y. Ts'o  (tytso@rt-11)
437
 
438
        * tty_io.c (tty_fasync): When asynchronous I/O is enabled, if the
439
                process or process group has not be specified yet, set it
440
                to be the tty's process group, or if that is not yet set,
441
                to the current process's pid.
442
 
443
Thu Oct 20 23:17:28 1994  Theodore Y. Ts'o  (tytso@rt-11)
444
 
445
        * n_tty.c (n_tty_receive_room): If we are doing input
446
                canonicalization, let as many characters through as
447
                possible, so that the excess characters can be "beeped".
448
 
449
Tue Oct 18 10:02:43 1994  Theodore Y. Ts'o  (tytso@rt-11)
450
 
451
        * serial.c (rs_start): Removed an incorrect '!' that was
452
                preventing transmit interrupts from being re-enabled in
453
                rs_start().  Fortunately in most cases it would be
454
                re-enabled elsewhere, but this still should be fixed
455
                correctly.
456
 
457
Sun Oct  9 23:46:03 1994  Theodore Y. Ts'o  (tytso@rt-11)
458
 
459
        * tty_io.c (do_tty_hangup): If the tty driver flags
460
                TTY_DRIVER_RESET_TERMIOS is set, then reset the termios
461
                settings back to the driver's initial configuration.  This
462
                allows the termios settings to be reset even if a process
463
                has hung up file descriptors keeping a pty's termios from
464
                being freed and reset.
465
 
466
        * tty_io.c (release_dev): Fix memory leak.  The pty's other
467
                termios structure should also be freed.
468
 
469
        * serial.c (rs_close, shutdown): Change how we wait for the
470
                transmitter to completely drain before shutting down the
471
                serial port.  We now do it by scheduling in another
472
                process instead of busy looping with the interrupts turned
473
                on.  This may eliminate some race condition problems that
474
                some people seem to be reporting.
475
 
476
Sun Sep 25 14:18:14 1994  Theodore Y. Ts'o  (tytso@rt-11)
477
 
478
        * tty_io.c (release_dev): When freeing a tty make sure that both
479
                the tty and the o_tty (if present) aren't a process's
480
                controlling tty.  (Previously, we only checked the tty.)
481
 
482
        * serial.c (change_speed): Only enable the Modem Status
483
                Interrupt for a port if CLOCAL is not set or CRTSCTS
484
                is set.  If we're not checking the carrier detect and
485
                CTS line, there's no point in enabling the modem
486
                status interrupt.  This will save spurious interrupts
487
                from slowing down systems who have terminals that
488
                don't support either line.  (Of course, if you want
489
                only one of CD and CTS support, you will need a
490
                properly wired serial cable.)
491
 
492
Thu Sep 22 08:32:48 1994  Theodore Y. Ts'o  (tytso@rt-11)
493
 
494
        * tty_io.c (do_SAK): Return if tty is null.
495
 
496
        * tty_io.c (_tty_name): Return "NULL tty" if the passed in tty is
497
                NULL.
498
 
499
Sat Sep 17 13:19:25 1994  Theodore Y. Ts'o  (tytso@rt-11)
500
 
501
        * tty_ioctl.c (n_tty_ioctl): Fix TIOCGLCKTRMIOS and
502
                TIOCSLCKTRMIOS, which were totally broken.  Remove
503
                extra indirection from argument; it should be a struct
504
                termios *, not a struct termios **.
505
                &real_tty->termios_locked should have been
506
                real_tty->termios_locked.  This caused us to be
507
                reading and writing the termios_locked structure to
508
                random places in kernel memory.
509
 
510
        * tty_io.c (release_dev): Oops!  Forgot to delete a critical kfree
511
                of the locked_termios.  This leaves the locked_termios
512
                structure pointed at a freed object.
513
 
514
Fri Sep 16 08:13:25 1994  Theodore Y. Ts'o  (tytso@rt-11)
515
 
516
        * tty_io.c (tty_open): Don't check for an exclusive open until
517
                after the device specific open routine has been called.
518
                Otherwise, the serial device ref counting will be screwed
519
                up.
520
 
521
        * serial.c (rs_open, block_til_ready): Don't set termios structure
522
                until after block_til_ready has returned successfully.
523
                Modify block_til_ready to check the normal_termios
524
                structure directly, so it doesn't rely on termios being
525
                set before it's called.
526
 
527
Thu Sep 15 23:34:01 1994  Theodore Y. Ts'o  (tytso@rt-11)
528
 
529
        * serial.c (rs_close): Turn off interrupts during rs_close() to
530
                prevent a race condition with the hangup code (which
531
                runs during a software interrupt).
532
 
533
        * tty_io.c (release_dev): Don't free the locked_termios structure;
534
                its state must be retained across device opens.
535
 
536
 
537
        * tty_io.c (tty_unregister_driver): Added function to unregister a
538
                tty driver.  (For loadable device drivers.)
539
 
540
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.