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