* cris/traps.c (TARGET_MAP_DENYWRITE): Define.
authorHans-Peter Nilsson <hp@axis.com>
Sat, 3 Jan 2009 19:21:42 +0000 (19:21 +0000)
committerHans-Peter Nilsson <hp@axis.com>
Sat, 3 Jan 2009 19:21:42 +0000 (19:21 +0000)
<case TARGET_SYS_mmap2>: Handle TARGET_MAP_DENYWRITE.

sim/ChangeLog
sim/cris/traps.c

index 90cc95f..1a44d01 100644 (file)
@@ -1,5 +1,8 @@
 2009-01-03  Hans-Peter Nilsson  <hp@axis.com>
 
+       * cris/traps.c (TARGET_MAP_DENYWRITE): Define.
+       <case TARGET_SYS_mmap2>: Handle TARGET_MAP_DENYWRITE.
+
        * cris/traps.c (TARGET_SYS_access, TARGET_R_OK, TARGET_W_OK)
        (TARGET_X_OK, TARGET_F_OK): Define.
        (cris_break_13_handler) <case TARGET_SYS_access>: New case.
index afe5bfb..ff70902 100644 (file)
@@ -124,6 +124,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 #define TARGET_MAP_TYPE                0x0f
 #define TARGET_MAP_FIXED       0x10
 #define TARGET_MAP_ANONYMOUS   0x20
+#define TARGET_MAP_DENYWRITE   0x800
 
 #define TARGET_CTL_KERN                1
 #define TARGET_CTL_VM          2
@@ -1662,6 +1663,11 @@ cris_break_13_handler (SIM_CPU *current_cpu, USI callnum, USI arg1,
            USI fd = arg5;
            USI pgoff = arg6;
 
+           /* At 2.6.27, Linux (many (all?) ports, in the mmap2 syscalls)
+              still masked away this bit, so let's just ignore
+              it.  */
+           flags &= ~TARGET_MAP_DENYWRITE;
+
            /* If the simulator wants to mmap more than the very large
               limit, something is wrong.  FIXME: Return an error or
               abort?  Have command-line selectable?  */