linux.cc revision 7087:fb8d5786ff30
12972Sgblack@eecs.umich.edu/*
22972Sgblack@eecs.umich.edu * Copyright (c) 2007 The Hewlett-Packard Development Company
32972Sgblack@eecs.umich.edu * All rights reserved.
42972Sgblack@eecs.umich.edu *
52972Sgblack@eecs.umich.edu * The license below extends only to copyright in the software and shall
62972Sgblack@eecs.umich.edu * not be construed as granting a license to any other intellectual
72972Sgblack@eecs.umich.edu * property including but not limited to intellectual property relating
82972Sgblack@eecs.umich.edu * to a hardware implementation of the functionality of the software
92972Sgblack@eecs.umich.edu * licensed hereunder.  You may use the software subject to the license
102972Sgblack@eecs.umich.edu * terms below provided that you ensure that this notice is replicated
112972Sgblack@eecs.umich.edu * unmodified and in its entirety in all distributions of the software,
122972Sgblack@eecs.umich.edu * modified or unmodified, in source code or in binary form.
132972Sgblack@eecs.umich.edu *
142972Sgblack@eecs.umich.edu * Redistribution and use in source and binary forms, with or without
152972Sgblack@eecs.umich.edu * modification, are permitted provided that the following conditions are
162972Sgblack@eecs.umich.edu * met: redistributions of source code must retain the above copyright
172972Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer;
182972Sgblack@eecs.umich.edu * redistributions in binary form must reproduce the above copyright
192972Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the
202972Sgblack@eecs.umich.edu * documentation and/or other materials provided with the distribution;
212972Sgblack@eecs.umich.edu * neither the name of the copyright holders nor the names of its
222972Sgblack@eecs.umich.edu * contributors may be used to endorse or promote products derived from
232972Sgblack@eecs.umich.edu * this software without specific prior written permission.
242972Sgblack@eecs.umich.edu *
252972Sgblack@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
262972Sgblack@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
272972Sgblack@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
282972Sgblack@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
292972Sgblack@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
302972Sgblack@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
312972Sgblack@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
322972Sgblack@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
332972Sgblack@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
344040Ssaidi@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
356215Snate@binkert.org * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
362972Sgblack@eecs.umich.edu *
372972Sgblack@eecs.umich.edu * Authors: Gabe Black
382972Sgblack@eecs.umich.edu */
392972Sgblack@eecs.umich.edu
402972Sgblack@eecs.umich.edu#include "arch/x86/linux/linux.hh"
412972Sgblack@eecs.umich.edu#include <fcntl.h>
422972Sgblack@eecs.umich.edu
434040Ssaidi@eecs.umich.edu// open(2) flags translation table
442972Sgblack@eecs.umich.eduOpenFlagTransTable X86Linux64::openFlagTable[] = {
452972Sgblack@eecs.umich.edu#ifdef _MSC_VER
462972Sgblack@eecs.umich.edu  { TGT_O_RDONLY, _O_RDONLY },
472972Sgblack@eecs.umich.edu  { TGT_O_WRONLY, _O_WRONLY },
482972Sgblack@eecs.umich.edu  { TGT_O_RDWR, _O_RDWR },
492972Sgblack@eecs.umich.edu  { TGT_O_APPEND, _O_APPEND },
502972Sgblack@eecs.umich.edu  { TGT_O_CREAT, _O_CREAT },
512972Sgblack@eecs.umich.edu  { TGT_O_TRUNC, _O_TRUNC },
522972Sgblack@eecs.umich.edu  { TGT_O_EXCL, _O_EXCL },
532972Sgblack@eecs.umich.edu#ifdef _O_NONBLOCK
544635Sgblack@eecs.umich.edu  { TGT_O_NONBLOCK, _O_NONBLOCK },
555251Sksewell@umich.edu#endif
565251Sksewell@umich.edu#ifdef _O_NOCTTY
575251Sksewell@umich.edu  { TGT_O_NOCTTY, _O_NOCTTY },
585251Sksewell@umich.edu#endif
592972Sgblack@eecs.umich.edu#ifdef _O_SYNC
602972Sgblack@eecs.umich.edu  { TGT_O_SYNC, _O_SYNC },
612972Sgblack@eecs.umich.edu#endif
62#else /* !_MSC_VER */
63  { TGT_O_RDONLY, O_RDONLY },
64  { TGT_O_WRONLY, O_WRONLY },
65  { TGT_O_RDWR, O_RDWR },
66  { TGT_O_APPEND, O_APPEND },
67  { TGT_O_CREAT, O_CREAT },
68  { TGT_O_TRUNC, O_TRUNC },
69  { TGT_O_EXCL, O_EXCL },
70  { TGT_O_NONBLOCK, O_NONBLOCK },
71  { TGT_O_NOCTTY, O_NOCTTY },
72#ifdef O_SYNC
73  { TGT_O_SYNC, O_SYNC },
74#endif
75#endif /* _MSC_VER */
76};
77
78const int X86Linux64::NUM_OPEN_FLAGS =
79        sizeof(X86Linux64::openFlagTable) /
80        sizeof(X86Linux64::openFlagTable[0]);
81
82// open(2) flags translation table
83OpenFlagTransTable X86Linux32::openFlagTable[] = {
84#ifdef _MSC_VER
85  { TGT_O_RDONLY, _O_RDONLY },
86  { TGT_O_WRONLY, _O_WRONLY },
87  { TGT_O_RDWR, _O_RDWR },
88  { TGT_O_APPEND, _O_APPEND },
89  { TGT_O_CREAT, _O_CREAT },
90  { TGT_O_TRUNC, _O_TRUNC },
91  { TGT_O_EXCL, _O_EXCL },
92#ifdef _O_NONBLOCK
93  { TGT_O_NONBLOCK, _O_NONBLOCK },
94#endif
95#ifdef _O_NOCTTY
96  { TGT_O_NOCTTY, _O_NOCTTY },
97#endif
98#ifdef _O_SYNC
99  { TGT_O_SYNC, _O_SYNC },
100#endif
101#else /* !_MSC_VER */
102  { TGT_O_RDONLY, O_RDONLY },
103  { TGT_O_WRONLY, O_WRONLY },
104  { TGT_O_RDWR, O_RDWR },
105  { TGT_O_APPEND, O_APPEND },
106  { TGT_O_CREAT, O_CREAT },
107  { TGT_O_TRUNC, O_TRUNC },
108  { TGT_O_EXCL, O_EXCL },
109  { TGT_O_NONBLOCK, O_NONBLOCK },
110  { TGT_O_NOCTTY, O_NOCTTY },
111#ifdef O_SYNC
112  { TGT_O_SYNC, O_SYNC },
113#endif
114#endif /* _MSC_VER */
115};
116
117const int X86Linux32::NUM_OPEN_FLAGS =
118        sizeof(X86Linux32::openFlagTable) /
119        sizeof(X86Linux32::openFlagTable[0]);
120
121