amlresrc.h revision 138287
1100966Siwasaki
2100966Siwasaki/******************************************************************************
3100966Siwasaki *
4100966Siwasaki * Module Name: amlresrc.h - AML resource descriptors
5138287Smarks *              $Revision: 25 $
6100966Siwasaki *
7100966Siwasaki *****************************************************************************/
8100966Siwasaki
9100966Siwasaki/******************************************************************************
10100966Siwasaki *
11100966Siwasaki * 1. Copyright Notice
12100966Siwasaki *
13126372Snjl * Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp.
14100966Siwasaki * All rights reserved.
15100966Siwasaki *
16100966Siwasaki * 2. License
17100966Siwasaki *
18100966Siwasaki * 2.1. This is your license from Intel Corp. under its intellectual property
19100966Siwasaki * rights.  You may have additional license terms from the party that provided
20100966Siwasaki * you this software, covering your right to use that party's intellectual
21100966Siwasaki * property rights.
22100966Siwasaki *
23100966Siwasaki * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
24100966Siwasaki * copy of the source code appearing in this file ("Covered Code") an
25100966Siwasaki * irrevocable, perpetual, worldwide license under Intel's copyrights in the
26100966Siwasaki * base code distributed originally by Intel ("Original Intel Code") to copy,
27100966Siwasaki * make derivatives, distribute, use and display any portion of the Covered
28100966Siwasaki * Code in any form, with the right to sublicense such rights; and
29100966Siwasaki *
30100966Siwasaki * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
31100966Siwasaki * license (with the right to sublicense), under only those claims of Intel
32100966Siwasaki * patents that are infringed by the Original Intel Code, to make, use, sell,
33100966Siwasaki * offer to sell, and import the Covered Code and derivative works thereof
34100966Siwasaki * solely to the minimum extent necessary to exercise the above copyright
35100966Siwasaki * license, and in no event shall the patent license extend to any additions
36100966Siwasaki * to or modifications of the Original Intel Code.  No other license or right
37100966Siwasaki * is granted directly or by implication, estoppel or otherwise;
38100966Siwasaki *
39100966Siwasaki * The above copyright and patent license is granted only if the following
40100966Siwasaki * conditions are met:
41100966Siwasaki *
42100966Siwasaki * 3. Conditions
43100966Siwasaki *
44100966Siwasaki * 3.1. Redistribution of Source with Rights to Further Distribute Source.
45100966Siwasaki * Redistribution of source code of any substantial portion of the Covered
46100966Siwasaki * Code or modification with rights to further distribute source must include
47100966Siwasaki * the above Copyright Notice, the above License, this list of Conditions,
48100966Siwasaki * and the following Disclaimer and Export Compliance provision.  In addition,
49100966Siwasaki * Licensee must cause all Covered Code to which Licensee contributes to
50100966Siwasaki * contain a file documenting the changes Licensee made to create that Covered
51100966Siwasaki * Code and the date of any change.  Licensee must include in that file the
52100966Siwasaki * documentation of any changes made by any predecessor Licensee.  Licensee
53100966Siwasaki * must include a prominent statement that the modification is derived,
54100966Siwasaki * directly or indirectly, from Original Intel Code.
55100966Siwasaki *
56100966Siwasaki * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
57100966Siwasaki * Redistribution of source code of any substantial portion of the Covered
58100966Siwasaki * Code or modification without rights to further distribute source must
59100966Siwasaki * include the following Disclaimer and Export Compliance provision in the
60100966Siwasaki * documentation and/or other materials provided with distribution.  In
61100966Siwasaki * addition, Licensee may not authorize further sublicense of source of any
62100966Siwasaki * portion of the Covered Code, and must include terms to the effect that the
63100966Siwasaki * license from Licensee to its licensee is limited to the intellectual
64100966Siwasaki * property embodied in the software Licensee provides to its licensee, and
65100966Siwasaki * not to intellectual property embodied in modifications its licensee may
66100966Siwasaki * make.
67100966Siwasaki *
68100966Siwasaki * 3.3. Redistribution of Executable. Redistribution in executable form of any
69100966Siwasaki * substantial portion of the Covered Code or modification must reproduce the
70100966Siwasaki * above Copyright Notice, and the following Disclaimer and Export Compliance
71100966Siwasaki * provision in the documentation and/or other materials provided with the
72100966Siwasaki * distribution.
73100966Siwasaki *
74100966Siwasaki * 3.4. Intel retains all right, title, and interest in and to the Original
75100966Siwasaki * Intel Code.
76100966Siwasaki *
77100966Siwasaki * 3.5. Neither the name Intel nor any other trademark owned or controlled by
78100966Siwasaki * Intel shall be used in advertising or otherwise to promote the sale, use or
79100966Siwasaki * other dealings in products derived from or relating to the Covered Code
80100966Siwasaki * without prior written authorization from Intel.
81100966Siwasaki *
82100966Siwasaki * 4. Disclaimer and Export Compliance
83100966Siwasaki *
84100966Siwasaki * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
85100966Siwasaki * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
86100966Siwasaki * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
87100966Siwasaki * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
88100966Siwasaki * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
89100966Siwasaki * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
90100966Siwasaki * PARTICULAR PURPOSE.
91100966Siwasaki *
92100966Siwasaki * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
93100966Siwasaki * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
94100966Siwasaki * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
95100966Siwasaki * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
96100966Siwasaki * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
97100966Siwasaki * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
98100966Siwasaki * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
99100966Siwasaki * LIMITED REMEDY.
100100966Siwasaki *
101100966Siwasaki * 4.3. Licensee shall not export, either directly or indirectly, any of this
102100966Siwasaki * software or system incorporating such software without first obtaining any
103100966Siwasaki * required license or other approval from the U. S. Department of Commerce or
104100966Siwasaki * any other agency or department of the United States Government.  In the
105100966Siwasaki * event Licensee exports any such software from the United States or
106100966Siwasaki * re-exports any such software from a foreign destination, Licensee shall
107100966Siwasaki * ensure that the distribution and export/re-export of the software is in
108100966Siwasaki * compliance with all laws, regulations, orders, or other restrictions of the
109100966Siwasaki * U.S. Export Administration Regulations. Licensee agrees that neither it nor
110100966Siwasaki * any of its subsidiaries will export/re-export any technical data, process,
111100966Siwasaki * software, or service, directly or indirectly, to any country for which the
112100966Siwasaki * United States government or any agency thereof requires an export license,
113100966Siwasaki * other governmental approval, or letter of assurance, without first obtaining
114100966Siwasaki * such license, approval or letter.
115100966Siwasaki *
116100966Siwasaki *****************************************************************************/
117100966Siwasaki
118100966Siwasaki
119100966Siwasaki#ifndef __AMLRESRC_H
120100966Siwasaki#define __AMLRESRC_H
121100966Siwasaki
122100966Siwasaki
123100966Siwasaki#define ASL_RESNAME_ADDRESS                     "_ADR"
124100966Siwasaki#define ASL_RESNAME_ALIGNMENT                   "_ALN"
125100966Siwasaki#define ASL_RESNAME_ADDRESSSPACE                "_ASI"
126100966Siwasaki#define ASL_RESNAME_BASEADDRESS                 "_BAS"
127100966Siwasaki#define ASL_RESNAME_BUSMASTER                   "_BM_"  /* Master(1), Slave(0) */
128100966Siwasaki#define ASL_RESNAME_DECODE                      "_DEC"
129100966Siwasaki#define ASL_RESNAME_DMA                         "_DMA"
130100966Siwasaki#define ASL_RESNAME_DMATYPE                     "_TYP"  /* Compatible(0), A(1), B(2), F(3) */
131100966Siwasaki#define ASL_RESNAME_GRANULARITY                 "_GRA"
132100966Siwasaki#define ASL_RESNAME_INTERRUPT                   "_INT"
133100966Siwasaki#define ASL_RESNAME_INTERRUPTLEVEL              "_LL_"  /* ActiveLo(1), ActiveHi(0) */
134100966Siwasaki#define ASL_RESNAME_INTERRUPTSHARE              "_SHR"  /* Shareable(1), NoShare(0) */
135100966Siwasaki#define ASL_RESNAME_INTERRUPTTYPE               "_HE_"  /* Edge(1), Level(0) */
136100966Siwasaki#define ASL_RESNAME_LENGTH                      "_LEN"
137100966Siwasaki#define ASL_RESNAME_MEMATTRIBUTES               "_MTP"  /* Memory(0), Reserved(1), ACPI(2), NVS(3) */
138100966Siwasaki#define ASL_RESNAME_MEMTYPE                     "_MEM"  /* NonCache(0), Cacheable(1) Cache+combine(2), Cache+prefetch(3) */
139100966Siwasaki#define ASL_RESNAME_MAXADDR                     "_MAX"
140100966Siwasaki#define ASL_RESNAME_MINADDR                     "_MIN"
141100966Siwasaki#define ASL_RESNAME_MAXTYPE                     "_MAF"
142100966Siwasaki#define ASL_RESNAME_MINTYPE                     "_MIF"
143100966Siwasaki#define ASL_RESNAME_REGISTERBITOFFSET           "_RBO"
144100966Siwasaki#define ASL_RESNAME_REGISTERBITWIDTH            "_RBW"
145100966Siwasaki#define ASL_RESNAME_RANGETYPE                   "_RNG"
146100966Siwasaki#define ASL_RESNAME_READWRITETYPE               "_RW_"  /* ReadOnly(0), Writeable (1) */
147100966Siwasaki#define ASL_RESNAME_TRANSLATION                 "_TRA"
148100966Siwasaki#define ASL_RESNAME_TRANSTYPE                   "_TRS"  /* Sparse(1), Dense(0) */
149100966Siwasaki#define ASL_RESNAME_TYPE                        "_TTP"  /* Translation(1), Static (0) */
150100966Siwasaki#define ASL_RESNAME_XFERTYPE                    "_SIZ"  /* 8(0), 8And16(1), 16(2) */
151100966Siwasaki
152100966Siwasaki
153100966Siwasaki/* Default sizes for "small" resource descriptors */
154100966Siwasaki
155100966Siwasaki#define ASL_RDESC_IRQ_SIZE                      0x02
156100966Siwasaki#define ASL_RDESC_DMA_SIZE                      0x02
157100966Siwasaki#define ASL_RDESC_ST_DEPEND_SIZE                0x00
158100966Siwasaki#define ASL_RDESC_END_DEPEND_SIZE               0x00
159100966Siwasaki#define ASL_RDESC_IO_SIZE                       0x07
160100966Siwasaki#define ASL_RDESC_FIXED_IO_SIZE                 0x03
161100966Siwasaki#define ASL_RDESC_END_TAG_SIZE                  0x01
162100966Siwasaki
163100966Siwasaki
164100966Siwasakitypedef struct asl_resource_node
165100966Siwasaki{
166100966Siwasaki    UINT32                      BufferLength;
167100966Siwasaki    void                        *Buffer;
168100966Siwasaki    struct asl_resource_node    *Next;
169100966Siwasaki
170100966Siwasaki} ASL_RESOURCE_NODE;
171100966Siwasaki
172100966Siwasaki
173100966Siwasaki/*
174100966Siwasaki * Resource descriptors defined in the ACPI specification.
175100966Siwasaki *
176138287Smarks * Packing/alignment must be BYTE because these descriptors
177100966Siwasaki * are used to overlay the AML byte stream.
178100966Siwasaki */
179100966Siwasaki#pragma pack(1)
180100966Siwasaki
181100966Siwasakitypedef struct asl_irq_format_desc
182100966Siwasaki{
183100966Siwasaki    UINT8                       DescriptorType;
184100966Siwasaki    UINT16                      IrqMask;
185100966Siwasaki    UINT8                       Flags;
186100966Siwasaki
187100966Siwasaki} ASL_IRQ_FORMAT_DESC;
188100966Siwasaki
189100966Siwasaki
190100966Siwasakitypedef struct asl_irq_noflags_desc
191100966Siwasaki{
192100966Siwasaki    UINT8                       DescriptorType;
193100966Siwasaki    UINT16                      IrqMask;
194100966Siwasaki
195100966Siwasaki} ASL_IRQ_NOFLAGS_DESC;
196100966Siwasaki
197100966Siwasaki
198100966Siwasakitypedef struct asl_dma_format_desc
199100966Siwasaki{
200100966Siwasaki    UINT8                       DescriptorType;
201100966Siwasaki    UINT8                       DmaChannelMask;
202100966Siwasaki    UINT8                       Flags;
203100966Siwasaki
204100966Siwasaki} ASL_DMA_FORMAT_DESC;
205100966Siwasaki
206100966Siwasaki
207100966Siwasakitypedef struct asl_start_dependent_desc
208100966Siwasaki{
209100966Siwasaki    UINT8                       DescriptorType;
210100966Siwasaki    UINT8                       Flags;
211100966Siwasaki
212100966Siwasaki} ASL_START_DEPENDENT_DESC;
213100966Siwasaki
214100966Siwasaki
215100966Siwasakitypedef struct asl_start_dependent_noprio_desc
216100966Siwasaki{
217100966Siwasaki    UINT8                       DescriptorType;
218100966Siwasaki
219100966Siwasaki} ASL_START_DEPENDENT_NOPRIO_DESC;
220100966Siwasaki
221100966Siwasaki
222100966Siwasakitypedef struct asl_end_dependent_desc
223100966Siwasaki{
224100966Siwasaki    UINT8                       DescriptorType;
225100966Siwasaki
226100966Siwasaki} ASL_END_DEPENDENT_DESC;
227100966Siwasaki
228100966Siwasaki
229100966Siwasakitypedef struct asl_io_port_desc
230100966Siwasaki{
231100966Siwasaki    UINT8                       DescriptorType;
232100966Siwasaki    UINT8                       Information;
233100966Siwasaki    UINT16                      AddressMin;
234100966Siwasaki    UINT16                      AddressMax;
235100966Siwasaki    UINT8                       Alignment;
236100966Siwasaki    UINT8                       Length;
237100966Siwasaki
238100966Siwasaki} ASL_IO_PORT_DESC;
239100966Siwasaki
240100966Siwasaki
241100966Siwasakitypedef struct asl_fixed_io_port_desc
242100966Siwasaki{
243100966Siwasaki    UINT8                       DescriptorType;
244100966Siwasaki    UINT16                      BaseAddress;
245100966Siwasaki    UINT8                       Length;
246100966Siwasaki
247100966Siwasaki} ASL_FIXED_IO_PORT_DESC;
248100966Siwasaki
249100966Siwasaki
250100966Siwasakitypedef struct asl_small_vendor_desc
251100966Siwasaki{
252100966Siwasaki    UINT8                       DescriptorType;
253100966Siwasaki    UINT8                       VendorDefined[7];
254100966Siwasaki
255100966Siwasaki} ASL_SMALL_VENDOR_DESC;
256100966Siwasaki
257100966Siwasaki
258100966Siwasakitypedef struct asl_end_tag_desc
259100966Siwasaki{
260100966Siwasaki    UINT8                       DescriptorType;
261100966Siwasaki    UINT8                       Checksum;
262100966Siwasaki
263100966Siwasaki} ASL_END_TAG_DESC;
264100966Siwasaki
265100966Siwasaki
266100966Siwasaki/* LARGE descriptors */
267100966Siwasaki
268100966Siwasakitypedef struct asl_memory_24_desc
269100966Siwasaki{
270100966Siwasaki    UINT8                       DescriptorType;
271100966Siwasaki    UINT16                      Length;
272100966Siwasaki    UINT8                       Information;
273100966Siwasaki    UINT16                      AddressMin;
274100966Siwasaki    UINT16                      AddressMax;
275100966Siwasaki    UINT16                      Alignment;
276100966Siwasaki    UINT16                      RangeLength;
277100966Siwasaki
278100966Siwasaki} ASL_MEMORY_24_DESC;
279100966Siwasaki
280100966Siwasaki
281100966Siwasakitypedef struct asl_large_vendor_desc
282100966Siwasaki{
283100966Siwasaki    UINT8                       DescriptorType;
284100966Siwasaki    UINT16                      Length;
285100966Siwasaki    UINT8                       VendorDefined[1];
286100966Siwasaki
287100966Siwasaki} ASL_LARGE_VENDOR_DESC;
288100966Siwasaki
289100966Siwasaki
290100966Siwasakitypedef struct asl_memory_32_desc
291100966Siwasaki{
292100966Siwasaki    UINT8                       DescriptorType;
293100966Siwasaki    UINT16                      Length;
294100966Siwasaki    UINT8                       Information;
295100966Siwasaki    UINT32                      AddressMin;
296100966Siwasaki    UINT32                      AddressMax;
297100966Siwasaki    UINT32                      Alignment;
298100966Siwasaki    UINT32                      RangeLength;
299100966Siwasaki
300100966Siwasaki} ASL_MEMORY_32_DESC;
301100966Siwasaki
302100966Siwasaki
303100966Siwasakitypedef struct asl_fixed_memory_32_desc
304100966Siwasaki{
305100966Siwasaki    UINT8                       DescriptorType;
306100966Siwasaki    UINT16                      Length;
307100966Siwasaki    UINT8                       Information;
308100966Siwasaki    UINT32                      BaseAddress;
309100966Siwasaki    UINT32                      RangeLength;
310100966Siwasaki
311100966Siwasaki} ASL_FIXED_MEMORY_32_DESC;
312100966Siwasaki
313100966Siwasaki
314100966Siwasakitypedef struct asl_qword_address_desc
315100966Siwasaki{
316100966Siwasaki    UINT8                       DescriptorType;
317100966Siwasaki    UINT16                      Length;
318100966Siwasaki    UINT8                       ResourceType;
319100966Siwasaki    UINT8                       Flags;
320100966Siwasaki    UINT8                       SpecificFlags;
321100966Siwasaki    UINT64                      Granularity;
322100966Siwasaki    UINT64                      AddressMin;
323100966Siwasaki    UINT64                      AddressMax;
324100966Siwasaki    UINT64                      TranslationOffset;
325100966Siwasaki    UINT64                      AddressLength;
326100966Siwasaki    UINT8                       OptionalFields[2];
327100966Siwasaki
328100966Siwasaki} ASL_QWORD_ADDRESS_DESC;
329100966Siwasaki
330100966Siwasaki
331100966Siwasakitypedef struct asl_dword_address_desc
332100966Siwasaki{
333100966Siwasaki    UINT8                       DescriptorType;
334100966Siwasaki    UINT16                      Length;
335100966Siwasaki    UINT8                       ResourceType;
336100966Siwasaki    UINT8                       Flags;
337100966Siwasaki    UINT8                       SpecificFlags;
338100966Siwasaki    UINT32                      Granularity;
339100966Siwasaki    UINT32                      AddressMin;
340100966Siwasaki    UINT32                      AddressMax;
341100966Siwasaki    UINT32                      TranslationOffset;
342100966Siwasaki    UINT32                      AddressLength;
343100966Siwasaki    UINT8                       OptionalFields[2];
344100966Siwasaki
345100966Siwasaki} ASL_DWORD_ADDRESS_DESC;
346100966Siwasaki
347100966Siwasaki
348100966Siwasakitypedef struct asl_word_address_desc
349100966Siwasaki{
350100966Siwasaki    UINT8                       DescriptorType;
351100966Siwasaki    UINT16                      Length;
352100966Siwasaki    UINT8                       ResourceType;
353100966Siwasaki    UINT8                       Flags;
354100966Siwasaki    UINT8                       SpecificFlags;
355100966Siwasaki    UINT16                      Granularity;
356100966Siwasaki    UINT16                      AddressMin;
357100966Siwasaki    UINT16                      AddressMax;
358100966Siwasaki    UINT16                      TranslationOffset;
359100966Siwasaki    UINT16                      AddressLength;
360100966Siwasaki    UINT8                       OptionalFields[2];
361100966Siwasaki
362100966Siwasaki} ASL_WORD_ADDRESS_DESC;
363100966Siwasaki
364100966Siwasaki
365100966Siwasakitypedef struct asl_extended_xrupt_desc
366100966Siwasaki{
367100966Siwasaki    UINT8                       DescriptorType;
368100966Siwasaki    UINT16                      Length;
369100966Siwasaki    UINT8                       Flags;
370100966Siwasaki    UINT8                       TableLength;
371100966Siwasaki    UINT32                      InterruptNumber[1];
372100966Siwasaki    /* ResSourceIndex, ResSource optional fields follow */
373100966Siwasaki
374100966Siwasaki} ASL_EXTENDED_XRUPT_DESC;
375100966Siwasaki
376100966Siwasaki
377100966Siwasakitypedef struct asl_general_register_desc
378100966Siwasaki{
379100966Siwasaki    UINT8                       DescriptorType;
380100966Siwasaki    UINT16                      Length;
381100966Siwasaki    UINT8                       AddressSpaceId;
382100966Siwasaki    UINT8                       BitWidth;
383100966Siwasaki    UINT8                       BitOffset;
384100966Siwasaki    UINT8                       Reserved;
385100966Siwasaki    UINT64                      Address;
386100966Siwasaki
387100966Siwasaki} ASL_GENERAL_REGISTER_DESC;
388100966Siwasaki
389100966Siwasaki/* restore default alignment */
390100966Siwasaki
391100966Siwasaki#pragma pack()
392100966Siwasaki
393138287Smarks/* Union of all resource descriptors, so we can allocate the worst case */
394100966Siwasaki
395100966Siwasakitypedef union asl_resource_desc
396100966Siwasaki{
397100966Siwasaki    ASL_IRQ_FORMAT_DESC         Irq;
398100966Siwasaki    ASL_DMA_FORMAT_DESC         Dma;
399100966Siwasaki    ASL_START_DEPENDENT_DESC    Std;
400100966Siwasaki    ASL_END_DEPENDENT_DESC      End;
401100966Siwasaki    ASL_IO_PORT_DESC            Iop;
402100966Siwasaki    ASL_FIXED_IO_PORT_DESC      Fio;
403100966Siwasaki    ASL_SMALL_VENDOR_DESC       Smv;
404100966Siwasaki    ASL_END_TAG_DESC            Et;
405100966Siwasaki
406100966Siwasaki    ASL_MEMORY_24_DESC          M24;
407100966Siwasaki    ASL_LARGE_VENDOR_DESC       Lgv;
408100966Siwasaki    ASL_MEMORY_32_DESC          M32;
409100966Siwasaki    ASL_FIXED_MEMORY_32_DESC    F32;
410100966Siwasaki    ASL_QWORD_ADDRESS_DESC      Qas;
411100966Siwasaki    ASL_DWORD_ADDRESS_DESC      Das;
412100966Siwasaki    ASL_WORD_ADDRESS_DESC       Was;
413100966Siwasaki    ASL_EXTENDED_XRUPT_DESC     Exx;
414100966Siwasaki    ASL_GENERAL_REGISTER_DESC   Grg;
415100966Siwasaki    UINT32                      U32Item;
416100966Siwasaki    UINT16                      U16Item;
417100966Siwasaki    UINT8                       U8Item;
418100966Siwasaki
419100966Siwasaki} ASL_RESOURCE_DESC;
420100966Siwasaki
421100966Siwasaki
422100966Siwasaki#endif
423100966Siwasaki
424