OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <asm/unistd.h> | 5 #include <asm/unistd.h> |
6 #include <fcntl.h> | 6 #include <fcntl.h> |
7 #include <sys/mman.h> | 7 #include <sys/mman.h> |
8 #include <sys/syscall.h> | 8 #include <sys/syscall.h> |
9 #include <unistd.h> | 9 #include <unistd.h> |
10 | 10 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 #if defined(__i386__) | 45 #if defined(__i386__) |
46 EXPECT_EQ(0x80CDu, ((uint16_t*)Syscall::Call(-1))[-1]); // INT 0x80 | 46 EXPECT_EQ(0x80CDu, ((uint16_t*)Syscall::Call(-1))[-1]); // INT 0x80 |
47 #elif defined(__x86_64__) | 47 #elif defined(__x86_64__) |
48 EXPECT_EQ(0x050Fu, ((uint16_t*)Syscall::Call(-1))[-1]); // SYSCALL | 48 EXPECT_EQ(0x050Fu, ((uint16_t*)Syscall::Call(-1))[-1]); // SYSCALL |
49 #elif defined(__arm__) | 49 #elif defined(__arm__) |
50 #if defined(__thumb__) | 50 #if defined(__thumb__) |
51 EXPECT_EQ(0xDF00u, ((uint16_t*)Syscall::Call(-1))[-1]); // SWI 0 | 51 EXPECT_EQ(0xDF00u, ((uint16_t*)Syscall::Call(-1))[-1]); // SWI 0 |
52 #else | 52 #else |
53 EXPECT_EQ(0xEF000000u, ((uint32_t*)Syscall::Call(-1))[-1]); // SVC 0 | 53 EXPECT_EQ(0xEF000000u, ((uint32_t*)Syscall::Call(-1))[-1]); // SVC 0 |
54 #endif | 54 #endif |
| 55 #elif defined(__mips__) |
| 56 // Opcode for MIPS sycall is in the lower 16-bits |
| 57 EXPECT_EQ(0x0cu, (((uint32_t*)Syscall::Call(-1))[-1]) & 0x0000FFFF); |
55 #else | 58 #else |
56 #warning Incomplete test case; need port for target platform | 59 #warning Incomplete test case; need port for target platform |
57 #endif | 60 #endif |
58 } | 61 } |
59 | 62 |
60 TEST(Syscall, TrivialSyscallNoArgs) { | 63 TEST(Syscall, TrivialSyscallNoArgs) { |
61 // Test that we can do basic system calls | 64 // Test that we can do basic system calls |
62 EXPECT_EQ(Syscall::Call(__NR_getpid), syscall(__NR_getpid)); | 65 EXPECT_EQ(Syscall::Call(__NR_getpid), syscall(__NR_getpid)); |
63 } | 66 } |
64 | 67 |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 | 208 |
206 // Clean up | 209 // Clean up |
207 EXPECT_EQ(0, Syscall::Call(__NR_munmap, addr2, 8192L)); | 210 EXPECT_EQ(0, Syscall::Call(__NR_munmap, addr2, 8192L)); |
208 EXPECT_EQ(0, Syscall::Call(__NR_munmap, addr3, 4096L)); | 211 EXPECT_EQ(0, Syscall::Call(__NR_munmap, addr3, 4096L)); |
209 EXPECT_EQ(0, IGNORE_EINTR(Syscall::Call(__NR_close, fd))); | 212 EXPECT_EQ(0, IGNORE_EINTR(Syscall::Call(__NR_close, fd))); |
210 } | 213 } |
211 | 214 |
212 } // namespace | 215 } // namespace |
213 | 216 |
214 } // namespace sandbox | 217 } // namespace sandbox |
OLD | NEW |