Magellan Linux

Annotation of /trunk/mkinitrd-magellan/klibc/usr/klibc/jrand48.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 532 - (hide 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)
-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 niro 532 /*
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     }