blob: 5909e392cb1e7e46e0f791ecbbe39e39c1e2f470 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
Linus Torvalds1da177e2005-04-16 15:20:36 -07002 * Copyright (C) 2002, Greg Ungerer (gerg@snapgear.com)
3 *
4 * Based on older entry.S files, the following copyrights apply:
5 *
6 * Copyright (C) 1998 D. Jeff Dionne <jeff@lineo.ca>,
7 * Kenneth Albanowski <kjahds@kjahds.com>,
8 * Copyright (C) 2000 Lineo Inc. (www.lineo.com)
9 * Copyright (C) 1991, 1992 Linus Torvalds
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +020010 *
11 * Linux/m68k support by Hamish Macdonald
Linus Torvalds1da177e2005-04-16 15:20:36 -070012 */
13
Linus Torvalds1da177e2005-04-16 15:20:36 -070014#include <linux/sys.h>
15#include <linux/linkage.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -070016
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +020017#ifndef CONFIG_MMU
18#define sys_mmap2 sys_mmap_pgoff
19#endif
20
21.section .rodata
Linus Torvalds1da177e2005-04-16 15:20:36 -070022ALIGN
23ENTRY(sys_call_table)
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +020024 .long sys_restart_syscall /* 0 - old "setup()" system call, used for restarting */
Linus Torvalds1da177e2005-04-16 15:20:36 -070025 .long sys_exit
26 .long sys_fork
27 .long sys_read
28 .long sys_write
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +020029 .long sys_open /* 5 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070030 .long sys_close
31 .long sys_waitpid
32 .long sys_creat
33 .long sys_link
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +020034 .long sys_unlink /* 10 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070035 .long sys_execve
36 .long sys_chdir
37 .long sys_time
38 .long sys_mknod
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +020039 .long sys_chmod /* 15 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070040 .long sys_chown16
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +020041 .long sys_ni_syscall /* old break syscall holder */
Linus Torvalds1da177e2005-04-16 15:20:36 -070042 .long sys_stat
43 .long sys_lseek
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +020044 .long sys_getpid /* 20 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070045 .long sys_mount
46 .long sys_oldumount
47 .long sys_setuid16
48 .long sys_getuid16
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +020049 .long sys_stime /* 25 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070050 .long sys_ptrace
51 .long sys_alarm
52 .long sys_fstat
53 .long sys_pause
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +020054 .long sys_utime /* 30 */
55 .long sys_ni_syscall /* old stty syscall holder */
56 .long sys_ni_syscall /* old gtty syscall holder */
Linus Torvalds1da177e2005-04-16 15:20:36 -070057 .long sys_access
58 .long sys_nice
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +020059 .long sys_ni_syscall /* 35 - old ftime syscall holder */
Linus Torvalds1da177e2005-04-16 15:20:36 -070060 .long sys_sync
61 .long sys_kill
62 .long sys_rename
63 .long sys_mkdir
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +020064 .long sys_rmdir /* 40 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070065 .long sys_dup
66 .long sys_pipe
67 .long sys_times
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +020068 .long sys_ni_syscall /* old prof syscall holder */
69 .long sys_brk /* 45 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070070 .long sys_setgid16
71 .long sys_getgid16
72 .long sys_signal
73 .long sys_geteuid16
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +020074 .long sys_getegid16 /* 50 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070075 .long sys_acct
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +020076 .long sys_umount /* recycled never used phys() */
77 .long sys_ni_syscall /* old lock syscall holder */
Linus Torvalds1da177e2005-04-16 15:20:36 -070078 .long sys_ioctl
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +020079 .long sys_fcntl /* 55 */
80 .long sys_ni_syscall /* old mpx syscall holder */
Linus Torvalds1da177e2005-04-16 15:20:36 -070081 .long sys_setpgid
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +020082 .long sys_ni_syscall /* old ulimit syscall holder */
Linus Torvalds1da177e2005-04-16 15:20:36 -070083 .long sys_ni_syscall
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +020084 .long sys_umask /* 60 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070085 .long sys_chroot
86 .long sys_ustat
87 .long sys_dup2
88 .long sys_getppid
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +020089 .long sys_getpgrp /* 65 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070090 .long sys_setsid
91 .long sys_sigaction
92 .long sys_sgetmask
93 .long sys_ssetmask
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +020094 .long sys_setreuid16 /* 70 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070095 .long sys_setregid16
96 .long sys_sigsuspend
97 .long sys_sigpending
98 .long sys_sethostname
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +020099 .long sys_setrlimit /* 75 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700100 .long sys_old_getrlimit
101 .long sys_getrusage
102 .long sys_gettimeofday
103 .long sys_settimeofday
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200104 .long sys_getgroups16 /* 80 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700105 .long sys_setgroups16
Christoph Hellwig5d0e5282010-03-10 15:21:13 -0800106 .long sys_old_select
Linus Torvalds1da177e2005-04-16 15:20:36 -0700107 .long sys_symlink
108 .long sys_lstat
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200109 .long sys_readlink /* 85 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700110 .long sys_uselib
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200111 .long sys_swapon
Linus Torvalds1da177e2005-04-16 15:20:36 -0700112 .long sys_reboot
Heiko Carstense55380e2009-01-14 14:13:55 +0100113 .long sys_old_readdir
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200114 .long sys_old_mmap /* 90 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700115 .long sys_munmap
116 .long sys_truncate
117 .long sys_ftruncate
118 .long sys_fchmod
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200119 .long sys_fchown16 /* 95 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700120 .long sys_getpriority
121 .long sys_setpriority
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200122 .long sys_ni_syscall /* old profil syscall holder */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700123 .long sys_statfs
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200124 .long sys_fstatfs /* 100 */
125 .long sys_ni_syscall /* ioperm for i386 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700126 .long sys_socketcall
127 .long sys_syslog
128 .long sys_setitimer
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200129 .long sys_getitimer /* 105 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700130 .long sys_newstat
131 .long sys_newlstat
132 .long sys_newfstat
133 .long sys_ni_syscall
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200134 .long sys_ni_syscall /* 110 - iopl for i386 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700135 .long sys_vhangup
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200136 .long sys_ni_syscall /* obsolete idle() syscall */
137 .long sys_ni_syscall /* vm86old for i386 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700138 .long sys_wait4
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200139 .long sys_swapoff /* 115 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700140 .long sys_sysinfo
141 .long sys_ipc
142 .long sys_fsync
143 .long sys_sigreturn
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200144 .long sys_clone /* 120 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700145 .long sys_setdomainname
146 .long sys_newuname
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200147 .long sys_cacheflush /* modify_ldt for i386 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700148 .long sys_adjtimex
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200149 .long sys_mprotect /* 125 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700150 .long sys_sigprocmask
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200151 .long sys_ni_syscall /* old "create_module" */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700152 .long sys_init_module
153 .long sys_delete_module
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200154 .long sys_ni_syscall /* 130 - old "get_kernel_syms" */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700155 .long sys_quotactl
156 .long sys_getpgid
157 .long sys_fchdir
158 .long sys_bdflush
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200159 .long sys_sysfs /* 135 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700160 .long sys_personality
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200161 .long sys_ni_syscall /* for afs_syscall */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700162 .long sys_setfsuid16
163 .long sys_setfsgid16
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200164 .long sys_llseek /* 140 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700165 .long sys_getdents
166 .long sys_select
167 .long sys_flock
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200168 .long sys_msync
169 .long sys_readv /* 145 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700170 .long sys_writev
171 .long sys_getsid
172 .long sys_fdatasync
173 .long sys_sysctl
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200174 .long sys_mlock /* 150 */
175 .long sys_munlock
176 .long sys_mlockall
177 .long sys_munlockall
Linus Torvalds1da177e2005-04-16 15:20:36 -0700178 .long sys_sched_setparam
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200179 .long sys_sched_getparam /* 155 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700180 .long sys_sched_setscheduler
181 .long sys_sched_getscheduler
182 .long sys_sched_yield
183 .long sys_sched_get_priority_max
184 .long sys_sched_get_priority_min /* 160 */
185 .long sys_sched_rr_get_interval
186 .long sys_nanosleep
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200187 .long sys_mremap
Linus Torvalds1da177e2005-04-16 15:20:36 -0700188 .long sys_setresuid16
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200189 .long sys_getresuid16 /* 165 */
190 .long sys_getpagesize
191 .long sys_ni_syscall /* old "query_module" */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700192 .long sys_poll
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200193 .long sys_nfsservctl
194 .long sys_setresgid16 /* 170 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700195 .long sys_getresgid16
196 .long sys_prctl
197 .long sys_rt_sigreturn
198 .long sys_rt_sigaction
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200199 .long sys_rt_sigprocmask /* 175 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700200 .long sys_rt_sigpending
201 .long sys_rt_sigtimedwait
202 .long sys_rt_sigqueueinfo
203 .long sys_rt_sigsuspend
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200204 .long sys_pread64 /* 180 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700205 .long sys_pwrite64
206 .long sys_lchown16
207 .long sys_getcwd
208 .long sys_capget
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200209 .long sys_capset /* 185 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700210 .long sys_sigaltstack
211 .long sys_sendfile
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200212 .long sys_ni_syscall /* streams1 */
213 .long sys_ni_syscall /* streams2 */
214 .long sys_vfork /* 190 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700215 .long sys_getrlimit
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200216 .long sys_mmap2
Linus Torvalds1da177e2005-04-16 15:20:36 -0700217 .long sys_truncate64
218 .long sys_ftruncate64
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200219 .long sys_stat64 /* 195 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700220 .long sys_lstat64
221 .long sys_fstat64
222 .long sys_chown
223 .long sys_getuid
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200224 .long sys_getgid /* 200 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700225 .long sys_geteuid
226 .long sys_getegid
227 .long sys_setreuid
228 .long sys_setregid
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200229 .long sys_getgroups /* 205 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700230 .long sys_setgroups
231 .long sys_fchown
232 .long sys_setresuid
233 .long sys_getresuid
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200234 .long sys_setresgid /* 210 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700235 .long sys_getresgid
236 .long sys_lchown
237 .long sys_setuid
238 .long sys_setgid
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200239 .long sys_setfsuid /* 215 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700240 .long sys_setfsgid
241 .long sys_pivot_root
242 .long sys_ni_syscall
243 .long sys_ni_syscall
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200244 .long sys_getdents64 /* 220 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700245 .long sys_gettid
246 .long sys_tkill
247 .long sys_setxattr
248 .long sys_lsetxattr
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200249 .long sys_fsetxattr /* 225 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700250 .long sys_getxattr
251 .long sys_lgetxattr
252 .long sys_fgetxattr
253 .long sys_listxattr
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200254 .long sys_llistxattr /* 230 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700255 .long sys_flistxattr
256 .long sys_removexattr
257 .long sys_lremovexattr
258 .long sys_fremovexattr
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200259 .long sys_futex /* 235 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700260 .long sys_sendfile64
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200261 .long sys_mincore
262 .long sys_madvise
Linus Torvalds1da177e2005-04-16 15:20:36 -0700263 .long sys_fcntl64
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200264 .long sys_readahead /* 240 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700265 .long sys_io_setup
266 .long sys_io_destroy
267 .long sys_io_getevents
268 .long sys_io_submit
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200269 .long sys_io_cancel /* 245 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700270 .long sys_fadvise64
271 .long sys_exit_group
272 .long sys_lookup_dcookie
273 .long sys_epoll_create
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200274 .long sys_epoll_ctl /* 250 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700275 .long sys_epoll_wait
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200276 .long sys_remap_file_pages
Linus Torvalds1da177e2005-04-16 15:20:36 -0700277 .long sys_set_tid_address
278 .long sys_timer_create
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200279 .long sys_timer_settime /* 255 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700280 .long sys_timer_gettime
281 .long sys_timer_getoverrun
282 .long sys_timer_delete
283 .long sys_clock_settime
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200284 .long sys_clock_gettime /* 260 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700285 .long sys_clock_getres
286 .long sys_clock_nanosleep
287 .long sys_statfs64
288 .long sys_fstatfs64
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200289 .long sys_tgkill /* 265 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700290 .long sys_utimes
291 .long sys_fadvise64_64
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200292 .long sys_mbind
Linus Torvalds1da177e2005-04-16 15:20:36 -0700293 .long sys_get_mempolicy
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200294 .long sys_set_mempolicy /* 270 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700295 .long sys_mq_open
296 .long sys_mq_unlink
297 .long sys_mq_timedsend
298 .long sys_mq_timedreceive
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200299 .long sys_mq_notify /* 275 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700300 .long sys_mq_getsetattr
301 .long sys_waitid
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200302 .long sys_ni_syscall /* for sys_vserver */
Geert Uytterhoevene0fafda2006-10-12 23:18:53 +0200303 .long sys_add_key
Geert Uytterhoevenc4245c92011-04-06 22:12:53 +0200304 .long sys_request_key /* 280 */
Geert Uytterhoevene0fafda2006-10-12 23:18:53 +0200305 .long sys_keyctl
306 .long sys_ioprio_set
307 .long sys_ioprio_get
308 .long sys_inotify_init
309 .long sys_inotify_add_watch /* 285 */
310 .long sys_inotify_rm_watch
311 .long sys_migrate_pages
312 .long sys_openat
313 .long sys_mkdirat
314 .long sys_mknodat /* 290 */
315 .long sys_fchownat
316 .long sys_futimesat
317 .long sys_fstatat64
318 .long sys_unlinkat
319 .long sys_renameat /* 295 */
320 .long sys_linkat
321 .long sys_symlinkat
322 .long sys_readlinkat
323 .long sys_fchmodat
324 .long sys_faccessat /* 300 */
Geert Uytterhoevend6d42bb2011-05-06 20:57:11 +0200325 .long sys_pselect6
326 .long sys_ppoll
Geert Uytterhoevene0fafda2006-10-12 23:18:53 +0200327 .long sys_unshare
328 .long sys_set_robust_list
329 .long sys_get_robust_list /* 305 */
330 .long sys_splice
331 .long sys_sync_file_range
332 .long sys_tee
333 .long sys_vmsplice
334 .long sys_move_pages /* 310 */
Geert Uytterhoevene8454982007-09-11 15:23:56 -0700335 .long sys_sched_setaffinity
336 .long sys_sched_getaffinity
337 .long sys_kexec_load
338 .long sys_getcpu
339 .long sys_epoll_pwait /* 315 */
340 .long sys_utimensat
341 .long sys_signalfd
Geert Uytterhoeven8727e282008-03-04 09:18:16 +0100342 .long sys_timerfd_create
Geert Uytterhoevene8454982007-09-11 15:23:56 -0700343 .long sys_eventfd
344 .long sys_fallocate /* 320 */
Geert Uytterhoeven8727e282008-03-04 09:18:16 +0100345 .long sys_timerfd_settime
346 .long sys_timerfd_gettime
Geert Uytterhoeven0e7d5bb2008-08-11 09:00:30 +0200347 .long sys_signalfd4
348 .long sys_eventfd2
349 .long sys_epoll_create1 /* 325 */
350 .long sys_dup3
351 .long sys_pipe2
352 .long sys_inotify_init1
Geert Uytterhoevencc7c0fa2009-04-09 22:23:51 +0200353 .long sys_preadv
354 .long sys_pwritev /* 330 */
Geert Uytterhoeven98484842009-08-21 22:03:54 +0200355 .long sys_rt_tgsigqueueinfo
Ingo Molnarcdd6c482009-09-21 12:02:48 +0200356 .long sys_perf_event_open
Maxim Kuvyrkova58f7532009-12-06 10:08:14 -0800357 .long sys_get_thread_area
358 .long sys_set_thread_area
359 .long sys_atomic_cmpxchg_32 /* 335 */
360 .long sys_atomic_barrier
Geert Uytterhoevenedc805b2010-08-16 14:05:20 +0200361 .long sys_fanotify_init
362 .long sys_fanotify_mark
363 .long sys_prlimit64
Geert Uytterhoeven60d48c12011-04-12 22:24:45 +0200364 .long sys_name_to_handle_at /* 340 */
365 .long sys_open_by_handle_at
366 .long sys_clock_adjtime
367 .long sys_syncfs
Linus Torvalds1da177e2005-04-16 15:20:36 -0700368