~vojtech-horky/helenos/numa

« back to all changes in this revision

Viewing changes to boot/arch/ia64/loader/gefi/lib/runtime/rtstr.c

  • Committer: Martin Decky
  • Date: 2009-08-04 11:19:19 UTC
  • Revision ID: martin@uranus.dsrg.hide.ms.mff.cuni.cz-20090804111919-evyclddlr3v5lhmp
Initial import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*++
 
2
 
 
3
Copyright (c) 1998  Intel Corporation
 
4
 
 
5
Module Name:
 
6
 
 
7
    str.c
 
8
 
 
9
Abstract:
 
10
 
 
11
    String runtime functions
 
12
 
 
13
 
 
14
Revision History
 
15
 
 
16
--*/
 
17
 
 
18
#include "lib.h"
 
19
 
 
20
#pragma RUNTIME_CODE(RtAcquireLock)
 
21
INTN
 
22
RUNTIMEFUNCTION
 
23
RtStrCmp (
 
24
    IN CHAR16   *s1,
 
25
    IN CHAR16   *s2
 
26
    )
 
27
// compare strings
 
28
{
 
29
    while (*s1) {
 
30
        if (*s1 != *s2) {
 
31
            break;
 
32
        }
 
33
 
 
34
        s1 += 1;
 
35
        s2 += 1;
 
36
    }
 
37
 
 
38
    return *s1 - *s2;
 
39
}
 
40
 
 
41
#pragma RUNTIME_CODE(RtStrCpy)
 
42
VOID
 
43
RUNTIMEFUNCTION
 
44
RtStrCpy (
 
45
    IN CHAR16   *Dest,
 
46
    IN CHAR16   *Src
 
47
    )
 
48
// copy strings
 
49
{
 
50
    while (*Src) {
 
51
        *(Dest++) = *(Src++);
 
52
    }
 
53
    *Dest = 0;
 
54
}
 
55
 
 
56
#pragma RUNTIME_CODE(RtStrCat)
 
57
VOID
 
58
RUNTIMEFUNCTION
 
59
RtStrCat (
 
60
    IN CHAR16   *Dest,
 
61
    IN CHAR16   *Src
 
62
    )
 
63
{   
 
64
    RtStrCpy(Dest+StrLen(Dest), Src);
 
65
}
 
66
 
 
67
#pragma RUNTIME_CODE(RtStrLen)
 
68
UINTN
 
69
RUNTIMEFUNCTION
 
70
RtStrLen (
 
71
    IN CHAR16   *s1
 
72
    )
 
73
// string length
 
74
{
 
75
    UINTN        len;
 
76
    
 
77
    for (len=0; *s1; s1+=1, len+=1) ;
 
78
    return len;
 
79
}
 
80
 
 
81
#pragma RUNTIME_CODE(RtStrSize)
 
82
UINTN
 
83
RUNTIMEFUNCTION
 
84
RtStrSize (
 
85
    IN CHAR16   *s1
 
86
    )
 
87
// string size
 
88
{
 
89
    UINTN        len;
 
90
    
 
91
    for (len=0; *s1; s1+=1, len+=1) ;
 
92
    return (len + 1) * sizeof(CHAR16);
 
93
}
 
94
 
 
95
#pragma RUNTIME_CODE(RtBCDtoDecimal)
 
96
UINT8
 
97
RUNTIMEFUNCTION
 
98
RtBCDtoDecimal(
 
99
    IN  UINT8 BcdValue
 
100
    )
 
101
{
 
102
    UINTN   High, Low;
 
103
 
 
104
    High    = BcdValue >> 4;
 
105
    Low     = BcdValue - (High << 4);
 
106
 
 
107
    return ((UINT8)(Low + (High * 10)));
 
108
}
 
109
 
 
110
 
 
111
#pragma RUNTIME_CODE(RtDecimaltoBCD)
 
112
UINT8
 
113
RUNTIMEFUNCTION
 
114
RtDecimaltoBCD (
 
115
    IN  UINT8 DecValue
 
116
    )
 
117
{
 
118
    UINTN   High, Low;
 
119
 
 
120
    High    = DecValue / 10;
 
121
    Low     = DecValue - (High * 10);
 
122
 
 
123
    return ((UINT8)(Low + (High << 4)));
 
124
}
 
125
 
 
126