• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /barrelfish-2018-10-04/lib/acpica/tests/aslts/src/runtime/collections/functional/manipulation/
1/*
2 * Some or all of this work - Copyright (c) 2006 - 2016, Intel Corp.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without modification,
6 * are permitted provided that the following conditions are met:
7 *
8 * Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer.
10 * Redistributions in binary form must reproduce the above copyright notice,
11 * this list of conditions and the following disclaimer in the documentation
12 * and/or other materials provided with the distribution.
13 * Neither the name of Intel Corporation nor the names of its contributors
14 * may be used to endorse or promote products derived from this software
15 * without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
26 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29/*
30 * Data type conversion and manipulation
31 */
32
33// Convert data to integer
34
35Name(z047, 47)
36
37// Integer
38
39// 32-bit
40Name(p300, Package()
41{
42	0,
43	0x81,
44	0x8232,
45	0x76543201,
46	0xf89abcde,
47	0xffffffff,
48})
49
50// 64-bit
51Name(p302, Package()
52{
53	0x8123456789,
54	0x8cdae2376890,
55	0x76543201f89abcde,
56	0xf89abcde76543201,
57	0xffffffffffffffff,
58})
59
60// Hexadecimal numeric String
61
62// 32-bit
63Name(p304, Package()
64{
65	"0x0",		// 0
66	"0x00",
67	"0x1",
68	"0x83",
69	"0x456",
70	"0x8232",
71	"0xbcdef",
72	"0x123456",
73	"0x789abcd",
74	"0xffffffff",
75	"0x01234567",	// 10
76	"0X12345678",
77	"0x23456789",
78	"0x3456789a",
79	"0x456789ab",
80	"0x56789abc",
81	"0x6789abcd",
82	"0x789abcde",
83	"0x89abcdef",
84	"0x9abcdefA",
85	"0xabcdefAB",	// 20
86	"0xbcdefABC",
87	"0xcdefABCD",
88	"0xdefABCDE",
89	"0xefABCDEF",
90	"0xfABCDEF0",
91	"0xABCDEF01",
92	"0xBCDEF012",
93	"0xCDEF0123",
94	"0xDEF01234",
95	"0xEF012345",	// 30
96	"0xF0123456",
97})
98
99Name(p305, Package()
100{
101	0,
102	0,
103	0x1,
104	0x83,
105	0x456,
106	0x8232,
107	0xbcdef,
108	0x123456,
109	0x789abcd,
110	0xffffffff,
111	0X1234567,
112	0x12345678,
113	0x23456789,
114	0x3456789a,
115	0x456789ab,
116	0x56789abc,
117	0x6789abcd,
118	0x789abcde,
119	0x89abcdef,
120	0x9abcdefa,
121	0xabcdefab,
122	0xbcdefabc,
123	0xcdefabcd,
124	0xdefabcde,
125	0xefabcdef,
126	0xfabcdef0,
127	0xabcdef01,
128	0xbcdef012,
129	0xcdef0123,
130	0xdef01234,
131	0xef012345,
132	0xf0123456,
133})
134
135// 64-bit
136Name(p306, Package()
137{
138	"0x123456789",		// 0
139	"0x8123456789",
140	"0xabcdef01234",
141	"0x876543210abc",
142	"0x1234567abcdef",
143	"0x8234567abcdef1",
144	"0x6789abcdef01234",
145	"0x76543201f89abcde",
146	"0xf89abcde76543201",
147	"0xffffffffffffffff",
148	"0X0123456789abcdef",	// 10
149	"0x123456789abcdefA",
150	"0x23456789abcdefAB",
151	"0x3456789abcdefABC",
152	"0x456789abcdefABCD",
153	"0x56789abcdefABCDE",
154	"0x6789abcdefABCDEF",
155	"0x789abcdefABCDEF0",
156	"0x89abcdefABCDEF01",
157	"0x9abcdefABCDEF012",
158	"0xabcdefABCDEF0123",	// 20
159	"0xbcdefABCDEF01234",
160	"0xcdefABCDEF012345",
161	"0xdefABCDEF0123456",
162	"0xefABCDEF01234567",
163	"0xfABCDEF012345678",
164	"0xABCDEF0123456789",
165	"0xBCDEF0123456789a",
166	"0xCDEF0123456789ab",
167	"0xDEF0123456789abc",
168	"0xEF0123456789abcd",	// 30
169	"0xF0123456789abcde",
170})
171
172Name(p307, Package()
173{
174	0x123456789,
175	0x8123456789,
176	0xabcdef01234,
177	0x876543210abc,
178	0x1234567abcdef,
179	0x8234567abcdef1,
180	0x6789abcdef01234,
181	0x76543201f89abcde,
182	0xf89abcde76543201,
183	0xffffffffffffffff,
184	0x0123456789abcdef,
185	0x123456789abcdefa,
186	0x23456789abcdefab,
187	0x3456789abcdefabc,
188	0x456789abcdefabcd,
189	0x56789abcdefabcde,
190	0x6789abcdefabcdef,
191	0x789abcdefabcdef0,
192	0x89abcdefabcdef01,
193	0x9abcdefabcdef012,
194	0xabcdefabcdef0123,
195	0xbcdefabcdef01234,
196	0xcdefabcdef012345,
197	0xdefabcdef0123456,
198	0xefabcdef01234567,
199	0xfabcdef012345678,
200	0xabcdef0123456789,
201	0xbcdef0123456789a,
202	0xcdef0123456789ab,
203	0xdef0123456789abc,
204	0xef0123456789abcd,
205	0xf0123456789abcde,
206})
207
208// Decimal numeric String
209
210// 32-bit
211Name(p308, Package()
212{
213	"0",
214	"12",
215	"345",
216	"6789",
217	"12345",
218	"678901",
219	"2345678",
220	"90123456",
221	"789012345",
222	"4294967295",	// == "0xffffffff"
223	"4294967295",	// == "0xffffffff"
224	"0123456789",
225	"1234567890",
226	"2345678901",
227	"3456789012",
228	"1567890123",
229	"2678901234",
230	"3789012345",
231	"1890123456",
232	"2901234567",
233	"3012345678",
234})
235
236Name(p309, Package()
237{
238	0,
239	12,
240	345,
241	6789,
242	12345,
243	678901,
244	2345678,
245	90123456,
246	789012345,
247	4294967295,
248	0xffffffff,
249	123456789,
250	1234567890,
251	2345678901,
252	3456789012,
253	1567890123,
254	2678901234,
255	3789012345,
256	1890123456,
257	2901234567,
258	3012345678,
259})
260
261// 64-bit
262Name(p310, Package()
263{
264	"30123456790",
265	"123456789012",
266	"3456789012345",
267	"26789012346789",
268	"123456789012345",
269	"3789012345678901",
270	"23456789012345678",
271	"301234567890123456",
272	"1890123456789012345",
273	"18446744073709551615",	// == "0xffffffffffffffff"
274	"18446744073709551615",	// == "0xffffffffffffffff"
275	"01234567890123456789",
276	"12345678901234567890",
277	"13456789012345678901",
278	"14567890123456789012",
279	"15678901231567890123",
280	"16789012342678901234",
281	"17890123453789012345",
282	"18301234561890123456",
283	"18012345672901234567",
284	"10123456783012345678",
285})
286
287Name(p311, Package()
288{
289	30123456790,
290	123456789012,
291	3456789012345,
292	26789012346789,
293	123456789012345,
294	3789012345678901,
295	23456789012345678,
296	301234567890123456,
297	1890123456789012345,
298	18446744073709551615,
299	0xffffffffffffffff,
300	1234567890123456789,
301	12345678901234567890,
302	13456789012345678901,
303	14567890123456789012,
304	15678901231567890123,
305	16789012342678901234,
306	17890123453789012345,
307	18301234561890123456,
308	18012345672901234567,
309	10123456783012345678,
310})
311
312// Buffer
313
314// 32-bit
315Name(p312, Package()
316{
317	// buffer, 32-bit integer
318	Buffer(1) {0x81},
319	Buffer(2) {0x82, 0x83},
320	Buffer(3) {0x84, 0x85, 0x86},
321	Buffer(4) {0x87, 0x88, 0x89, 0x8a},
322	// for 32-bit mode only
323	Buffer(5) {0x8b, 0x8c, 0x8d, 0x8e, 0x8f},
324})
325
326Name(p313, Package()
327{
328	0x81,
329	0x8382,
330	0x868584,
331	0x8a898887,
332	0x8e8d8c8b,
333})
334
335// 64-bit
336Name(p314, Package()
337{
338	Buffer(5) {0x85, 0x84, 0x83, 0x82, 0x81},
339	Buffer(6) {0x8b, 0x8a, 0x89, 0x88, 0x87, 0x86},
340	Buffer(7) {0x82, 0x81, 0x80, 0x8f, 0x8e, 0x8d, 0x8c},
341	Buffer(8) {0x8a, 0x89, 0x88, 0x87, 0x86, 0x85, 0x84, 0x83},
342	Buffer(9) {0x83, 0x82, 0x81, 0x80, 0x8f, 0x8e, 0x8d, 0x8c, 0x8b},
343})
344
345Name(p315, Package()
346{
347	// buffer, 32-bit integer
348	0x8182838485,
349	0x868788898a8b,
350	0x8c8d8e8f808182,
351	0x838485868788898a,
352	0x8c8d8e8f80818283,
353})
354
355// Run-method
356Method(TOI0,, Serialized)
357{
358	Name(ts, "TOI0")
359
360	Store("TEST: TOI0, Convert data to integer", Debug)
361
362	// From integer
363	if (LEqual(F64, 1)) {
364		m302(ts, 6, "p300", p300, p300, 0)
365		m302(ts, 5, "p302", p302, p302, 0)
366	} else {
367		m302(ts, 6, "p300", p300, p300, 0)
368	}
369
370	// From hexadecimal numeric string
371	if (LEqual(F64, 1)) {
372		m302(ts, 32, "p304", p304, p305, 0)
373		m302(ts, 32, "p306", p306, p307, 0)
374	} else {
375		m302(ts, 32, "p304", p304, p305, 0)
376	}
377
378	// From decimal numeric string
379	if (LEqual(F64, 1)) {
380		m302(ts, 21, "p308", p308, p309, 0)
381		m302(ts, 21, "p310", p310, p311, 0)
382	} else {
383		m302(ts, 21, "p308", p308, p309, 0)
384	}
385
386	// From buffer
387	if (LEqual(F64, 1)) {
388		m302(ts, 4, "p312", p312, p313, 0)
389		m302(ts, 5, "p314", p314, p315, 0)
390	} else {
391		m302(ts, 5, "p312", p312, p313, 0)
392	}
393
394	// Suppression of zeroes
395
396	if (y602) {
397		CH03(ts, z047, 0, 0, 0)
398		Store("0x0123456789abcdefa", Local0)
399		ToInteger(Local0, Local2)
400		CH04(ts, 0, 34, z047, 1, 0, 0)
401
402		CH03(ts, z047, 2, 0, 0)
403		Store("0x000123456789abcdefa", Local0)
404		ToInteger(Local0, Local2)
405		CH04(ts, 0, 34, z047, 3, 0, 0)
406	} else {
407		Store("0x0123456789abcdefa", Local0)
408		Store(0x123456789abcdefa, Local1)
409		ToInteger(Local0, Local2)
410		if (LNotEqual(Local2, Local1)) {
411			err(ts, z047, 4, 0, 0, Local0, 0)
412		}
413
414		Store("0x000123456789abcdefa", Local0)
415		ToInteger(Local0, Local2)
416		if (LNotEqual(Local2, Local1)) {
417			err(ts, z047, 5, 0, 0, Local0, 0)
418		}
419	}
420}
421