linux.cc revision 7087
14166Sgblack@eecs.umich.edu/*
24166Sgblack@eecs.umich.edu * Copyright (c) 2007 The Hewlett-Packard Development Company
34166Sgblack@eecs.umich.edu * All rights reserved.
44166Sgblack@eecs.umich.edu *
57087Snate@binkert.org * The license below extends only to copyright in the software and shall
67087Snate@binkert.org * not be construed as granting a license to any other intellectual
77087Snate@binkert.org * property including but not limited to intellectual property relating
87087Snate@binkert.org * to a hardware implementation of the functionality of the software
97087Snate@binkert.org * licensed hereunder.  You may use the software subject to the license
107087Snate@binkert.org * terms below provided that you ensure that this notice is replicated
117087Snate@binkert.org * unmodified and in its entirety in all distributions of the software,
127087Snate@binkert.org * modified or unmodified, in source code or in binary form.
134166Sgblack@eecs.umich.edu *
147087Snate@binkert.org * Redistribution and use in source and binary forms, with or without
157087Snate@binkert.org * modification, are permitted provided that the following conditions are
167087Snate@binkert.org * met: redistributions of source code must retain the above copyright
177087Snate@binkert.org * notice, this list of conditions and the following disclaimer;
187087Snate@binkert.org * redistributions in binary form must reproduce the above copyright
197087Snate@binkert.org * notice, this list of conditions and the following disclaimer in the
207087Snate@binkert.org * documentation and/or other materials provided with the distribution;
217087Snate@binkert.org * neither the name of the copyright holders nor the names of its
224166Sgblack@eecs.umich.edu * contributors may be used to endorse or promote products derived from
237087Snate@binkert.org * this software without specific prior written permission.
244166Sgblack@eecs.umich.edu *
254166Sgblack@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
264166Sgblack@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
274166Sgblack@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
284166Sgblack@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
294166Sgblack@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
304166Sgblack@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
314166Sgblack@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
324166Sgblack@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
334166Sgblack@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
344166Sgblack@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
354166Sgblack@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
364166Sgblack@eecs.umich.edu *
374166Sgblack@eecs.umich.edu * Authors: Gabe Black
384166Sgblack@eecs.umich.edu */
394166Sgblack@eecs.umich.edu
404166Sgblack@eecs.umich.edu#include "arch/x86/linux/linux.hh"
414166Sgblack@eecs.umich.edu#include <fcntl.h>
424166Sgblack@eecs.umich.edu
434166Sgblack@eecs.umich.edu// open(2) flags translation table
444759Sgblack@eecs.umich.eduOpenFlagTransTable X86Linux64::openFlagTable[] = {
454166Sgblack@eecs.umich.edu#ifdef _MSC_VER
464166Sgblack@eecs.umich.edu  { TGT_O_RDONLY, _O_RDONLY },
474166Sgblack@eecs.umich.edu  { TGT_O_WRONLY, _O_WRONLY },
484166Sgblack@eecs.umich.edu  { TGT_O_RDWR, _O_RDWR },
494166Sgblack@eecs.umich.edu  { TGT_O_APPEND, _O_APPEND },
504166Sgblack@eecs.umich.edu  { TGT_O_CREAT, _O_CREAT },
514166Sgblack@eecs.umich.edu  { TGT_O_TRUNC, _O_TRUNC },
524166Sgblack@eecs.umich.edu  { TGT_O_EXCL, _O_EXCL },
534166Sgblack@eecs.umich.edu#ifdef _O_NONBLOCK
544166Sgblack@eecs.umich.edu  { TGT_O_NONBLOCK, _O_NONBLOCK },
554166Sgblack@eecs.umich.edu#endif
564166Sgblack@eecs.umich.edu#ifdef _O_NOCTTY
574166Sgblack@eecs.umich.edu  { TGT_O_NOCTTY, _O_NOCTTY },
584166Sgblack@eecs.umich.edu#endif
594166Sgblack@eecs.umich.edu#ifdef _O_SYNC
604166Sgblack@eecs.umich.edu  { TGT_O_SYNC, _O_SYNC },
614166Sgblack@eecs.umich.edu#endif
624166Sgblack@eecs.umich.edu#else /* !_MSC_VER */
634166Sgblack@eecs.umich.edu  { TGT_O_RDONLY, O_RDONLY },
644166Sgblack@eecs.umich.edu  { TGT_O_WRONLY, O_WRONLY },
654166Sgblack@eecs.umich.edu  { TGT_O_RDWR, O_RDWR },
664166Sgblack@eecs.umich.edu  { TGT_O_APPEND, O_APPEND },
674166Sgblack@eecs.umich.edu  { TGT_O_CREAT, O_CREAT },
684166Sgblack@eecs.umich.edu  { TGT_O_TRUNC, O_TRUNC },
694166Sgblack@eecs.umich.edu  { TGT_O_EXCL, O_EXCL },
704166Sgblack@eecs.umich.edu  { TGT_O_NONBLOCK, O_NONBLOCK },
714166Sgblack@eecs.umich.edu  { TGT_O_NOCTTY, O_NOCTTY },
724166Sgblack@eecs.umich.edu#ifdef O_SYNC
734166Sgblack@eecs.umich.edu  { TGT_O_SYNC, O_SYNC },
744166Sgblack@eecs.umich.edu#endif
754166Sgblack@eecs.umich.edu#endif /* _MSC_VER */
764166Sgblack@eecs.umich.edu};
774166Sgblack@eecs.umich.edu
784759Sgblack@eecs.umich.educonst int X86Linux64::NUM_OPEN_FLAGS =
794759Sgblack@eecs.umich.edu        sizeof(X86Linux64::openFlagTable) /
804759Sgblack@eecs.umich.edu        sizeof(X86Linux64::openFlagTable[0]);
814166Sgblack@eecs.umich.edu
825960Sgblack@eecs.umich.edu// open(2) flags translation table
835960Sgblack@eecs.umich.eduOpenFlagTransTable X86Linux32::openFlagTable[] = {
845960Sgblack@eecs.umich.edu#ifdef _MSC_VER
855960Sgblack@eecs.umich.edu  { TGT_O_RDONLY, _O_RDONLY },
865960Sgblack@eecs.umich.edu  { TGT_O_WRONLY, _O_WRONLY },
875960Sgblack@eecs.umich.edu  { TGT_O_RDWR, _O_RDWR },
885960Sgblack@eecs.umich.edu  { TGT_O_APPEND, _O_APPEND },
895960Sgblack@eecs.umich.edu  { TGT_O_CREAT, _O_CREAT },
905960Sgblack@eecs.umich.edu  { TGT_O_TRUNC, _O_TRUNC },
915960Sgblack@eecs.umich.edu  { TGT_O_EXCL, _O_EXCL },
925960Sgblack@eecs.umich.edu#ifdef _O_NONBLOCK
935960Sgblack@eecs.umich.edu  { TGT_O_NONBLOCK, _O_NONBLOCK },
945960Sgblack@eecs.umich.edu#endif
955960Sgblack@eecs.umich.edu#ifdef _O_NOCTTY
965960Sgblack@eecs.umich.edu  { TGT_O_NOCTTY, _O_NOCTTY },
975960Sgblack@eecs.umich.edu#endif
985960Sgblack@eecs.umich.edu#ifdef _O_SYNC
995960Sgblack@eecs.umich.edu  { TGT_O_SYNC, _O_SYNC },
1005960Sgblack@eecs.umich.edu#endif
1015960Sgblack@eecs.umich.edu#else /* !_MSC_VER */
1025960Sgblack@eecs.umich.edu  { TGT_O_RDONLY, O_RDONLY },
1035960Sgblack@eecs.umich.edu  { TGT_O_WRONLY, O_WRONLY },
1045960Sgblack@eecs.umich.edu  { TGT_O_RDWR, O_RDWR },
1055960Sgblack@eecs.umich.edu  { TGT_O_APPEND, O_APPEND },
1065960Sgblack@eecs.umich.edu  { TGT_O_CREAT, O_CREAT },
1075960Sgblack@eecs.umich.edu  { TGT_O_TRUNC, O_TRUNC },
1085960Sgblack@eecs.umich.edu  { TGT_O_EXCL, O_EXCL },
1095960Sgblack@eecs.umich.edu  { TGT_O_NONBLOCK, O_NONBLOCK },
1105960Sgblack@eecs.umich.edu  { TGT_O_NOCTTY, O_NOCTTY },
1115960Sgblack@eecs.umich.edu#ifdef O_SYNC
1125960Sgblack@eecs.umich.edu  { TGT_O_SYNC, O_SYNC },
1135960Sgblack@eecs.umich.edu#endif
1145960Sgblack@eecs.umich.edu#endif /* _MSC_VER */
1155960Sgblack@eecs.umich.edu};
1165960Sgblack@eecs.umich.edu
1175960Sgblack@eecs.umich.educonst int X86Linux32::NUM_OPEN_FLAGS =
1185960Sgblack@eecs.umich.edu        sizeof(X86Linux32::openFlagTable) /
1195960Sgblack@eecs.umich.edu        sizeof(X86Linux32::openFlagTable[0]);
1205960Sgblack@eecs.umich.edu
121