Contents of /trunk/mkinitrd-magellan/klibc/usr/klibc/jrand48.c
Parent Directory | Revision Log
Revision 532 -
(show annotations)
(download)
Sat Sep 1 22:45:15 2007 UTC (16 years, 9 months ago) by niro
File MIME type: text/plain
File size: 509 byte(s)
Sat Sep 1 22:45:15 2007 UTC (16 years, 9 months ago) by niro
File MIME type: text/plain
File size: 509 byte(s)
-import if magellan mkinitrd; it is a fork of redhats mkinitrd-5.0.8 with all magellan patches and features; deprecates magellan-src/mkinitrd
1 | /* |
2 | * jrand48.c |
3 | */ |
4 | |
5 | #include <stdlib.h> |
6 | #include <stdint.h> |
7 | |
8 | long jrand48(unsigned short xsubi[3]) |
9 | { |
10 | uint64_t x; |
11 | |
12 | /* The xsubi[] array is littleendian by spec */ |
13 | x = (uint64_t) (uint16_t) xsubi[0] + |
14 | ((uint64_t) (uint16_t) xsubi[1] << 16) + |
15 | ((uint64_t) (uint16_t) xsubi[2] << 32); |
16 | |
17 | x = (0x5deece66dULL * x) + 0xb; |
18 | |
19 | xsubi[0] = (unsigned short)(uint16_t) x; |
20 | xsubi[1] = (unsigned short)(uint16_t) (x >> 16); |
21 | xsubi[2] = (unsigned short)(uint16_t) (x >> 32); |
22 | |
23 | return (long)(int32_t) (x >> 16); |
24 | } |