Re: [PATCH] Convert filldir[64]() from __put_user() to unsafe_put_user()
From: Guenter Roeck
Date: Sun Oct 06 2019 - 20:23:32 EST
On Sun, Oct 06, 2019 at 04:06:16PM -0700, Linus Torvalds wrote:
> On Sun, Oct 6, 2019 at 3:20 PM Guenter Roeck <linux@xxxxxxxxxxxx> wrote:
> >
> > this patch causes all my sparc64 emulations to stall during boot. It causes
> > all alpha emulations to crash with [1a] and [1b] when booting from a virtual
> > disk, and one of the xtensa emulations to crash with [2].
>
> Ho humm. I've run variations of that patch over a few years on x86,
> but obviously not on alpha/sparc.
>
> At least I should still be able to read alpha assembly, even after all
> these years. Would you mind sending me the result of
>
> make fs/readdir.s
>
> on alpha with the broken config? I'd hope that the sparc issue is the same.
>
> Actually, could you also do
>
> make fs/readdir.o
>
> and then send me the "objdump --disassemble" of that? That way I get
> the instruction offsets without having to count by hand.
>
Both attached for alpha.
> > Unable to handle kernel paging request at virtual address 0000000000000004
> > rcS(47): Oops -1
> > pc = [<0000000000000004>] ra = [<fffffc00004512e4>] ps = 0000 Not tainted
> > pc is at 0x4
>
> That is _funky_. I'm not seeing how it could possibly jump to 0x4, but
> it clearly does.
>
> That said, are you sure it's _that_ commit? Because this pattern:
>
Bisect on sparc pointed to this commit, and re-running the tests with
the commit reverted passed for all architectures. I didn't check any
further.
Please let me know if you need anything else at this point.
Thanks,
Guenter
.set noreorder
.set volatile
.set noat
.set nomacro
.arch ev5
# GNU C89 (GCC) version 9.2.0 (alpha-linux)
# compiled by GNU C version 6.5.0 20181026, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3, isl version none
# warning: GMP header version 6.1.0 differs from library version 6.1.2.
# warning: MPC header version 1.0.3 differs from library version 1.1.0.
# GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
# options passed: -nostdinc -I ./arch/alpha/include
# -I ./arch/alpha/include/generated -I ./include
# -I ./arch/alpha/include/uapi -I ./arch/alpha/include/generated/uapi
# -I ./include/uapi -I ./include/generated/uapi
# -iprefix /opt/kernel/gcc-9.2.0-nolibc/alpha-linux/bin/../lib/gcc/alpha-linux/9.2.0/
# -D __KERNEL__ -D KBUILD_BASENAME="readdir" -D KBUILD_MODNAME="readdir"
# -isystem /opt/kernel/gcc-9.2.0-nolibc/alpha-linux/bin/../lib/gcc/alpha-linux/9.2.0/include
# -include ./include/linux/kconfig.h
# -include ./include/linux/compiler_types.h -MD fs/.readdir.s.d
# fs/readdir.c -mno-fp-regs -mcpu=ev5 -auxbase-strip fs/readdir.s -O2
# -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs
# -Werror=implicit-function-declaration -Werror=implicit-int
# -Wno-format-security -Wno-frame-address -Wformat-truncation=0
# -Wformat-overflow=0 -Wno-address-of-packed-member
# -Wframe-larger-than=2048 -Wno-unused-but-set-variable
# -Wimplicit-fallthrough=3 -Wunused-const-variable=0
# -Wdeclaration-after-statement -Wvla -Wno-pointer-sign
# -Wno-stringop-truncation -Werror=date-time
# -Werror=incompatible-pointer-types -Werror=designated-init
# -Wno-packed-not-aligned -std=gnu90 -fno-strict-aliasing -fno-common
# -fshort-wchar -fno-PIE -ffixed-8 -fno-jump-tables
# -fno-delete-null-pointer-checks -fno-stack-protector
# -fomit-frame-pointer -fno-strict-overflow -fno-merge-all-constants
# -fmerge-constants -fstack-check=no -fconserve-stack
# -fmacro-prefix-map=./= -fverbose-asm --param allow-store-data-races=0
# options enabled: -faggressive-loop-optimizations -falign-functions
# -falign-jumps -falign-labels -falign-loops -fassume-phsa -fauto-inc-dec
# -fbranch-count-reg -fcaller-saves -fcode-hoisting
# -fcombine-stack-adjustments -fcompare-elim -fcprop-registers
# -fcrossjumping -fcse-follow-jumps -fdefer-pop -fdevirtualize
# -fdevirtualize-speculatively -fdwarf2-cfi-asm -fearly-inlining
# -feliminate-unused-debug-types -fexpensive-optimizations
# -fforward-propagate -ffp-int-builtin-inexact -ffunction-cse -fgcse
# -fgcse-lm -fgnu-runtime -fgnu-unique -fguess-branch-probability
# -fhoist-adjacent-loads -fident -fif-conversion -fif-conversion2
# -findirect-inlining -finline -finline-atomics
# -finline-functions-called-once -finline-small-functions -fipa-bit-cp
# -fipa-cp -fipa-icf -fipa-icf-functions -fipa-icf-variables -fipa-profile
# -fipa-pure-const -fipa-ra -fipa-reference -fipa-reference-addressable
# -fipa-sra -fipa-stack-alignment -fipa-vrp -fira-hoist-pressure
# -fira-share-save-slots -fira-share-spill-slots
# -fisolate-erroneous-paths-dereference -fivopts -fkeep-static-consts
# -fleading-underscore -flifetime-dse -flra-remat -flto-odr-type-merging
# -fmath-errno -fmerge-constants -fmerge-debug-strings
# -fmove-loop-invariants -fomit-frame-pointer -foptimize-sibling-calls
# -foptimize-strlen -fpartial-inlining -fpcc-struct-return -fpeephole
# -fpeephole2 -fplt -fprefetch-loop-arrays -free -freorder-blocks
# -freorder-functions -frerun-cse-after-loop
# -fsched-critical-path-heuristic -fsched-dep-count-heuristic
# -fsched-group-heuristic -fsched-interblock -fsched-last-insn-heuristic
# -fsched-rank-heuristic -fsched-spec -fsched-spec-insn-heuristic
# -fsched-stalled-insns-dep -fschedule-fusion -fschedule-insns
# -fschedule-insns2 -fsemantic-interposition -fshow-column -fshrink-wrap
# -fshrink-wrap-separate -fsigned-zeros -fsplit-ivs-in-unroller
# -fsplit-wide-types -fssa-backprop -fssa-phiopt -fstdarg-opt
# -fstore-merging -fstrict-volatile-bitfields -fsync-libcalls
# -fthread-jumps -ftoplevel-reorder -ftrapping-math -ftree-bit-ccp
# -ftree-builtin-call-dce -ftree-ccp -ftree-ch -ftree-coalesce-vars
# -ftree-copy-prop -ftree-cselim -ftree-dce -ftree-dominator-opts
# -ftree-dse -ftree-forwprop -ftree-fre -ftree-loop-if-convert
# -ftree-loop-im -ftree-loop-ivcanon -ftree-loop-optimize
# -ftree-parallelize-loops= -ftree-phiprop -ftree-pre -ftree-pta
# -ftree-reassoc -ftree-scev-cprop -ftree-sink -ftree-slsr -ftree-sra
# -ftree-switch-conversion -ftree-tail-merge -ftree-ter -ftree-vrp
# -funit-at-a-time -funwind-tables -fverbose-asm -fwrapv -fwrapv-pointer
# -fzero-initialized-in-bss -mexplicit-relocs -mfloat-ieee -mglibc
# -mlarge-data -mlarge-text -mlong-double-64 -msoft-float
.text
.align 2
.align 4
.globl iterate_dir
.ent iterate_dir
iterate_dir:
.frame $30,64,$26,0
.mask 0x400fe00,-64
$LFB3537:
.cfi_startproc
ldah $29,0($27) !gpdisp!1 #,,
lda $29,0($29) !gpdisp!1 #,,
$iterate_dir..ng:
lda $30,-64($30) #,,
.cfi_def_cfa_offset 64
bis $31,$31,$31
stq $9,8($30) #,
.cfi_offset 9, -56
mov $16,$9 # tmp144, file
stq $11,24($30) #,
.cfi_offset 11, -40
mov $17,$11 # tmp145, ctx
stq $26,0($30) #,
stq $10,16($30) #,
stq $12,32($30) #,
stq $13,40($30) #,
stq $14,48($30) #,
stq $15,56($30) #,
.cfi_offset 26, -64
.cfi_offset 10, -48
.cfi_offset 12, -32
.cfi_offset 13, -24
.cfi_offset 14, -16
.cfi_offset 15, -8
.prologue 1
# fs/readdir.c:85: if (file->f_op->iterate_shared)
ldq $1,40($16) # file_23(D)->f_op, _1
# ./include/linux/fs.h:1318: return f->f_inode;
ldq $12,32($16) # MEM[(const struct file *)file_23(D)].f_inode, _26
# fs/readdir.c:85: if (file->f_op->iterate_shared)
ldq $2,64($1) # _1->iterate_shared, _1->iterate_shared
beq $2,$L20 #, _1->iterate_shared,
# fs/readdir.c:95: res = down_read_killable(&inode->i_rwsem);
lda $13,160($12) # pretmp_38,, _26
ldq $27,down_read_killable($29) !literal!14 #,,,
mov $13,$16 # pretmp_38,
# fs/readdir.c:86: shared = true;
lda $14,1($31) # shared,
# fs/readdir.c:95: res = down_read_killable(&inode->i_rwsem);
jsr $26,($27),down_read_killable !lituse_jsr!14 #,,
ldah $29,0($26) !gpdisp!15 #
lda $29,0($29) !gpdisp!15 #,,
mov $0,$10 # tmp146, <retval>
$L5:
# fs/readdir.c:98: if (res)
ldq_u $31,0($30)
bne $10,$L3 #, <retval>,
# fs/readdir.c:102: if (!IS_DEADDIR(inode)) {
ldl $1,12($12) #, _26->i_flags
# fs/readdir.c:101: res = -ENOENT;
lda $10,-2($31) # <retval>,
# fs/readdir.c:102: if (!IS_DEADDIR(inode)) {
and $1,16,$1 # _26->i_flags,, tmp112
bne $1,$L6 #, tmp112,
# fs/readdir.c:103: ctx->pos = file->f_pos;
ldq $1,152($9) # file_23(D)->f_pos, _8
# fs/readdir.c:105: res = file->f_op->iterate_shared(file, ctx);
mov $11,$17 # ctx,
mov $9,$16 # file,
# fs/readdir.c:103: ctx->pos = file->f_pos;
stq $1,8($11) # ctx_31(D)->pos, _8
# fs/readdir.c:105: res = file->f_op->iterate_shared(file, ctx);
ldq $1,40($9) # file_23(D)->f_op, file_23(D)->f_op
# fs/readdir.c:104: if (shared)
bne $14,$L21 #, shared,
# fs/readdir.c:107: res = file->f_op->iterate(file, ctx);
ldq $27,56($1) # _11->iterate, _11->iterate
jsr $26,($27),0 # _11->iterate
ldah $29,0($26) !gpdisp!16
lda $29,0($29) !gpdisp!16
mov $0,$10 # tmp149, <retval>
bis $31,$31,$31
$L8:
# fs/readdir.c:108: file->f_pos = ctx->pos;
ldq $1,8($11) # ctx_31(D)->pos, _13
# ./include/linux/fs.h:1318: return f->f_inode;
ldq $12,32($9) # MEM[(const struct file *)file_23(D)].f_inode, _47
# ./include/linux/fsnotify.h:239: if (!(file->f_mode & FMODE_NONOTIFY))
ldl $2,92($9) #, file_23(D)->f_mode
# ./include/linux/fsnotify.h:237: mask |= FS_ISDIR;
ldah $18,16384($31) # tmp100,
# fs/readdir.c:108: file->f_pos = ctx->pos;
stq $1,152($9) # file_23(D)->f_pos, _13
# ./include/linux/fsnotify.h:237: mask |= FS_ISDIR;
lda $18,1($18) # tmp143,, tmp100
# ./include/linux/fsnotify.h:236: if (S_ISDIR(inode->i_mode))
ldl $1,0($12) #,* _47
# ./include/linux/fsnotify.h:237: mask |= FS_ISDIR;
lda $11,1($31) # mask,
# ./include/linux/fsnotify.h:239: if (!(file->f_mode & FMODE_NONOTIFY))
srl $2,26,$2 # file_23(D)->f_mode,, tmp131
# ./include/linux/fsnotify.h:232: const struct path *path = &file->f_path;
lda $15,16($9) # path,, file
# ./include/linux/fsnotify.h:236: if (S_ISDIR(inode->i_mode))
extwl $1,0,$3 #, tmp122,, tmp121
lda $1,-4096($31) # tmp124,
and $1,$3,$1 # tmp124, tmp121, tmp125
lda $1,-16384($1) # tmp126,, tmp125
# ./include/linux/fsnotify.h:237: mask |= FS_ISDIR;
cmoveq $1,$18,$11 #, tmp126, tmp143, mask
# ./include/linux/fsnotify.h:239: if (!(file->f_mode & FMODE_NONOTIFY))
blbc $2,$L22 # tmp131,
$L11:
# ./include/linux/fs.h:2201: if (!(file->f_flags & O_NOATIME))
ldl $1,88($9) #, file_23(D)->f_flags
# ./include/linux/fs.h:2201: if (!(file->f_flags & O_NOATIME))
srl $1,20,$1 # file_23(D)->f_flags,, tmp139
ldq_u $31,0($30)
blbs $1,$L6 # tmp139,
# ./include/linux/fs.h:2202: touch_atime(&file->f_path);
ldq $27,touch_atime($29) !literal!6 #,,,
mov $15,$16 # path,
jsr $26,($27),touch_atime !lituse_jsr!6 #,,
ldah $29,0($26) !gpdisp!7 #
lda $29,0($29) !gpdisp!7 #,,
.align 4
$L6:
# ./include/linux/fs.h:806: up_read(&inode->i_rwsem);
mov $13,$16 # pretmp_38,
# fs/readdir.c:112: if (shared)
beq $14,$L13 #, shared,
# ./include/linux/fs.h:806: up_read(&inode->i_rwsem);
ldq $27,up_read($29) !literal!4 #,,,
jsr $26,($27),up_read !lituse_jsr!4 #,,
ldah $29,0($26) !gpdisp!5 #
lda $29,0($29) !gpdisp!5 #,,
$L3:
# fs/readdir.c:118: }
mov $10,$0 # <retval>,
ldq $26,0($30) #,
ldq $9,8($30) #,
ldq $10,16($30) #,
ldq $11,24($30) #,
ldq $12,32($30) #,
ldq $13,40($30) #,
ldq $14,48($30) #,
ldq $15,56($30) #,
bis $31,$31,$31
lda $30,64($30) #,,
.cfi_remember_state
.cfi_restore 15
.cfi_restore 14
.cfi_restore 13
.cfi_restore 12
.cfi_restore 11
.cfi_restore 10
.cfi_restore 9
.cfi_restore 26
.cfi_def_cfa_offset 0
ret $31,($26),1
.align 4
$L13:
.cfi_restore_state
# ./include/linux/fs.h:796: up_write(&inode->i_rwsem);
ldq $27,up_write($29) !literal!2 #,,,
bis $31,$31,$31
jsr $26,($27),up_write !lituse_jsr!2 #,,
ldah $29,0($26) !gpdisp!3 #
lda $29,0($29) !gpdisp!3 #,,
# ./include/linux/fs.h:797: }
br $31,$L3 #
.align 4
$L20:
# fs/readdir.c:87: else if (!file->f_op->iterate)
ldq $1,56($1) # _1->iterate, _1->iterate
# fs/readdir.c:84: int res = -ENOTDIR;
lda $10,-20($31) # <retval>,
# fs/readdir.c:87: else if (!file->f_op->iterate)
ldq_u $31,0($30)
beq $1,$L3 #, _1->iterate,
# fs/readdir.c:97: res = down_write_killable(&inode->i_rwsem);
lda $13,160($12) # pretmp_38,, _26
ldq $27,down_write_killable($29) !literal!12 #,,,
mov $13,$16 # pretmp_38,
# fs/readdir.c:83: bool shared = false;
mov $31,$14 #, shared
# fs/readdir.c:97: res = down_write_killable(&inode->i_rwsem);
jsr $26,($27),down_write_killable !lituse_jsr!12 #,,
ldah $29,0($26) !gpdisp!13 #
lda $29,0($29) !gpdisp!13 #,,
mov $0,$10 # tmp147, <retval>
br $31,$L5 #
.align 4
$L21:
# fs/readdir.c:105: res = file->f_op->iterate_shared(file, ctx);
ldq $27,64($1) # _9->iterate_shared, _9->iterate_shared
jsr $26,($27),0 # _9->iterate_shared
ldah $29,0($26) !gpdisp!17
lda $29,0($29) !gpdisp!17
mov $0,$10 # tmp148, <retval>
br $31,$L8 #
.align 4
$L22:
# ./include/linux/fsnotify.h:40: return __fsnotify_parent(path, dentry, mask);
ldq $17,24($9) # MEM[(const struct path *)file_23(D) + 16B].dentry,
ldq $27,__fsnotify_parent($29) !literal!10 #,,,
mov $11,$18 # mask,
mov $15,$16 # path,
jsr $26,($27),__fsnotify_parent !lituse_jsr!10 #,,
ldah $29,0($26) !gpdisp!11 #
lda $29,0($29) !gpdisp!11 #,,
# ./include/linux/fsnotify.h:52: if (ret)
bne $0,$L11 #, tmp150,
# ./include/linux/fsnotify.h:54: return fsnotify(inode, mask, path, FSNOTIFY_EVENT_PATH, NULL, 0);
ldq $27,fsnotify($29) !literal!8 #,,,
mov $31,$21 #,
mov $31,$20 #,
lda $19,1($31) #,
mov $15,$18 # path,
mov $11,$17 # mask,
mov $12,$16 # _47,
jsr $26,($27),fsnotify !lituse_jsr!8 #,,
ldah $29,0($26) !gpdisp!9 #
lda $29,0($29) !gpdisp!9 #,,
br $31,$L11 #
.cfi_endproc
$LFE3537:
.end iterate_dir
.align 2
.align 4
.ent fillonedir
fillonedir:
.frame $30,48,$26,0
.mask 0x4001e00,-48
$LFB3539:
.cfi_startproc
ldah $29,0($27) !gpdisp!18 #,,
lda $29,0($29) !gpdisp!18 #,,
$fillonedir..ng:
lda $30,-48($30) #,,
.cfi_def_cfa_offset 48
bis $31,$31,$31
stq $11,24($30) #,
.cfi_offset 11, -24
mov $16,$11 # tmp141, ctx
stq $12,32($30) #,
.cfi_offset 12, -16
mov $18,$12 # namlen, tmp142
stq $26,0($30) #,
stq $9,8($30) #,
stq $10,16($30) #,
.cfi_offset 26, -48
.cfi_offset 9, -40
.cfi_offset 10, -32
.prologue 1
# fs/readdir.c:187: if (buf->result)
ldl $10,24($16) # <retval>, MEM[(struct readdir_callback *)ctx_33(D)].result
# fs/readdir.c:187: if (buf->result)
bne $10,$L27 #, <retval>,
# fs/readdir.c:195: dirent = buf->dirent;
ldq $2,16($16) # MEM[(struct readdir_callback *)ctx_33(D)].dirent, dirent
# fs/readdir.c:196: if (!access_ok(dirent,
lda $1,1($18) # tmp113,, namlen
# fs/readdir.c:194: buf->result++;
lda $3,1($31) # tmp112,
stl $3,24($16) # tmp112, MEM[(struct readdir_callback *)ctx_33(D)].result
# fs/readdir.c:196: if (!access_ok(dirent,
lda $9,18($2) # _2,, dirent
addq $9,$1,$1 # _2, tmp113, _6
ldq $4,80($8) # __current_thread_info.3_9->addr_limit.seg, __current_thread_info.3_9->addr_limit.seg
subq $1,$2,$3 # _6, dirent, __ao_b
cmpult $31,$3,$5 # __ao_b, tmp115
bis $2,$3,$3 # dirent, __ao_b, tmp117
subq $1,$5,$1 # _6, tmp115, __ao_end
bis $1,$3,$1 # __ao_end, tmp117, tmp118
and $1,$4,$1 # tmp118, __current_thread_info.3_9->addr_limit.seg, tmp119
# fs/readdir.c:196: if (!access_ok(dirent,
bne $1,$L26 #, tmp119,
# fs/readdir.c:200: if ( __put_user(d_ino, &dirent->d_ino) ||
mov $10,$1 # <retval>, __pu_err
.set macro
# 200 "fs/readdir.c" 1
1: stq $20,0($2) # ino, MEM[(struct __large_struct *)_16]
2:
.section __ex_table,"a"
.long 1b-.
lda $31,2b-1b($1) # __pu_err
.previous
# 0 "" 2
# fs/readdir.c:200: if ( __put_user(d_ino, &dirent->d_ino) ||
.set nomacro
bne $1,$L26 #, __pu_err,
# fs/readdir.c:201: __put_user(offset, &dirent->d_offset) ||
mov $10,$1 # <retval>, __pu_err
.set macro
# 201 "fs/readdir.c" 1
1: stq $19,8($2) # offset, MEM[(struct __large_struct *)_19]
2:
.section __ex_table,"a"
.long 1b-.
lda $31,2b-1b($1) # __pu_err
.previous
# 0 "" 2
# fs/readdir.c:200: if ( __put_user(d_ino, &dirent->d_ino) ||
.set nomacro
bne $1,$L26 #, __pu_err,
# fs/readdir.c:202: __put_user(namlen, &dirent->d_namlen) ||
.align 3 #realign #
lda $2,16($2) # tmp131,, dirent
mov $10,$1 # <retval>, __pu_err
zapnot $18,3,$3 # namlen, namlen
.set macro
# 202 "fs/readdir.c" 1
1: ldq_u $5,1($2) # __pu_tmp2, tmp131
2: ldq_u $4,0($2) # __pu_tmp1, tmp131
inswh $3,$2,$7 # namlen, tmp131, __pu_tmp4
inswl $3,$2,$6 # namlen, tmp131, __pu_tmp3
mskwh $5,$2,$5 # __pu_tmp2, tmp131
mskwl $4,$2,$4 # __pu_tmp1, tmp131
or $5,$7,$5 # __pu_tmp2, __pu_tmp4
or $4,$6,$4 # __pu_tmp1, __pu_tmp3
3: stq_u $5,1($2) # __pu_tmp2, tmp131
4: stq_u $4,0($2) # __pu_tmp1, tmp131
5:
.section __ex_table,"a"
.long 1b-.
lda $31,5b-1b($1) # __pu_err
.previous
.section __ex_table,"a"
.long 2b-.
lda $31,5b-2b($1) # __pu_err
.previous
.section __ex_table,"a"
.long 3b-.
lda $31,5b-3b($1) # __pu_err
.previous
.section __ex_table,"a"
.long 4b-.
lda $31,5b-4b($1) # __pu_err
.previous
# 0 "" 2
# fs/readdir.c:201: __put_user(offset, &dirent->d_offset) ||
.set nomacro
bne $1,$L26 #, __pu_err,
# ./arch/alpha/include/asm/uaccess.h:314: return __copy_user((__force void *)to, from, len);
.align 3 #realign #
ldq $27,__copy_user($29) !literal!19 #,,,
mov $9,$16 # _2,
jsr $26,($27),__copy_user !lituse_jsr!19 #,,
ldah $29,0($26) !gpdisp!20 #
lda $29,0($29) !gpdisp!20 #,,
# fs/readdir.c:202: __put_user(namlen, &dirent->d_namlen) ||
bne $0,$L26 #, tmp145,
# fs/readdir.c:204: __put_user(0, dirent->d_name + namlen))
addq $9,$12,$9 # _2, namlen, tmp138
mov $10,$1 # <retval>, __pu_err
.set macro
# 204 "fs/readdir.c" 1
1: ldq_u $2,0($9) # __pu_tmp1, tmp138
insbl $10,$9,$3 # __pu_err, tmp138, __pu_tmp2
mskbl $2,$9,$2 # __pu_tmp1, tmp138
or $2,$3,$2 # __pu_tmp1, __pu_tmp2
2: stq_u $2,0($9) # __pu_tmp1, tmp138
3:
.section __ex_table,"a"
.long 1b-.
lda $31,3b-1b($1) # __pu_err
.previous
.section __ex_table,"a"
.long 2b-.
lda $31,3b-2b($1) # __pu_err
.previous
# 0 "" 2
# fs/readdir.c:203: __copy_to_user(dirent->d_name, name, namlen) ||
.set nomacro
bne $1,$L26 #, __pu_err,
.align 3 #realign #
$L24:
# fs/readdir.c:210: }
mov $10,$0 # <retval>,
ldq $26,0($30) #,
ldq $9,8($30) #,
ldq $10,16($30) #,
ldq $11,24($30) #,
ldq $12,32($30) #,
lda $30,48($30) #,,
.cfi_remember_state
.cfi_restore 12
.cfi_restore 11
.cfi_restore 10
.cfi_restore 9
.cfi_restore 26
.cfi_def_cfa_offset 0
ret $31,($26),1
.align 4
$L26:
.cfi_restore_state
# fs/readdir.c:208: buf->result = -EFAULT;
lda $1,-14($31) # tmp121,
# fs/readdir.c:209: return -EFAULT;
lda $10,-14($31) # <retval>,
# fs/readdir.c:208: buf->result = -EFAULT;
stl $1,24($11) # tmp121, MEM[(struct readdir_callback *)ctx_33(D)].result
# fs/readdir.c:209: return -EFAULT;
br $31,$L24 #
.align 4
$L27:
# fs/readdir.c:188: return -EINVAL;
lda $10,-22($31) # <retval>,
br $31,$L24 #
.cfi_endproc
$LFE3539:
.end fillonedir
.section .rodata.str1.1,"aMS",@progbits,1
$LC0:
.string "fs/readdir.c"
.text
.align 2
.align 4
.ent verify_dirent_name
verify_dirent_name:
.frame $30,32,$26,0
.mask 0x4000000,-32
$LFB3538:
.cfi_startproc
ldah $29,0($27) !gpdisp!21 #,,
lda $29,0($29) !gpdisp!21 #,,
$verify_dirent_name..ng:
lda $30,-32($30) #,,
.cfi_def_cfa_offset 32
mov $17,$18 # tmp106, len
stq $26,0($30) #,
.cfi_offset 26, -32
.prologue 1
# fs/readdir.c:148: if (WARN_ON_ONCE(!len))
beq $17,$L36 #, len,
# fs/readdir.c:150: if (WARN_ON_ONCE(memchr(name, '/', len)))
ldq $27,memchr($29) !literal!22 #,,,
lda $17,47($31) #,
jsr $26,($27),memchr !lituse_jsr!22 #,,
ldah $29,0($26) !gpdisp!23 #
lda $29,0($29) !gpdisp!23 #,,
bne $0,$L31 #, tmp107,
$L34:
# fs/readdir.c:153: }
ldq $26,0($30) #,
lda $30,32($30) #,,
.cfi_remember_state
.cfi_restore 26
.cfi_def_cfa_offset 0
ret $31,($26),1
.align 4
$L36:
.cfi_restore_state
# fs/readdir.c:148: if (WARN_ON_ONCE(!len))
ldah $1,__warned.38909($29) !gprelhigh # tmp77,,
# fs/readdir.c:149: return -EIO;
lda $0,-5($31) # <retval>,
# fs/readdir.c:148: if (WARN_ON_ONCE(!len))
ldq_u $2,__warned.38909($1) !gprellow #, tmp81
lda $3,__warned.38909($1) !gprellow # tmp82,, tmp77
extbl $2,$3,$4 #, tmp81, tmp82, tmp78
bne $4,$L34 #, tmp78,
# fs/readdir.c:148: if (WARN_ON_ONCE(!len))
lda $4,1($31) # tmp84,
mov $31,$19 #,
mskbl $2,$3,$2 #, tmp81, tmp82, tmp86
lda $18,9($31) #,
insbl $4,$3,$3 # tmp84, tmp82, tmp87
lda $17,148($31) #,
bis $3,$2,$3 # tmp87, tmp86, tmp87
stq_u $3,__warned.38909($1) !gprellow #, tmp87
$L35:
# fs/readdir.c:150: if (WARN_ON_ONCE(memchr(name, '/', len)))
ldah $16,$LC0($29) !gprelhigh # tmp102,,
ldq $27,warn_slowpath_fmt($29) !literal!24 #,,,
stq $0,16($30) #,
lda $16,$LC0($16) !gprellow #,, tmp102
jsr $26,($27),warn_slowpath_fmt !lituse_jsr!24 #,,
ldah $29,0($26) !gpdisp!25 #
lda $29,0($29) !gpdisp!25 #,,
ldq $0,16($30) #,
br $31,$L34 #
.align 4
$L31:
# fs/readdir.c:150: if (WARN_ON_ONCE(memchr(name, '/', len)))
ldah $1,__warned.38914($29) !gprelhigh # tmp90,,
# fs/readdir.c:149: return -EIO;
lda $0,-5($31) # <retval>,
# fs/readdir.c:150: if (WARN_ON_ONCE(memchr(name, '/', len)))
ldq_u $2,__warned.38914($1) !gprellow #, tmp94
lda $3,__warned.38914($1) !gprellow # tmp95,, tmp90
extbl $2,$3,$4 #, tmp94, tmp95, tmp91
bne $4,$L34 #, tmp91,
# fs/readdir.c:150: if (WARN_ON_ONCE(memchr(name, '/', len)))
lda $4,1($31) # tmp97,
mov $31,$19 #,
mskbl $2,$3,$2 #, tmp94, tmp95, tmp99
lda $18,9($31) #,
insbl $4,$3,$3 # tmp97, tmp95, tmp100
lda $17,150($31) #,
bis $3,$2,$3 # tmp100, tmp99, tmp100
stq_u $3,__warned.38914($1) !gprellow #, tmp100
br $31,$L35 #
.cfi_endproc
$LFE3538:
.end verify_dirent_name
.align 2
.align 4
.ent filldir
filldir:
.frame $30,64,$26,0
.mask 0x400fe00,-64
$LFB3542:
.cfi_startproc
ldah $29,0($27) !gpdisp!26 #,,
lda $29,0($29) !gpdisp!26 #,,
$filldir..ng:
lda $30,-64($30) #,,
.cfi_def_cfa_offset 64
bis $31,$31,$31
stq $9,8($30) #,
.cfi_offset 9, -56
mov $17,$9 # tmp243, name
stq $13,40($30) #,
.cfi_offset 13, -24
# fs/readdir.c:261: int reclen = ALIGN(offsetof(struct linux_dirent, d_name) + namlen + 2,
addl $18,27,$13 # namlen,, tmp143
# fs/readdir.c:256: {
stq $11,24($30) #,
# fs/readdir.c:261: int reclen = ALIGN(offsetof(struct linux_dirent, d_name) + namlen + 2,
bic $13,7,$13 # tmp143,, tmp144
.cfi_offset 11, -40
# fs/readdir.c:256: {
mov $16,$11 # ctx, tmp242
# fs/readdir.c:264: buf->error = verify_dirent_name(name, namlen);
mov $18,$17 # namlen,
mov $9,$16 # name,
# fs/readdir.c:261: int reclen = ALIGN(offsetof(struct linux_dirent, d_name) + namlen + 2,
addl $31,$13,$13 # tmp144, reclen
# fs/readdir.c:256: {
stq $10,16($30) #,
.cfi_offset 10, -48
mov $18,$10 # tmp244, namlen
stq $12,32($30) #,
.cfi_offset 12, -32
mov $21,$12 # tmp247, d_type
stq $14,48($30) #,
.cfi_offset 14, -16
mov $20,$14 # tmp246, ino
stq $15,56($30) #,
.cfi_offset 15, -8
mov $19,$15 # tmp245, offset
stq $26,0($30) #,
.cfi_offset 26, -64
.prologue 1
# fs/readdir.c:264: buf->error = verify_dirent_name(name, namlen);
ldq $27,verify_dirent_name($29) !literal!27 #
jsr $26,($27),0 !lituse_jsr!27
ldah $29,0($26) !gpdisp!28
lda $29,0($29) !gpdisp!28
# fs/readdir.c:265: if (unlikely(buf->error))
bne $0,$L60 #, <retval>,
# fs/readdir.c:267: buf->error = -EINVAL; /* only used if we fail.. */
lda $1,-22($31) # tmp147,
# fs/readdir.c:268: if (reclen > buf->count)
ldl $5,32($11) # _8, MEM[(struct getdents_callback *)ctx_55(D)].count
# fs/readdir.c:267: buf->error = -EINVAL; /* only used if we fail.. */
stl $1,36($11) # tmp147, MEM[(struct getdents_callback *)ctx_55(D)].error
# fs/readdir.c:268: if (reclen > buf->count)
bis $31,$31,$31
cmplt $5,$13,$1 #, _8, reclen, tmp148
bne $1,$L51 #, tmp148,
# fs/readdir.c:275: dirent = buf->previous;
ldq $2,24($11) # MEM[(struct getdents_callback *)ctx_55(D)].previous, dirent
# fs/readdir.c:276: if (dirent && signal_pending(current))
beq $2,$L40 #, dirent,
# ./include/linux/sched.h:1737: return test_ti_thread_flag(task_thread_info(tsk), flag);
ldq $1,64($8) # __current_thread_info.16_9->task, __current_thread_info.16_9->task
# ./arch/alpha/include/asm/bitops.h:289: return (1UL & (((const int *) addr)[nr >> 5] >> (nr & 31))) != 0UL;
ldq $1,8($1) # _10->stack, _10->stack
# ./arch/alpha/include/asm/bitops.h:289: return (1UL & (((const int *) addr)[nr >> 5] >> (nr & 31))) != 0UL;
ldl $1,72($1) # MEM[(const int *)_118 + 72B], MEM[(const int *)_118 + 72B]
# fs/readdir.c:276: if (dirent && signal_pending(current))
and $1,4,$1 # MEM[(const int *)_118 + 72B],, tmp154
cmpult $31,$1,$1 # tmp154, tmp154
bne $1,$L61 #, tmp154,
# fs/readdir.c:283: if (!user_access_begin(dirent, sizeof(*dirent)))
lda $1,23($2) # __ao_end,, dirent
ldq $3,80($8) # __current_thread_info.16_9->addr_limit.seg, __current_thread_info.16_9->addr_limit.seg
bis $1,$2,$1 # __ao_end, dirent, tmp236
bis $1,24,$1 # tmp236,, tmp237
and $1,$3,$1 # tmp237, __current_thread_info.16_9->addr_limit.seg, tmp238
# fs/readdir.c:283: if (!user_access_begin(dirent, sizeof(*dirent)))
bne $1,$L48 #, tmp238,
# fs/readdir.c:286: unsafe_put_user(offset, &dirent->d_off, efault_end);
mov $0,$1 # <retval>, __pu_err
.set macro
# 286 "fs/readdir.c" 1
1: stq $15,8($2) # offset, MEM[(struct __large_struct *)_19]
2:
.section __ex_table,"a"
.long 1b-.
lda $31,2b-1b($1) # __pu_err
.previous
# 0 "" 2
.set nomacro
bne $1,$L48 #, __pu_err,
.align 3 #realign #
$L50:
# fs/readdir.c:287: dirent = buf->current_dir;
ldq $6,16($11) # MEM[(struct getdents_callback *)ctx_55(D)].current_dir, dirent
# fs/readdir.c:288: unsafe_put_user(d_ino, &dirent->d_ino, efault_end);
mov $31,$1 #, __pu_err
.set macro
# 288 "fs/readdir.c" 1
1: stq $14,0($6) # ino, MEM[(struct __large_struct *)_25]
2:
.section __ex_table,"a"
.long 1b-.
lda $31,2b-1b($1) # __pu_err
.previous
# 0 "" 2
.set nomacro
bne $1,$L48 #, __pu_err,
# fs/readdir.c:289: unsafe_put_user(reclen, &dirent->d_reclen, efault_end);
.align 3 #realign #
zapnot $13,3,$3 # reclen, reclen
lda $2,16($6) # tmp166,, dirent
.set macro
# 289 "fs/readdir.c" 1
1: ldq_u $7,1($2) # __pu_tmp2, tmp166
2: ldq_u $4,0($2) # __pu_tmp1, tmp166
inswh $3,$2,$23 # reclen, tmp166, __pu_tmp4
inswl $3,$2,$22 # reclen, tmp166, __pu_tmp3
mskwh $7,$2,$7 # __pu_tmp2, tmp166
mskwl $4,$2,$4 # __pu_tmp1, tmp166
or $7,$23,$7 # __pu_tmp2, __pu_tmp4
or $4,$22,$4 # __pu_tmp1, __pu_tmp3
3: stq_u $7,1($2) # __pu_tmp2, tmp166
4: stq_u $4,0($2) # __pu_tmp1, tmp166
5:
.section __ex_table,"a"
.long 1b-.
lda $31,5b-1b($1) # __pu_err
.previous
.section __ex_table,"a"
.long 2b-.
lda $31,5b-2b($1) # __pu_err
.previous
.section __ex_table,"a"
.long 3b-.
lda $31,5b-3b($1) # __pu_err
.previous
.section __ex_table,"a"
.long 4b-.
lda $31,5b-4b($1) # __pu_err
.previous
# 0 "" 2
.set nomacro
bne $1,$L48 #, __pu_err,
# fs/readdir.c:290: unsafe_put_user(d_type, (char __user *) dirent + reclen - 1, efault_end);
.align 3 #realign #
sll $12,56,$12 # d_type,, tmp175
lda $2,-1($13) # tmp176,, reclen
sra $12,56,$12 # tmp175,, tmp173
addq $6,$2,$2 # dirent, tmp176, tmp177
.set macro
# 290 "fs/readdir.c" 1
1: ldq_u $3,0($2) # __pu_tmp1, tmp177
insbl $12,$2,$4 # tmp173, tmp177, __pu_tmp2
mskbl $3,$2,$3 # __pu_tmp1, tmp177
or $3,$4,$3 # __pu_tmp1, __pu_tmp2
2: stq_u $3,0($2) # __pu_tmp1, tmp177
3:
.section __ex_table,"a"
.long 1b-.
lda $31,3b-1b($1) # __pu_err
.previous
.section __ex_table,"a"
.long 2b-.
lda $31,3b-2b($1) # __pu_err
.previous
# 0 "" 2
.set nomacro
bne $1,$L48 #, __pu_err,
# fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
.align 3 #realign #
mov $10,$18 # namlen, len
lda $2,18($6) # dst,, dirent
cmpule $10,7,$1 #, len,, tmp179
bne $1,$L43 #, tmp179,
mov $31,$7 #, tmp187
br $31,$L44 #
.align 4
$L62:
# fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
lda $2,8($2) # dst,, dst
lda $9,8($9) # name,, name
cmpule $18,7,$1 #, len,, tmp188
bne $1,$L43 #, tmp188,
$L44:
# ./include/linux/unaligned/packed_struct.h:25: return ptr->x;
ldq_u $1,0($9) #, tmp182
ldq_u $4,7($9) #, tmp183
# fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
mov $7,$3 # tmp187, __pu_err
# ./include/linux/unaligned/packed_struct.h:25: return ptr->x;
extql $1,$9,$1 #, tmp182, name, tmp185
extqh $4,$9,$4 # tmp183, name, tmp186
bis $1,$4,$1 # tmp185, tmp186, tmp181
# fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
.set macro
# 291 "fs/readdir.c" 1
1: stq $1,0($2) # tmp181, MEM[(struct __large_struct *)dst_154]
2:
.section __ex_table,"a"
.long 1b-.
lda $31,2b-1b($3) # __pu_err
.previous
# 0 "" 2
.set nomacro
.align 3 #realign #
lda $18,-8($18) # len,, len
beq $3,$L62 #, __pu_err,
$L42:
$L48:
# fs/readdir.c:302: buf->error = -EFAULT;
lda $1,-14($31) # tmp233,
# fs/readdir.c:303: return -EFAULT;
lda $0,-14($31) # <retval>,
# fs/readdir.c:302: buf->error = -EFAULT;
stl $1,36($11) # tmp233, MEM[(struct getdents_callback *)ctx_55(D)].error
bis $31,$31,$31
$L57:
# fs/readdir.c:304: }
ldq $26,0($30) #,
ldq $9,8($30) #,
ldq $10,16($30) #,
ldq $11,24($30) #,
ldq $12,32($30) #,
ldq $13,40($30) #,
ldq $14,48($30) #,
ldq $15,56($30) #,
lda $30,64($30) #,,
.cfi_remember_state
.cfi_restore 15
.cfi_restore 14
.cfi_restore 13
.cfi_restore 12
.cfi_restore 11
.cfi_restore 10
.cfi_restore 9
.cfi_restore 26
.cfi_def_cfa_offset 0
ret $31,($26),1
.align 4
$L40:
.cfi_restore_state
# fs/readdir.c:283: if (!user_access_begin(dirent, sizeof(*dirent)))
ldq $1,80($8) # __current_thread_info.17_165->addr_limit.seg, __current_thread_info.17_165->addr_limit.seg
and $1,31,$1 # __current_thread_info.17_165->addr_limit.seg,, tmp240
# fs/readdir.c:283: if (!user_access_begin(dirent, sizeof(*dirent)))
beq $1,$L50 #, tmp240,
br $31,$L48 #
.align 4
$L43:
# fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
cmpule $18,3,$1 #, len,, tmp189
bne $1,$L45 #, tmp189,
# ./include/linux/unaligned/packed_struct.h:19: return ptr->x;
ldq_u $1,0($9) #, tmp192
ldq_u $4,3($9) #, tmp193
# fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
mov $31,$3 #, __pu_err
# ./include/linux/unaligned/packed_struct.h:19: return ptr->x;
extll $1,$9,$1 #, tmp192, name, tmp195
extlh $4,$9,$4 # tmp193, name, tmp196
bis $1,$4,$1 # tmp195, tmp196, tmp191
# fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
.set macro
# 291 "fs/readdir.c" 1
1: stl $1,0($2) # tmp191, MEM[(struct __large_struct *)dst_147]
2:
.section __ex_table,"a"
.long 1b-.
lda $31,2b-1b($3) # __pu_err
.previous
# 0 "" 2
.set nomacro
bne $3,$L48 #, __pu_err,
# fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
.align 3 #realign #
lda $2,4($2) # dst,, dst
lda $9,4($9) # name,, name
lda $18,-4($18) # len,, len
bis $31,$31,$31
$L45:
# fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
cmpule $18,1,$1 #, len,, tmp201
bne $1,$L46 #, tmp201,
# ./include/linux/unaligned/packed_struct.h:13: return ptr->x;
ldq_u $1,0($9) #, tmp208
ldq_u $4,1($9) #, tmp209
# fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
mov $31,$3 #, __pu_err
# ./include/linux/unaligned/packed_struct.h:13: return ptr->x;
extwl $1,$9,$1 #, tmp208, name, tmp211
extwh $4,$9,$4 # tmp209, name, tmp212
bis $1,$4,$1 # tmp211, tmp212, tmp207
# fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
zapnot $1,3,$1 # tmp207, tmp216
.set macro
# 291 "fs/readdir.c" 1
1: ldq_u $7,1($2) # __pu_tmp2, dst
2: ldq_u $4,0($2) # __pu_tmp1, dst
inswh $1,$2,$23 # tmp216, dst, __pu_tmp4
inswl $1,$2,$22 # tmp216, dst, __pu_tmp3
mskwh $7,$2,$7 # __pu_tmp2, dst
mskwl $4,$2,$4 # __pu_tmp1, dst
or $7,$23,$7 # __pu_tmp2, __pu_tmp4
or $4,$22,$4 # __pu_tmp1, __pu_tmp3
3: stq_u $7,1($2) # __pu_tmp2, dst
4: stq_u $4,0($2) # __pu_tmp1, dst
5:
.section __ex_table,"a"
.long 1b-.
lda $31,5b-1b($3) # __pu_err
.previous
.section __ex_table,"a"
.long 2b-.
lda $31,5b-2b($3) # __pu_err
.previous
.section __ex_table,"a"
.long 3b-.
lda $31,5b-3b($3) # __pu_err
.previous
.section __ex_table,"a"
.long 4b-.
lda $31,5b-4b($3) # __pu_err
.previous
# 0 "" 2
.set nomacro
bne $3,$L48 #, __pu_err,
# fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
.align 3 #realign #
lda $2,2($2) # dst,, dst
lda $9,2($9) # name,, name
lda $18,-2($18) # len,, len
$L46:
# fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
beq $18,$L47 #, len,
ldq_u $3,0($9) #, tmp223
mov $31,$1 #, __pu_err
extbl $3,$9,$9 #, tmp223, name, tmp221
.set macro
# 291 "fs/readdir.c" 1
1: ldq_u $3,0($2) # __pu_tmp1, dst
insbl $9,$2,$4 # tmp221, dst, __pu_tmp2
mskbl $3,$2,$3 # __pu_tmp1, dst
or $3,$4,$3 # __pu_tmp1, __pu_tmp2
2: stq_u $3,0($2) # __pu_tmp1, dst
3:
.section __ex_table,"a"
.long 1b-.
lda $31,3b-1b($1) # __pu_err
.previous
.section __ex_table,"a"
.long 2b-.
lda $31,3b-2b($1) # __pu_err
.previous
# 0 "" 2
.set nomacro
bne $1,$L48 #, __pu_err,
# fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
lda $2,1($2) # dst,, dst
$L47:
# fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
mov $31,$1 #, __pu_err
.set macro
# 291 "fs/readdir.c" 1
1: ldq_u $3,0($2) # __pu_tmp1, dst
insbl $1,$2,$4 # __pu_err, dst, __pu_tmp2
mskbl $3,$2,$3 # __pu_tmp1, dst
or $3,$4,$3 # __pu_tmp1, __pu_tmp2
2: stq_u $3,0($2) # __pu_tmp1, dst
3:
.section __ex_table,"a"
.long 1b-.
lda $31,3b-1b($1) # __pu_err
.previous
.section __ex_table,"a"
.long 2b-.
lda $31,3b-2b($1) # __pu_err
.previous
# 0 "" 2
.set nomacro
bne $1,$L48 #, __pu_err,
# fs/readdir.c:295: dirent = (void __user *)dirent + reclen;
.align 3 #realign #
addq $6,$13,$1 # dirent, reclen, dirent
# fs/readdir.c:297: buf->count -= reclen;
subl $5,$13,$5 # _8, reclen, tmp232
# fs/readdir.c:294: buf->previous = dirent;
stq $6,24($11) # MEM[(struct getdents_callback *)ctx_55(D)].previous, dirent
# fs/readdir.c:296: buf->current_dir = dirent;
stq $1,16($11) # MEM[(struct getdents_callback *)ctx_55(D)].current_dir, dirent
# fs/readdir.c:297: buf->count -= reclen;
stl $5,32($11) # tmp232, MEM[(struct getdents_callback *)ctx_55(D)].count
# fs/readdir.c:298: return 0;
br $31,$L57 #
.align 4
$L60:
# fs/readdir.c:264: buf->error = verify_dirent_name(name, namlen);
stl $0,36($11) # <retval>, MEM[(struct getdents_callback *)ctx_55(D)].error
br $31,$L57 #
.align 4
$L61:
# fs/readdir.c:277: return -EINTR;
lda $0,-4($31) # <retval>,
br $31,$L57 #
$L51:
# fs/readdir.c:269: return -EINVAL;
lda $0,-22($31) # <retval>,
br $31,$L57 #
.cfi_endproc
$LFE3542:
.end filldir
.align 2
.align 4
.ent filldir64
filldir64:
.frame $30,64,$26,0
.mask 0x400fe00,-64
$LFB3545:
.cfi_startproc
ldah $29,0($27) !gpdisp!29 #,,
lda $29,0($29) !gpdisp!29 #,,
$filldir64..ng:
lda $30,-64($30) #,,
.cfi_def_cfa_offset 64
bis $31,$31,$31
stq $9,8($30) #,
.cfi_offset 9, -56
mov $17,$9 # tmp238, name
stq $12,32($30) #,
.cfi_offset 12, -32
# fs/readdir.c:353: int reclen = ALIGN(offsetof(struct linux_dirent64, d_name) + namlen + 1,
addl $18,27,$12 # namlen,, tmp141
# fs/readdir.c:349: {
stq $11,24($30) #,
# fs/readdir.c:353: int reclen = ALIGN(offsetof(struct linux_dirent64, d_name) + namlen + 1,
bic $12,7,$12 # tmp141,, tmp142
.cfi_offset 11, -40
# fs/readdir.c:349: {
mov $16,$11 # ctx, tmp237
# fs/readdir.c:356: buf->error = verify_dirent_name(name, namlen);
mov $18,$17 # namlen,
mov $9,$16 # name,
# fs/readdir.c:353: int reclen = ALIGN(offsetof(struct linux_dirent64, d_name) + namlen + 1,
addl $31,$12,$12 # tmp142, reclen
# fs/readdir.c:349: {
stq $10,16($30) #,
.cfi_offset 10, -48
mov $18,$10 # tmp239, namlen
stq $13,40($30) #,
.cfi_offset 13, -24
mov $21,$13 # tmp242, d_type
stq $14,48($30) #,
.cfi_offset 14, -16
mov $20,$14 # tmp241, ino
stq $15,56($30) #,
.cfi_offset 15, -8
mov $19,$15 # tmp240, offset
stq $26,0($30) #,
.cfi_offset 26, -64
.prologue 1
# fs/readdir.c:356: buf->error = verify_dirent_name(name, namlen);
ldq $27,verify_dirent_name($29) !literal!30 #
jsr $26,($27),0 !lituse_jsr!30
ldah $29,0($26) !gpdisp!31
lda $29,0($29) !gpdisp!31
# fs/readdir.c:357: if (unlikely(buf->error))
bne $0,$L86 #, <retval>,
# fs/readdir.c:359: buf->error = -EINVAL; /* only used if we fail.. */
lda $1,-22($31) # tmp145,
# fs/readdir.c:360: if (reclen > buf->count)
ldl $5,32($11) # _8, MEM[(struct getdents_callback64 *)ctx_45(D)].count
# fs/readdir.c:359: buf->error = -EINVAL; /* only used if we fail.. */
stl $1,36($11) # tmp145, MEM[(struct getdents_callback64 *)ctx_45(D)].error
# fs/readdir.c:360: if (reclen > buf->count)
bis $31,$31,$31
cmplt $5,$12,$1 #, _8, reclen, tmp146
bne $1,$L77 #, tmp146,
# fs/readdir.c:362: dirent = buf->previous;
ldq $2,24($11) # MEM[(struct getdents_callback64 *)ctx_45(D)].previous, dirent
# fs/readdir.c:363: if (dirent && signal_pending(current))
beq $2,$L66 #, dirent,
# ./include/linux/sched.h:1737: return test_ti_thread_flag(task_thread_info(tsk), flag);
ldq $1,64($8) # __current_thread_info.30_9->task, __current_thread_info.30_9->task
# ./arch/alpha/include/asm/bitops.h:289: return (1UL & (((const int *) addr)[nr >> 5] >> (nr & 31))) != 0UL;
ldq $1,8($1) # _10->stack, _10->stack
# ./arch/alpha/include/asm/bitops.h:289: return (1UL & (((const int *) addr)[nr >> 5] >> (nr & 31))) != 0UL;
ldl $1,72($1) # MEM[(const int *)_115 + 72B], MEM[(const int *)_115 + 72B]
# fs/readdir.c:363: if (dirent && signal_pending(current))
and $1,4,$1 # MEM[(const int *)_115 + 72B],, tmp152
cmpult $31,$1,$1 # tmp152, tmp152
bne $1,$L87 #, tmp152,
# fs/readdir.c:370: if (!user_access_begin(dirent, sizeof(*dirent)))
lda $1,23($2) # __ao_end,, dirent
ldq $3,80($8) # __current_thread_info.30_9->addr_limit.seg, __current_thread_info.30_9->addr_limit.seg
bis $1,$2,$1 # __ao_end, dirent, tmp231
bis $1,24,$1 # tmp231,, tmp232
and $1,$3,$1 # tmp232, __current_thread_info.30_9->addr_limit.seg, tmp233
# fs/readdir.c:370: if (!user_access_begin(dirent, sizeof(*dirent)))
bne $1,$L74 #, tmp233,
# fs/readdir.c:373: unsafe_put_user(offset, &dirent->d_off, efault_end);
mov $0,$1 # <retval>, __pu_err
.set macro
# 373 "fs/readdir.c" 1
1: stq $15,8($2) # offset, MEM[(struct __large_struct *)_18]
2:
.section __ex_table,"a"
.long 1b-.
lda $31,2b-1b($1) # __pu_err
.previous
# 0 "" 2
.set nomacro
bne $1,$L74 #, __pu_err,
.align 3 #realign #
$L76:
# fs/readdir.c:374: dirent = buf->current_dir;
ldq $6,16($11) # MEM[(struct getdents_callback64 *)ctx_45(D)].current_dir, dirent
# fs/readdir.c:375: unsafe_put_user(ino, &dirent->d_ino, efault_end);
mov $31,$1 #, __pu_err
.set macro
# 375 "fs/readdir.c" 1
1: stq $14,0($6) # ino, MEM[(struct __large_struct *)_24]
2:
.section __ex_table,"a"
.long 1b-.
lda $31,2b-1b($1) # __pu_err
.previous
# 0 "" 2
.set nomacro
bne $1,$L74 #, __pu_err,
# fs/readdir.c:376: unsafe_put_user(reclen, &dirent->d_reclen, efault_end);
.align 3 #realign #
zapnot $12,3,$3 # reclen, reclen
lda $2,16($6) # tmp164,, dirent
.set macro
# 376 "fs/readdir.c" 1
1: ldq_u $7,1($2) # __pu_tmp2, tmp164
2: ldq_u $4,0($2) # __pu_tmp1, tmp164
inswh $3,$2,$23 # reclen, tmp164, __pu_tmp4
inswl $3,$2,$22 # reclen, tmp164, __pu_tmp3
mskwh $7,$2,$7 # __pu_tmp2, tmp164
mskwl $4,$2,$4 # __pu_tmp1, tmp164
or $7,$23,$7 # __pu_tmp2, __pu_tmp4
or $4,$22,$4 # __pu_tmp1, __pu_tmp3
3: stq_u $7,1($2) # __pu_tmp2, tmp164
4: stq_u $4,0($2) # __pu_tmp1, tmp164
5:
.section __ex_table,"a"
.long 1b-.
lda $31,5b-1b($1) # __pu_err
.previous
.section __ex_table,"a"
.long 2b-.
lda $31,5b-2b($1) # __pu_err
.previous
.section __ex_table,"a"
.long 3b-.
lda $31,5b-3b($1) # __pu_err
.previous
.section __ex_table,"a"
.long 4b-.
lda $31,5b-4b($1) # __pu_err
.previous
# 0 "" 2
.set nomacro
bne $1,$L74 #, __pu_err,
# fs/readdir.c:377: unsafe_put_user(d_type, &dirent->d_type, efault_end);
.align 3 #realign #
and $13,0xff,$13 # d_type, d_type
lda $2,18($6) # tmp172,, dirent
.set macro
# 377 "fs/readdir.c" 1
1: ldq_u $3,0($2) # __pu_tmp1, tmp172
insbl $13,$2,$4 # d_type, tmp172, __pu_tmp2
mskbl $3,$2,$3 # __pu_tmp1, tmp172
or $3,$4,$3 # __pu_tmp1, __pu_tmp2
2: stq_u $3,0($2) # __pu_tmp1, tmp172
3:
.section __ex_table,"a"
.long 1b-.
lda $31,3b-1b($1) # __pu_err
.previous
.section __ex_table,"a"
.long 2b-.
lda $31,3b-2b($1) # __pu_err
.previous
# 0 "" 2
.set nomacro
bne $1,$L74 #, __pu_err,
# fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
.align 3 #realign #
mov $10,$18 # namlen, len
lda $2,19($6) # dst,, dirent
cmpule $10,7,$1 #, len,, tmp174
bne $1,$L69 #, tmp174,
mov $31,$7 #, tmp182
br $31,$L70 #
.align 4
$L88:
# fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
lda $2,8($2) # dst,, dst
lda $9,8($9) # name,, name
cmpule $18,7,$1 #, len,, tmp183
bne $1,$L69 #, tmp183,
$L70:
# ./include/linux/unaligned/packed_struct.h:25: return ptr->x;
ldq_u $1,0($9) #, tmp177
ldq_u $4,7($9) #, tmp178
# fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
mov $7,$3 # tmp182, __pu_err
# ./include/linux/unaligned/packed_struct.h:25: return ptr->x;
extql $1,$9,$1 #, tmp177, name, tmp180
extqh $4,$9,$4 # tmp178, name, tmp181
bis $1,$4,$1 # tmp180, tmp181, tmp176
# fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
.set macro
# 378 "fs/readdir.c" 1
1: stq $1,0($2) # tmp176, MEM[(struct __large_struct *)dst_152]
2:
.section __ex_table,"a"
.long 1b-.
lda $31,2b-1b($3) # __pu_err
.previous
# 0 "" 2
.set nomacro
.align 3 #realign #
lda $18,-8($18) # len,, len
beq $3,$L88 #, __pu_err,
$L68:
$L74:
# fs/readdir.c:389: buf->error = -EFAULT;
lda $1,-14($31) # tmp228,
# fs/readdir.c:390: return -EFAULT;
lda $0,-14($31) # <retval>,
# fs/readdir.c:389: buf->error = -EFAULT;
stl $1,36($11) # tmp228, MEM[(struct getdents_callback64 *)ctx_45(D)].error
bis $31,$31,$31
$L83:
# fs/readdir.c:391: }
ldq $26,0($30) #,
ldq $9,8($30) #,
ldq $10,16($30) #,
ldq $11,24($30) #,
ldq $12,32($30) #,
ldq $13,40($30) #,
ldq $14,48($30) #,
ldq $15,56($30) #,
lda $30,64($30) #,,
.cfi_remember_state
.cfi_restore 15
.cfi_restore 14
.cfi_restore 13
.cfi_restore 12
.cfi_restore 11
.cfi_restore 10
.cfi_restore 9
.cfi_restore 26
.cfi_def_cfa_offset 0
ret $31,($26),1
.align 4
$L66:
.cfi_restore_state
# fs/readdir.c:370: if (!user_access_begin(dirent, sizeof(*dirent)))
ldq $1,80($8) # __current_thread_info.31_163->addr_limit.seg, __current_thread_info.31_163->addr_limit.seg
and $1,31,$1 # __current_thread_info.31_163->addr_limit.seg,, tmp235
# fs/readdir.c:370: if (!user_access_begin(dirent, sizeof(*dirent)))
beq $1,$L76 #, tmp235,
br $31,$L74 #
.align 4
$L69:
# fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
cmpule $18,3,$1 #, len,, tmp184
bne $1,$L71 #, tmp184,
# ./include/linux/unaligned/packed_struct.h:19: return ptr->x;
ldq_u $1,0($9) #, tmp187
ldq_u $4,3($9) #, tmp188
# fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
mov $31,$3 #, __pu_err
# ./include/linux/unaligned/packed_struct.h:19: return ptr->x;
extll $1,$9,$1 #, tmp187, name, tmp190
extlh $4,$9,$4 # tmp188, name, tmp191
bis $1,$4,$1 # tmp190, tmp191, tmp186
# fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
.set macro
# 378 "fs/readdir.c" 1
1: stl $1,0($2) # tmp186, MEM[(struct __large_struct *)dst_145]
2:
.section __ex_table,"a"
.long 1b-.
lda $31,2b-1b($3) # __pu_err
.previous
# 0 "" 2
.set nomacro
bne $3,$L74 #, __pu_err,
# fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
.align 3 #realign #
lda $2,4($2) # dst,, dst
lda $9,4($9) # name,, name
lda $18,-4($18) # len,, len
bis $31,$31,$31
$L71:
# fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
cmpule $18,1,$1 #, len,, tmp196
bne $1,$L72 #, tmp196,
# ./include/linux/unaligned/packed_struct.h:13: return ptr->x;
ldq_u $1,0($9) #, tmp203
ldq_u $4,1($9) #, tmp204
# fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
mov $31,$3 #, __pu_err
# ./include/linux/unaligned/packed_struct.h:13: return ptr->x;
extwl $1,$9,$1 #, tmp203, name, tmp206
extwh $4,$9,$4 # tmp204, name, tmp207
bis $1,$4,$1 # tmp206, tmp207, tmp202
# fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
zapnot $1,3,$1 # tmp202, tmp211
.set macro
# 378 "fs/readdir.c" 1
1: ldq_u $7,1($2) # __pu_tmp2, dst
2: ldq_u $4,0($2) # __pu_tmp1, dst
inswh $1,$2,$23 # tmp211, dst, __pu_tmp4
inswl $1,$2,$22 # tmp211, dst, __pu_tmp3
mskwh $7,$2,$7 # __pu_tmp2, dst
mskwl $4,$2,$4 # __pu_tmp1, dst
or $7,$23,$7 # __pu_tmp2, __pu_tmp4
or $4,$22,$4 # __pu_tmp1, __pu_tmp3
3: stq_u $7,1($2) # __pu_tmp2, dst
4: stq_u $4,0($2) # __pu_tmp1, dst
5:
.section __ex_table,"a"
.long 1b-.
lda $31,5b-1b($3) # __pu_err
.previous
.section __ex_table,"a"
.long 2b-.
lda $31,5b-2b($3) # __pu_err
.previous
.section __ex_table,"a"
.long 3b-.
lda $31,5b-3b($3) # __pu_err
.previous
.section __ex_table,"a"
.long 4b-.
lda $31,5b-4b($3) # __pu_err
.previous
# 0 "" 2
.set nomacro
bne $3,$L74 #, __pu_err,
# fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
.align 3 #realign #
lda $2,2($2) # dst,, dst
lda $9,2($9) # name,, name
lda $18,-2($18) # len,, len
$L72:
# fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
beq $18,$L73 #, len,
ldq_u $3,0($9) #, tmp218
mov $31,$1 #, __pu_err
extbl $3,$9,$9 #, tmp218, name, tmp216
.set macro
# 378 "fs/readdir.c" 1
1: ldq_u $3,0($2) # __pu_tmp1, dst
insbl $9,$2,$4 # tmp216, dst, __pu_tmp2
mskbl $3,$2,$3 # __pu_tmp1, dst
or $3,$4,$3 # __pu_tmp1, __pu_tmp2
2: stq_u $3,0($2) # __pu_tmp1, dst
3:
.section __ex_table,"a"
.long 1b-.
lda $31,3b-1b($1) # __pu_err
.previous
.section __ex_table,"a"
.long 2b-.
lda $31,3b-2b($1) # __pu_err
.previous
# 0 "" 2
.set nomacro
bne $1,$L74 #, __pu_err,
# fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
lda $2,1($2) # dst,, dst
$L73:
# fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end);
mov $31,$1 #, __pu_err
.set macro
# 378 "fs/readdir.c" 1
1: ldq_u $3,0($2) # __pu_tmp1, dst
insbl $1,$2,$4 # __pu_err, dst, __pu_tmp2
mskbl $3,$2,$3 # __pu_tmp1, dst
or $3,$4,$3 # __pu_tmp1, __pu_tmp2
2: stq_u $3,0($2) # __pu_tmp1, dst
3:
.section __ex_table,"a"
.long 1b-.
lda $31,3b-1b($1) # __pu_err
.previous
.section __ex_table,"a"
.long 2b-.
lda $31,3b-2b($1) # __pu_err
.previous
# 0 "" 2
.set nomacro
bne $1,$L74 #, __pu_err,
# fs/readdir.c:382: dirent = (void __user *)dirent + reclen;
.align 3 #realign #
addq $6,$12,$1 # dirent, reclen, dirent
# fs/readdir.c:384: buf->count -= reclen;
subl $5,$12,$5 # _8, reclen, tmp227
# fs/readdir.c:381: buf->previous = dirent;
stq $6,24($11) # MEM[(struct getdents_callback64 *)ctx_45(D)].previous, dirent
# fs/readdir.c:383: buf->current_dir = dirent;
stq $1,16($11) # MEM[(struct getdents_callback64 *)ctx_45(D)].current_dir, dirent
# fs/readdir.c:384: buf->count -= reclen;
stl $5,32($11) # tmp227, MEM[(struct getdents_callback64 *)ctx_45(D)].count
# fs/readdir.c:385: return 0;
br $31,$L83 #
.align 4
$L86:
# fs/readdir.c:356: buf->error = verify_dirent_name(name, namlen);
stl $0,36($11) # <retval>, MEM[(struct getdents_callback64 *)ctx_45(D)].error
br $31,$L83 #
.align 4
$L87:
# fs/readdir.c:364: return -EINTR;
lda $0,-4($31) # <retval>,
br $31,$L83 #
$L77:
# fs/readdir.c:361: return -EINVAL;
lda $0,-22($31) # <retval>,
br $31,$L83 #
.cfi_endproc
$LFE3545:
.end filldir64
.align 2
.align 4
.globl __se_sys_old_readdir
.ent __se_sys_old_readdir
__se_sys_old_readdir:
.frame $30,64,$26,0
.mask 0x4000e00,-64
$LFB3540:
.cfi_startproc
ldah $29,0($27) !gpdisp!32 #,,
lda $29,0($29) !gpdisp!32 #,,
$__se_sys_old_readdir..ng:
lda $30,-64($30) #,,
.cfi_def_cfa_offset 64
# ./include/linux/file.h:72: return __to_fd(__fdget_pos(fd));
ldq $27,__fdget_pos($29) !literal!37 #,,,
# fs/readdir.c:212: SYSCALL_DEFINE3(old_readdir, unsigned int, fd,
stq $9,8($30) #,
# ./include/linux/file.h:72: return __to_fd(__fdget_pos(fd));
addl $31,$16,$16 # tmp100,
# fs/readdir.c:212: SYSCALL_DEFINE3(old_readdir, unsigned int, fd,
stq $10,16($30) #,
.cfi_offset 9, -56
.cfi_offset 10, -48
mov $17,$10 # tmp101, dirent
stq $11,24($30) #,
stq $26,0($30) #,
.cfi_offset 11, -40
.cfi_offset 26, -64
.prologue 1
# ./include/linux/file.h:72: return __to_fd(__fdget_pos(fd));
jsr $26,($27),__fdget_pos !lituse_jsr!37 #,,
ldah $29,0($26) !gpdisp!38 #
# fs/readdir.c:217: struct readdir_callback buf = {
stq $31,40($30) # MEM[(struct readdir_callback *)&buf + 8B],
# ./include/linux/file.h:72: return __to_fd(__fdget_pos(fd));
lda $29,0($29) !gpdisp!38 #,,
# ./include/linux/file.h:57: return (struct fd){(struct file *)(v & ~3),v & 3};
bic $0,3,$11 # _9,, _11
# fs/readdir.c:217: struct readdir_callback buf = {
ldq_u $31,0($30)
ldah $1,fillonedir($29) !gprelhigh # tmp88,,
# ./include/linux/file.h:57: return (struct fd){(struct file *)(v & ~3),v & 3};
addl $31,$0,$9 # _9, _12
# fs/readdir.c:217: struct readdir_callback buf = {
lda $1,fillonedir($1) !gprellow # tmp87,, tmp88
# fs/readdir.c:223: return -EBADF;
lda $0,-9($31) # <retval>,
# fs/readdir.c:217: struct readdir_callback buf = {
stq $31,56($30) # MEM[(struct readdir_callback *)&buf + 8B],
stq $1,32($30) # buf.ctx.actor, tmp87
stq $10,48($30) # buf.dirent, dirent
# fs/readdir.c:222: if (!f.file)
beq $11,$L89 #, _11,
# fs/readdir.c:225: error = iterate_dir(f.file, &buf.ctx);
lda $17,32($30) #,,
mov $11,$16 # _11,
ldq $27,iterate_dir($29) !literal!39 #
jsr $26,($27),0 !lituse_jsr!39
ldah $29,0($26) !gpdisp!40
lda $29,0($29) !gpdisp!40
mov $0,$10 #, tmp103
# fs/readdir.c:226: if (buf.result)
ldl $0,56($30) # _15, buf.result
# ./include/linux/file.h:77: if (f.flags & FDPUT_POS_UNLOCK)
and $9,2,$1 # _12,, tmp94
# fs/readdir.c:226: if (buf.result)
cmovne $0,$0,$10 #, _15, _15, error
# ./include/linux/file.h:77: if (f.flags & FDPUT_POS_UNLOCK)
bne $1,$L104 #, tmp94,
# ./include/linux/file.h:43: if (fd.flags & FDPUT_FPUT)
blbs $9,$L105 # _12,
$L93:
# fs/readdir.c:230: return error;
mov $10,$0 # error, <retval>
$L89:
# fs/readdir.c:212: SYSCALL_DEFINE3(old_readdir, unsigned int, fd,
ldq $26,0($30) #,
ldq $9,8($30) #,
bis $31,$31,$31
ldq $10,16($30) #,
ldq $11,24($30) #,
lda $30,64($30) #,,
.cfi_remember_state
.cfi_restore 11
.cfi_restore 10
.cfi_restore 9
.cfi_restore 26
.cfi_def_cfa_offset 0
ret $31,($26),1
.align 4
$L105:
.cfi_restore_state
# ./include/linux/file.h:44: fput(fd.file);
ldq $27,fput($29) !literal!33 #,,,
mov $11,$16 # _11,
jsr $26,($27),fput !lituse_jsr!33 #,,
ldah $29,0($26) !gpdisp!34 #
lda $29,0($29) !gpdisp!34 #,,
br $31,$L93 #
.align 4
$L104:
# ./include/linux/file.h:78: __f_unlock_pos(f.file);
ldq $27,__f_unlock_pos($29) !literal!35 #,,,
mov $11,$16 # _11,
jsr $26,($27),__f_unlock_pos !lituse_jsr!35 #,,
ldah $29,0($26) !gpdisp!36 #
lda $29,0($29) !gpdisp!36 #,,
# ./include/linux/file.h:43: if (fd.flags & FDPUT_FPUT)
blbc $9,$L93 # _12,
br $31,$L105 #
.cfi_endproc
$LFE3540:
.end __se_sys_old_readdir
.globl sys_old_readdir
$sys_old_readdir..ng = $__se_sys_old_readdir..ng
sys_old_readdir = __se_sys_old_readdir
.align 2
.align 4
.globl __se_sys_getdents
.ent __se_sys_getdents
__se_sys_getdents:
.frame $30,96,$26,0
.mask 0x4001e00,-96
$LFB3543:
.cfi_startproc
ldah $29,0($27) !gpdisp!41 #,,
lda $29,0($29) !gpdisp!41 #,,
$__se_sys_getdents..ng:
# fs/readdir.c:318: if (!access_ok(dirent, count))
zapnot $18,15,$2 # count,, __ao_b
# fs/readdir.c:306: SYSCALL_DEFINE3(getdents, unsigned int, fd,
lda $30,-96($30) #,,
.cfi_def_cfa_offset 96
# fs/readdir.c:318: if (!access_ok(dirent, count))
cmpult $31,$2,$3 # __ao_b, tmp119
addq $17,$2,$1 # dirent, __ao_b, tmp117
subq $1,$3,$1 # tmp117, tmp119, __ao_end
bis $17,$2,$2 # dirent, __ao_b, tmp121
# fs/readdir.c:306: SYSCALL_DEFINE3(getdents, unsigned int, fd,
stq $10,16($30) #,
# fs/readdir.c:318: if (!access_ok(dirent, count))
bis $1,$2,$1 # __ao_end, tmp121, tmp122
# fs/readdir.c:306: SYSCALL_DEFINE3(getdents, unsigned int, fd,
stq $11,24($30) #,
# fs/readdir.c:311: struct getdents_callback buf = {
ldah $2,filldir($29) !gprelhigh # tmp116,,
# fs/readdir.c:306: SYSCALL_DEFINE3(getdents, unsigned int, fd,
stq $26,0($30) #,
# fs/readdir.c:311: struct getdents_callback buf = {
lda $2,filldir($2) !gprellow # tmp115,, tmp116
# fs/readdir.c:306: SYSCALL_DEFINE3(getdents, unsigned int, fd,
stq $9,8($30) #,
.cfi_offset 10, -80
.cfi_offset 11, -72
.cfi_offset 26, -96
.cfi_offset 9, -88
mov $18,$10 # tmp152, count
stq $12,32($30) #,
.cfi_offset 12, -64
.prologue 1
# fs/readdir.c:306: SYSCALL_DEFINE3(getdents, unsigned int, fd,
addl $31,$16,$16 # tmp150, _1
# fs/readdir.c:311: struct getdents_callback buf = {
stq $31,80($30) # MEM[(struct getdents_callback *)&buf + 8B],
# fs/readdir.c:319: return -EFAULT;
lda $11,-14($31) # <retval>,
# fs/readdir.c:318: if (!access_ok(dirent, count))
ldq $3,80($8) # __current_thread_info.12_17->addr_limit.seg, __current_thread_info.12_17->addr_limit.seg
# fs/readdir.c:311: struct getdents_callback buf = {
stq $31,56($30) # MEM[(struct getdents_callback *)&buf + 8B],
stq $31,72($30) # MEM[(struct getdents_callback *)&buf + 8B],
# fs/readdir.c:318: if (!access_ok(dirent, count))
and $1,$3,$1 # tmp122, __current_thread_info.12_17->addr_limit.seg, tmp123
# fs/readdir.c:311: struct getdents_callback buf = {
stq $2,48($30) # buf.ctx.actor, tmp115
stq $17,64($30) # buf.current_dir, dirent
stl $18,80($30) # count, buf.count
# fs/readdir.c:318: if (!access_ok(dirent, count))
bne $1,$L106 #, tmp123,
# ./include/linux/file.h:72: return __to_fd(__fdget_pos(fd));
ldq $27,__fdget_pos($29) !literal!46 #,,,
bis $31,$31,$31
jsr $26,($27),__fdget_pos !lituse_jsr!46 #,,
ldah $29,0($26) !gpdisp!47 #
lda $29,0($29) !gpdisp!47 #,,
# ./include/linux/file.h:57: return (struct fd){(struct file *)(v & ~3),v & 3};
bic $0,3,$12 # _22,, _24
# ./include/linux/file.h:57: return (struct fd){(struct file *)(v & ~3),v & 3};
addl $31,$0,$9 # _22, _25
# fs/readdir.c:322: if (!f.file)
beq $12,$L114 #, _24,
# fs/readdir.c:325: error = iterate_dir(f.file, &buf.ctx);
lda $17,48($30) #,,
mov $12,$16 # _24,
ldq $27,iterate_dir($29) !literal!48 #
jsr $26,($27),0 !lituse_jsr!48
ldah $29,0($26) !gpdisp!49
lda $29,0($29) !gpdisp!49
# fs/readdir.c:327: error = buf.error;
ldl $1,84($30) # buf.error, buf.error
# fs/readdir.c:328: lastdirent = buf.previous;
ldq $3,72($30) # buf.previous, lastdirent
# fs/readdir.c:327: error = buf.error;
cmovge $0,$1,$0 #, tmp154, buf.error, error
# fs/readdir.c:329: if (lastdirent) {
beq $3,$L123 #, lastdirent,
# fs/readdir.c:330: if (put_user(buf.ctx.pos, &lastdirent->d_off))
lda $2,15($3) # __ao_end,, lastdirent
lda $1,8($3) # __pu_addr,, lastdirent
bis $2,$1,$1 # __ao_end, __pu_addr, tmp130
ldq $2,80($8) # __current_thread_info.14_33->addr_limit.seg, __current_thread_info.14_33->addr_limit.seg
bis $1,8,$1 # tmp130,, tmp131
bis $31,$31,$31
and $1,$2,$1 # tmp131, __current_thread_info.14_33->addr_limit.seg, tmp132
bne $1,$L110 #, tmp132,
ldq $2,56($30) # buf.ctx.pos, buf.ctx.pos
.set macro
# 330 "fs/readdir.c" 1
1: stq $2,8($3) # buf.ctx.pos, MEM[(struct __large_struct *)__pu_addr_30]
2:
.section __ex_table,"a"
.long 1b-.
lda $31,2b-1b($1) # __pu_err
.previous
# 0 "" 2
# fs/readdir.c:330: if (put_user(buf.ctx.pos, &lastdirent->d_off))
.set nomacro
beq $1,$L124 #, __pu_err,
.align 3 #realign #
$L110:
# ./include/linux/file.h:77: if (f.flags & FDPUT_POS_UNLOCK)
and $9,2,$1 # _25,, tmp142
bne $1,$L125 #, tmp142,
$L111:
# ./include/linux/file.h:43: if (fd.flags & FDPUT_FPUT)
bis $31,$31,$31
blbs $9,$L126 # _25,
$L106:
# fs/readdir.c:306: SYSCALL_DEFINE3(getdents, unsigned int, fd,
mov $11,$0 # <retval>,
ldq $26,0($30) #,
ldq $9,8($30) #,
ldq $10,16($30) #,
ldq $11,24($30) #,
ldq $12,32($30) #,
lda $30,96($30) #,,
.cfi_remember_state
.cfi_restore 12
.cfi_restore 11
.cfi_restore 10
.cfi_restore 9
.cfi_restore 26
.cfi_def_cfa_offset 0
ret $31,($26),1
.align 4
$L125:
.cfi_restore_state
# ./include/linux/file.h:78: __f_unlock_pos(f.file);
ldq $27,__f_unlock_pos($29) !literal!44 #,,,
mov $12,$16 # _24,
jsr $26,($27),__f_unlock_pos !lituse_jsr!44 #,,
ldah $29,0($26) !gpdisp!45 #
lda $29,0($29) !gpdisp!45 #,,
# ./include/linux/file.h:43: if (fd.flags & FDPUT_FPUT)
blbc $9,$L106 # _25,
$L126:
# ./include/linux/file.h:44: fput(fd.file);
ldq $27,fput($29) !literal!42 #,,,
mov $12,$16 # _24,
jsr $26,($27),fput !lituse_jsr!42 #,,
ldah $29,0($26) !gpdisp!43 #
# fs/readdir.c:306: SYSCALL_DEFINE3(getdents, unsigned int, fd,
ldq $9,8($30) #,
bis $31,$31,$31
mov $11,$0 # <retval>,
ldq $26,0($30) #,
ldq $10,16($30) #,
ldq $11,24($30) #,
ldq $12,32($30) #,
# ./include/linux/file.h:44: fput(fd.file);
lda $29,0($29) !gpdisp!43 #,,
# fs/readdir.c:306: SYSCALL_DEFINE3(getdents, unsigned int, fd,
lda $30,96($30) #,,
.cfi_remember_state
.cfi_restore 12
.cfi_restore 11
.cfi_restore 10
.cfi_restore 9
.cfi_restore 26
.cfi_def_cfa_offset 0
ret $31,($26),1
.align 4
$L123:
.cfi_restore_state
mov $0,$11 # error, <retval>
# ./include/linux/file.h:77: if (f.flags & FDPUT_POS_UNLOCK)
and $9,2,$1 # _25,, tmp142
beq $1,$L111 #, tmp142,
br $31,$L125 #
.align 4
$L124:
# fs/readdir.c:333: error = count - buf.count;
ldl $11,80($30) #, buf.count
# ./include/linux/file.h:77: if (f.flags & FDPUT_POS_UNLOCK)
and $9,2,$1 # _25,, tmp142
subl $10,$11,$11 # count, buf.count, <retval>
beq $1,$L111 #, tmp142,
br $31,$L125 #
$L114:
# fs/readdir.c:323: return -EBADF;
lda $11,-9($31) # <retval>,
# fs/readdir.c:306: SYSCALL_DEFINE3(getdents, unsigned int, fd,
br $31,$L106 #
.cfi_endproc
$LFE3543:
.end __se_sys_getdents
.globl sys_getdents
$sys_getdents..ng = $__se_sys_getdents..ng
sys_getdents = __se_sys_getdents
.align 2
.align 4
.globl ksys_getdents64
.ent ksys_getdents64
ksys_getdents64:
.frame $30,96,$26,0
.mask 0x4003e00,-96
$LFB3546:
.cfi_startproc
ldah $29,0($27) !gpdisp!50 #,,
lda $29,0($29) !gpdisp!50 #,,
$ksys_getdents64..ng:
# fs/readdir.c:405: if (!access_ok(dirent, count))
zapnot $18,15,$1 # count, __ao_b
# fs/readdir.c:395: {
lda $30,-96($30) #,,
.cfi_def_cfa_offset 96
stq $9,8($30) #,
# fs/readdir.c:405: if (!access_ok(dirent, count))
cmpult $31,$1,$2 # __ao_b, tmp105
# fs/readdir.c:395: {
stq $10,16($30) #,
.cfi_offset 9, -88
.cfi_offset 10, -80
# fs/readdir.c:405: if (!access_ok(dirent, count))
addq $17,$1,$9 # dirent, __ao_b, tmp103
subq $9,$2,$9 # tmp103, tmp105, __ao_end
bis $17,$1,$1 # dirent, __ao_b, tmp107
# fs/readdir.c:395: {
stq $12,32($30) #,
# fs/readdir.c:405: if (!access_ok(dirent, count))
bis $9,$1,$9 # __ao_end, tmp107, tmp108
# fs/readdir.c:395: {
stq $26,0($30) #,
# fs/readdir.c:398: struct getdents_callback64 buf = {
ldah $1,filldir64($29) !gprelhigh # tmp102,,
# fs/readdir.c:395: {
stq $11,24($30) #,
# fs/readdir.c:398: struct getdents_callback64 buf = {
lda $1,filldir64($1) !gprellow # tmp101,, tmp102
# fs/readdir.c:395: {
stq $13,40($30) #,
.cfi_offset 12, -64
.cfi_offset 26, -96
.cfi_offset 11, -72
.cfi_offset 13, -56
.prologue 1
# fs/readdir.c:395: {
mov $18,$12 # tmp132, count
# fs/readdir.c:398: struct getdents_callback64 buf = {
stq $31,80($30) # MEM[(struct getdents_callback64 *)&buf + 8B],
# fs/readdir.c:406: return -EFAULT;
lda $10,-14($31) # <retval>,
# fs/readdir.c:405: if (!access_ok(dirent, count))
ldq $2,80($8) # __current_thread_info.25_5->addr_limit.seg, __current_thread_info.25_5->addr_limit.seg
# fs/readdir.c:398: struct getdents_callback64 buf = {
stq $31,56($30) # MEM[(struct getdents_callback64 *)&buf + 8B],
stq $31,72($30) # MEM[(struct getdents_callback64 *)&buf + 8B],
# fs/readdir.c:405: if (!access_ok(dirent, count))
and $9,$2,$9 # tmp108, __current_thread_info.25_5->addr_limit.seg, tmp109
# fs/readdir.c:398: struct getdents_callback64 buf = {
stq $1,48($30) # buf.ctx.actor, tmp101
stq $17,64($30) # buf.current_dir, dirent
stl $18,80($30) # count, buf.count
# fs/readdir.c:405: if (!access_ok(dirent, count))
bne $9,$L128 #, tmp109,
# ./include/linux/file.h:72: return __to_fd(__fdget_pos(fd));
ldq $27,__fdget_pos($29) !literal!55 #,,,
# fs/readdir.c:410: return -EBADF;
lda $10,-9($31) # <retval>,
# ./include/linux/file.h:72: return __to_fd(__fdget_pos(fd));
jsr $26,($27),__fdget_pos !lituse_jsr!55 #,,
ldah $29,0($26) !gpdisp!56 #
lda $29,0($29) !gpdisp!56 #,,
# ./include/linux/file.h:57: return (struct fd){(struct file *)(v & ~3),v & 3};
bic $0,3,$13 # _38,, _40
# ./include/linux/file.h:57: return (struct fd){(struct file *)(v & ~3),v & 3};
addl $31,$0,$11 # _38, _41
# fs/readdir.c:409: if (!f.file)
beq $13,$L128 #, _40,
# fs/readdir.c:412: error = iterate_dir(f.file, &buf.ctx);
lda $17,48($30) #,,
mov $13,$16 # _40,
ldq $27,iterate_dir($29) !literal!57 #
jsr $26,($27),0 !lituse_jsr!57
ldah $29,0($26) !gpdisp!58
lda $29,0($29) !gpdisp!58
# fs/readdir.c:414: error = buf.error;
ldl $10,84($30) # buf.error, buf.error
# fs/readdir.c:415: lastdirent = buf.previous;
ldq $1,72($30) # buf.previous, lastdirent
# fs/readdir.c:414: error = buf.error;
cmovlt $0,$0,$10 #, tmp134, tmp134, <retval>
# fs/readdir.c:416: if (lastdirent) {
beq $1,$L130 #, lastdirent,
# fs/readdir.c:418: if (__put_user(d_off, &lastdirent->d_off))
ldq $2,56($30) # buf.ctx.pos, buf.ctx.pos
.set macro
# 418 "fs/readdir.c" 1
1: stq $2,8($1) # buf.ctx.pos, MEM[(struct __large_struct *)_15]
2:
.section __ex_table,"a"
.long 1b-.
lda $31,2b-1b($9) # __pu_err
.previous
# 0 "" 2
# fs/readdir.c:419: error = -EFAULT;
.set nomacro
.align 3 #realign #
lda $10,-14($31) # <retval>,
# fs/readdir.c:418: if (__put_user(d_off, &lastdirent->d_off))
beq $9,$L144 #, __pu_err,
$L130:
# ./include/linux/file.h:77: if (f.flags & FDPUT_POS_UNLOCK)
and $11,2,$1 # _41,, tmp123
bne $1,$L145 #, tmp123,
$L131:
# ./include/linux/file.h:43: if (fd.flags & FDPUT_FPUT)
bis $31,$31,$31
blbs $11,$L146 # _41,
$L128:
# fs/readdir.c:425: }
mov $10,$0 # <retval>,
ldq $26,0($30) #,
ldq $9,8($30) #,
ldq $10,16($30) #,
ldq $11,24($30) #,
ldq $12,32($30) #,
ldq $13,40($30) #,
bis $31,$31,$31
lda $30,96($30) #,,
.cfi_remember_state
.cfi_restore 13
.cfi_restore 12
.cfi_restore 11
.cfi_restore 10
.cfi_restore 9
.cfi_restore 26
.cfi_def_cfa_offset 0
ret $31,($26),1
.align 4
$L144:
.cfi_restore_state
# fs/readdir.c:421: error = count - buf.count;
ldl $10,80($30) #, buf.count
# ./include/linux/file.h:77: if (f.flags & FDPUT_POS_UNLOCK)
and $11,2,$1 # _41,, tmp123
# fs/readdir.c:421: error = count - buf.count;
subl $12,$10,$10 # count, buf.count, <retval>
# ./include/linux/file.h:77: if (f.flags & FDPUT_POS_UNLOCK)
beq $1,$L131 #, tmp123,
$L145:
# ./include/linux/file.h:78: __f_unlock_pos(f.file);
ldq $27,__f_unlock_pos($29) !literal!53 #,,,
mov $13,$16 # _40,
jsr $26,($27),__f_unlock_pos !lituse_jsr!53 #,,
ldah $29,0($26) !gpdisp!54 #
lda $29,0($29) !gpdisp!54 #,,
# ./include/linux/file.h:43: if (fd.flags & FDPUT_FPUT)
blbc $11,$L128 # _41,
$L146:
# ./include/linux/file.h:44: fput(fd.file);
ldq $27,fput($29) !literal!51 #,,,
mov $13,$16 # _40,
jsr $26,($27),fput !lituse_jsr!51 #,,
ldah $29,0($26) !gpdisp!52 #
lda $29,0($29) !gpdisp!52 #,,
br $31,$L128 #
.cfi_endproc
$LFE3546:
.end ksys_getdents64
.align 2
.align 4
.globl __se_sys_getdents64
.ent __se_sys_getdents64
__se_sys_getdents64:
.frame $30,16,$26,0
.mask 0x4000000,-16
$LFB3547:
.cfi_startproc
ldah $29,0($27) !gpdisp!59 #,,
lda $29,0($29) !gpdisp!59 #,,
$__se_sys_getdents64..ng:
lda $30,-16($30) #,,
.cfi_def_cfa_offset 16
# fs/readdir.c:431: return ksys_getdents64(fd, dirent, count);
addl $31,$18,$18 # tmp84,
# fs/readdir.c:428: SYSCALL_DEFINE3(getdents64, unsigned int, fd,
stq $26,0($30) #,
.cfi_offset 26, -16
.prologue 1
# fs/readdir.c:431: return ksys_getdents64(fd, dirent, count);
addl $31,$16,$16 # tmp83,
ldq $27,ksys_getdents64($29) !literal!60 #
jsr $26,($27),0 !lituse_jsr!60
ldah $29,0($26) !gpdisp!61
lda $29,0($29) !gpdisp!61
# fs/readdir.c:428: SYSCALL_DEFINE3(getdents64, unsigned int, fd,
ldq $26,0($30) #,
bis $31,$31,$31
lda $30,16($30) #,,
.cfi_restore 26
.cfi_def_cfa_offset 0
ret $31,($26),1
.cfi_endproc
$LFE3547:
.end __se_sys_getdents64
.globl sys_getdents64
$sys_getdents64..ng = $__se_sys_getdents64..ng
sys_getdents64 = __se_sys_getdents64
.section .data.once,"aw"
.type __warned.38914, @object
.size __warned.38914, 1
__warned.38914:
.zero 1
.type __warned.38909, @object
.size __warned.38909, 1
__warned.38909:
.zero 1
.section ___ksymtab+iterate_dir,"a"
.align 3
.type __ksymtab_iterate_dir, @object
.size __ksymtab_iterate_dir, 24
__ksymtab_iterate_dir:
# value:
.quad iterate_dir
# name:
.quad __kstrtab_iterate_dir
# namespace:
.quad 0
.section __ksymtab_strings,"a"
.type __kstrtab_iterate_dir, @object
.size __kstrtab_iterate_dir, 12
__kstrtab_iterate_dir:
.string "iterate_dir"
.ident "GCC: (GNU) 9.2.0"
.section .note.GNU-stack,"",@progbits
fs/readdir.o: file format elf64-alpha
Disassembly of section .text:
0000000000000000 <iterate_dir>:
0: 00 00 bb 27 ldah gp,0(t12)
4: 00 00 bd 23 lda gp,0(gp)
8: c0 ff de 23 lda sp,-64(sp)
c: 1f 04 ff 47 nop
10: 08 00 3e b5 stq s0,8(sp)
14: 09 04 f0 47 mov a0,s0
18: 18 00 7e b5 stq s2,24(sp)
1c: 0b 04 f1 47 mov a1,s2
20: 00 00 5e b7 stq ra,0(sp)
24: 10 00 5e b5 stq s1,16(sp)
28: 20 00 9e b5 stq s3,32(sp)
2c: 28 00 be b5 stq s4,40(sp)
30: 30 00 de b5 stq s5,48(sp)
34: 38 00 fe b5 stq fp,56(sp)
38: 28 00 30 a4 ldq t0,40(a0)
3c: 20 00 90 a5 ldq s3,32(a0)
40: 40 00 41 a4 ldq t1,64(t0)
44: 52 00 40 e4 beq t1,190 <iterate_dir+0x190>
48: a0 00 ac 21 lda s4,160(s3)
4c: 00 00 7d a7 ldq t12,0(gp)
50: 10 04 ed 47 mov s4,a0
54: 01 00 df 21 lda s5,1
58: 00 40 5b 6b jsr ra,(t12),5c <iterate_dir+0x5c>
5c: 00 00 ba 27 ldah gp,0(ra)
60: 00 00 bd 23 lda gp,0(gp)
64: 0a 04 e0 47 mov v0,s1
68: 00 00 fe 2f unop
6c: 32 00 40 f5 bne s1,138 <iterate_dir+0x138>
70: 0c 00 2c a0 ldl t0,12(s3)
74: fe ff 5f 21 lda s1,-2
78: 01 10 22 44 and t0,0x10,t0
7c: 28 00 20 f4 bne t0,120 <iterate_dir+0x120>
80: 98 00 29 a4 ldq t0,152(s0)
84: 11 04 eb 47 mov s2,a1
88: 10 04 e9 47 mov s0,a0
8c: 08 00 2b b4 stq t0,8(s2)
90: 28 00 29 a4 ldq t0,40(s0)
94: 4e 00 c0 f5 bne s5,1d0 <iterate_dir+0x1d0>
98: 38 00 61 a7 ldq t12,56(t0)
9c: 00 40 5b 6b jsr ra,(t12),a0 <iterate_dir+0xa0>
a0: 00 00 ba 27 ldah gp,0(ra)
a4: 00 00 bd 23 lda gp,0(gp)
a8: 0a 04 e0 47 mov v0,s1
ac: 1f 04 ff 47 nop
b0: 08 00 2b a4 ldq t0,8(s2)
b4: 20 00 89 a5 ldq s3,32(s0)
b8: 5c 00 49 a0 ldl t1,92(s0)
bc: 00 40 5f 26 ldah a2,16384
c0: 98 00 29 b4 stq t0,152(s0)
c4: 01 00 52 22 lda a2,1(a2)
c8: 00 00 2c a0 ldl t0,0(s3)
cc: 01 00 7f 21 lda s2,1
d0: 82 56 43 48 srl t1,0x1a,t1
d4: 10 00 e9 21 lda fp,16(s0)
d8: c3 12 20 48 extwl t0,0,t2
dc: 00 f0 3f 20 lda t0,-4096
e0: 01 00 23 44 and t0,t2,t0
e4: 00 c0 21 20 lda t0,-16384(t0)
e8: 8b 04 32 44 cmoveq t0,a2,s2
ec: 40 00 40 e0 blbc t1,1f0 <iterate_dir+0x1f0>
f0: 58 00 29 a0 ldl t0,88(s0)
f4: 81 96 22 48 srl t0,0x14,t0
f8: 00 00 fe 2f unop
fc: 08 00 20 f0 blbs t0,120 <iterate_dir+0x120>
100: 00 00 7d a7 ldq t12,0(gp)
104: 10 04 ef 47 mov fp,a0
108: 00 40 5b 6b jsr ra,(t12),10c <iterate_dir+0x10c>
10c: 00 00 ba 27 ldah gp,0(ra)
110: 00 00 bd 23 lda gp,0(gp)
114: 00 00 fe 2f unop
118: 1f 04 ff 47 nop
11c: 00 00 fe 2f unop
120: 10 04 ed 47 mov s4,a0
124: 12 00 c0 e5 beq s5,170 <iterate_dir+0x170>
128: 00 00 7d a7 ldq t12,0(gp)
12c: 00 40 5b 6b jsr ra,(t12),130 <iterate_dir+0x130>
130: 00 00 ba 27 ldah gp,0(ra)
134: 00 00 bd 23 lda gp,0(gp)
138: 00 04 ea 47 mov s1,v0
13c: 00 00 5e a7 ldq ra,0(sp)
140: 08 00 3e a5 ldq s0,8(sp)
144: 10 00 5e a5 ldq s1,16(sp)
148: 18 00 7e a5 ldq s2,24(sp)
14c: 20 00 9e a5 ldq s3,32(sp)
150: 28 00 be a5 ldq s4,40(sp)
154: 30 00 de a5 ldq s5,48(sp)
158: 38 00 fe a5 ldq fp,56(sp)
15c: 1f 04 ff 47 nop
160: 40 00 de 23 lda sp,64(sp)
164: 01 80 fa 6b ret
168: 1f 04 ff 47 nop
16c: 00 00 fe 2f unop
170: 00 00 7d a7 ldq t12,0(gp)
174: 1f 04 ff 47 nop
178: 00 40 5b 6b jsr ra,(t12),17c <iterate_dir+0x17c>
17c: 00 00 ba 27 ldah gp,0(ra)
180: 00 00 bd 23 lda gp,0(gp)
184: ec ff ff c3 br 138 <iterate_dir+0x138>
188: 1f 04 ff 47 nop
18c: 00 00 fe 2f unop
190: 38 00 21 a4 ldq t0,56(t0)
194: ec ff 5f 21 lda s1,-20
198: 00 00 fe 2f unop
19c: e6 ff 3f e4 beq t0,138 <iterate_dir+0x138>
1a0: a0 00 ac 21 lda s4,160(s3)
1a4: 00 00 7d a7 ldq t12,0(gp)
1a8: 10 04 ed 47 mov s4,a0
1ac: 0e 04 ff 47 clr s5
1b0: 00 40 5b 6b jsr ra,(t12),1b4 <iterate_dir+0x1b4>
1b4: 00 00 ba 27 ldah gp,0(ra)
1b8: 00 00 bd 23 lda gp,0(gp)
1bc: 0a 04 e0 47 mov v0,s1
1c0: a9 ff ff c3 br 68 <iterate_dir+0x68>
1c4: 00 00 fe 2f unop
1c8: 1f 04 ff 47 nop
1cc: 00 00 fe 2f unop
1d0: 40 00 61 a7 ldq t12,64(t0)
1d4: 00 40 5b 6b jsr ra,(t12),1d8 <iterate_dir+0x1d8>
1d8: 00 00 ba 27 ldah gp,0(ra)
1dc: 00 00 bd 23 lda gp,0(gp)
1e0: 0a 04 e0 47 mov v0,s1
1e4: b2 ff ff c3 br b0 <iterate_dir+0xb0>
1e8: 1f 04 ff 47 nop
1ec: 00 00 fe 2f unop
1f0: 18 00 29 a6 ldq a1,24(s0)
1f4: 00 00 7d a7 ldq t12,0(gp)
1f8: 12 04 eb 47 mov s2,a2
1fc: 10 04 ef 47 mov fp,a0
200: 00 40 5b 6b jsr ra,(t12),204 <iterate_dir+0x204>
204: 00 00 ba 27 ldah gp,0(ra)
208: 00 00 bd 23 lda gp,0(gp)
20c: b8 ff 1f f4 bne v0,f0 <iterate_dir+0xf0>
210: 00 00 7d a7 ldq t12,0(gp)
214: 15 04 ff 47 clr a5
218: 14 04 ff 47 clr a4
21c: 01 00 7f 22 lda a3,1
220: 12 04 ef 47 mov fp,a2
224: 11 04 eb 47 mov s2,a1
228: 10 04 ec 47 mov s3,a0
22c: 00 40 5b 6b jsr ra,(t12),230 <iterate_dir+0x230>
230: 00 00 ba 27 ldah gp,0(ra)
234: 00 00 bd 23 lda gp,0(gp)
238: ad ff ff c3 br f0 <iterate_dir+0xf0>
23c: 00 00 fe 2f unop
0000000000000240 <fillonedir>:
240: 00 00 bb 27 ldah gp,0(t12)
244: 00 00 bd 23 lda gp,0(gp)
248: d0 ff de 23 lda sp,-48(sp)
24c: 1f 04 ff 47 nop
250: 18 00 7e b5 stq s2,24(sp)
254: 0b 04 f0 47 mov a0,s2
258: 20 00 9e b5 stq s3,32(sp)
25c: 0c 04 f2 47 mov a2,s3
260: 00 00 5e b7 stq ra,0(sp)
264: 08 00 3e b5 stq s0,8(sp)
268: 10 00 5e b5 stq s1,16(sp)
26c: 18 00 50 a1 ldl s1,24(a0)
270: 3f 00 40 f5 bne s1,370 <fillonedir+0x130>
274: 10 00 50 a4 ldq t1,16(a0)
278: 01 00 32 20 lda t0,1(a2)
27c: 01 00 7f 20 lda t2,1
280: 18 00 70 b0 stl t2,24(a0)
284: 12 00 22 21 lda s0,18(t1)
288: 01 04 21 41 addq s0,t0,t0
28c: 50 00 88 a4 ldq t3,80(t7)
290: 23 05 22 40 subq t0,t1,t2
294: a5 03 e3 43 cmpult zero,t2,t4
298: 03 04 43 44 or t1,t2,t2
29c: 21 05 25 40 subq t0,t4,t0
2a0: 01 04 23 44 or t0,t2,t0
2a4: 01 00 24 44 and t0,t3,t0
2a8: 2d 00 20 f4 bne t0,360 <fillonedir+0x120>
2ac: 01 04 ea 47 mov s1,t0
2b0: 00 00 82 b6 stq a4,0(t1)
2b4: 2a 00 20 f4 bne t0,360 <fillonedir+0x120>
2b8: 01 04 ea 47 mov s1,t0
2bc: 08 00 62 b6 stq a3,8(t1)
2c0: 27 00 20 f4 bne t0,360 <fillonedir+0x120>
2c4: 00 00 fe 2f unop
2c8: 10 00 42 20 lda t1,16(t1)
2cc: 01 04 ea 47 mov s1,t0
2d0: 23 76 40 4a zapnot a2,0x3,t2
2d4: 01 00 a2 2c ldq_u t4,1(t1)
2d8: 00 00 82 2c ldq_u t3,0(t1)
2dc: e7 0a 62 48 inswh t2,t1,t6
2e0: 66 03 62 48 inswl t2,t1,t5
2e4: 45 0a a2 48 mskwh t4,t1,t4
2e8: 44 02 82 48 mskwl t3,t1,t3
2ec: 05 04 a7 44 or t4,t6,t4
2f0: 04 04 86 44 or t3,t5,t3
2f4: 01 00 a2 3c stq_u t4,1(t1)
2f8: 00 00 82 3c stq_u t3,0(t1)
2fc: 18 00 20 f4 bne t0,360 <fillonedir+0x120>
300: 00 00 7d a7 ldq t12,0(gp)
304: 10 04 e9 47 mov s0,a0
308: 00 40 5b 6b jsr ra,(t12),30c <fillonedir+0xcc>
30c: 00 00 ba 27 ldah gp,0(ra)
310: 00 00 bd 23 lda gp,0(gp)
314: 12 00 00 f4 bne v0,360 <fillonedir+0x120>
318: 09 04 2c 41 addq s0,s3,s0
31c: 01 04 ea 47 mov s1,t0
320: 00 00 49 2c ldq_u t1,0(s0)
324: 63 01 49 49 insbl s1,s0,t2
328: 42 00 49 48 mskbl t1,s0,t1
32c: 02 04 43 44 or t1,t2,t1
330: 00 00 49 3c stq_u t1,0(s0)
334: 0a 00 20 f4 bne t0,360 <fillonedir+0x120>
338: 00 04 ea 47 mov s1,v0
33c: 00 00 5e a7 ldq ra,0(sp)
340: 08 00 3e a5 ldq s0,8(sp)
344: 10 00 5e a5 ldq s1,16(sp)
348: 18 00 7e a5 ldq s2,24(sp)
34c: 20 00 9e a5 ldq s3,32(sp)
350: 30 00 de 23 lda sp,48(sp)
354: 01 80 fa 6b ret
358: 1f 04 ff 47 nop
35c: 00 00 fe 2f unop
360: f2 ff 3f 20 lda t0,-14
364: f2 ff 5f 21 lda s1,-14
368: 18 00 2b b0 stl t0,24(s2)
36c: f2 ff ff c3 br 338 <fillonedir+0xf8>
370: ea ff 5f 21 lda s1,-22
374: f0 ff ff c3 br 338 <fillonedir+0xf8>
378: 1f 04 ff 47 nop
37c: 00 00 fe 2f unop
0000000000000380 <verify_dirent_name>:
380: 00 00 bb 27 ldah gp,0(t12)
384: 00 00 bd 23 lda gp,0(gp)
388: e0 ff de 23 lda sp,-32(sp)
38c: 12 04 f1 47 mov a1,a2
390: 00 00 5e b7 stq ra,0(sp)
394: 0a 00 20 e6 beq a1,3c0 <verify_dirent_name+0x40>
398: 00 00 7d a7 ldq t12,0(gp)
39c: 2f 00 3f 22 lda a1,47
3a0: 00 40 5b 6b jsr ra,(t12),3a4 <verify_dirent_name+0x24>
3a4: 00 00 ba 27 ldah gp,0(ra)
3a8: 00 00 bd 23 lda gp,0(gp)
3ac: 1c 00 00 f4 bne v0,420 <verify_dirent_name+0xa0>
3b0: 00 00 5e a7 ldq ra,0(sp)
3b4: 20 00 de 23 lda sp,32(sp)
3b8: 01 80 fa 6b ret
3bc: 00 00 fe 2f unop
3c0: 00 00 3d 24 ldah t0,0(gp)
3c4: fb ff 1f 20 lda v0,-5
3c8: 00 00 41 2c ldq_u t1,0(t0)
3cc: 00 00 61 20 lda t2,0(t0)
3d0: c4 00 43 48 extbl t1,t2,t3
3d4: f6 ff 9f f4 bne t3,3b0 <verify_dirent_name+0x30>
3d8: 01 00 9f 20 lda t3,1
3dc: 13 04 ff 47 clr a3
3e0: 42 00 43 48 mskbl t1,t2,t1
3e4: 09 00 5f 22 lda a2,9
3e8: 63 01 83 48 insbl t3,t2,t2
3ec: 94 00 3f 22 lda a1,148
3f0: 03 04 62 44 or t2,t1,t2
3f4: 00 00 61 3c stq_u t2,0(t0)
3f8: 00 00 1d 26 ldah a0,0(gp)
3fc: 00 00 7d a7 ldq t12,0(gp)
400: 10 00 1e b4 stq v0,16(sp)
404: 00 00 10 22 lda a0,0(a0)
408: 00 40 5b 6b jsr ra,(t12),40c <verify_dirent_name+0x8c>
40c: 00 00 ba 27 ldah gp,0(ra)
410: 00 00 bd 23 lda gp,0(gp)
414: 10 00 1e a4 ldq v0,16(sp)
418: e5 ff ff c3 br 3b0 <verify_dirent_name+0x30>
41c: 00 00 fe 2f unop
420: 00 00 3d 24 ldah t0,0(gp)
424: fb ff 1f 20 lda v0,-5
428: 00 00 41 2c ldq_u t1,0(t0)
42c: 00 00 61 20 lda t2,0(t0)
430: c4 00 43 48 extbl t1,t2,t3
434: de ff 9f f4 bne t3,3b0 <verify_dirent_name+0x30>
438: 01 00 9f 20 lda t3,1
43c: 13 04 ff 47 clr a3
440: 42 00 43 48 mskbl t1,t2,t1
444: 09 00 5f 22 lda a2,9
448: 63 01 83 48 insbl t3,t2,t2
44c: 96 00 3f 22 lda a1,150
450: 03 04 62 44 or t2,t1,t2
454: 00 00 61 3c stq_u t2,0(t0)
458: e7 ff ff c3 br 3f8 <verify_dirent_name+0x78>
45c: 00 00 fe 2f unop
0000000000000460 <filldir>:
460: 00 00 bb 27 ldah gp,0(t12)
464: 00 00 bd 23 lda gp,0(gp)
468: c0 ff de 23 lda sp,-64(sp)
46c: 1f 04 ff 47 nop
470: 08 00 3e b5 stq s0,8(sp)
474: 09 04 f1 47 mov a1,s0
478: 28 00 be b5 stq s4,40(sp)
47c: 0d 70 43 42 addl a2,0x1b,s4
480: 18 00 7e b5 stq s2,24(sp)
484: 0d f1 a0 45 andnot s4,0x7,s4
488: 0b 04 f0 47 mov a0,s2
48c: 11 04 f2 47 mov a2,a1
490: 10 04 e9 47 mov s0,a0
494: 0d 00 ed 43 sextl s4,s4
498: 10 00 5e b5 stq s1,16(sp)
49c: 0a 04 f2 47 mov a2,s1
4a0: 20 00 9e b5 stq s3,32(sp)
4a4: 0c 04 f5 47 mov a5,s3
4a8: 30 00 de b5 stq s5,48(sp)
4ac: 0e 04 f4 47 mov a4,s5
4b0: 38 00 fe b5 stq fp,56(sp)
4b4: 0f 04 f3 47 mov a3,fp
4b8: 00 00 5e b7 stq ra,0(sp)
4bc: 00 00 7d a7 ldq t12,0(gp)
4c0: 00 40 5b 6b jsr ra,(t12),4c4 <filldir+0x64>
4c4: 00 00 ba 27 ldah gp,0(ra)
4c8: 00 00 bd 23 lda gp,0(gp)
4cc: 9c 00 00 f4 bne v0,740 <filldir+0x2e0>
4d0: ea ff 3f 20 lda t0,-22
4d4: 20 00 ab a0 ldl t4,32(s2)
4d8: 24 00 2b b0 stl t0,36(s2)
4dc: 1f 04 ff 47 nop
4e0: a1 09 ad 40 cmplt t4,s4,t0
4e4: 9c 00 20 f4 bne t0,758 <filldir+0x2f8>
4e8: 18 00 4b a4 ldq t1,24(s2)
4ec: 50 00 40 e4 beq t1,630 <filldir+0x1d0>
4f0: 40 00 28 a4 ldq t0,64(t7)
4f4: 08 00 21 a4 ldq t0,8(t0)
4f8: 48 00 21 a0 ldl t0,72(t0)
4fc: 01 90 20 44 and t0,0x4,t0
500: a1 03 e1 43 cmpult zero,t0,t0
504: 92 00 20 f4 bne t0,750 <filldir+0x2f0>
508: 17 00 22 20 lda t0,23(t1)
50c: 50 00 68 a4 ldq t2,80(t7)
510: 01 04 22 44 or t0,t1,t0
514: 01 14 23 44 or t0,0x18,t0
518: 01 00 23 44 and t0,t2,t0
51c: 36 00 20 f4 bne t0,5f8 <filldir+0x198>
520: 01 04 e0 47 mov v0,t0
524: 08 00 e2 b5 stq fp,8(t1)
528: 33 00 20 f4 bne t0,5f8 <filldir+0x198>
52c: 00 00 fe 2f unop
530: 10 00 cb a4 ldq t5,16(s2)
534: 01 04 ff 47 clr t0
538: 00 00 c6 b5 stq s5,0(t5)
53c: 2e 00 20 f4 bne t0,5f8 <filldir+0x198>
540: 23 76 a0 49 zapnot s4,0x3,t2
544: 10 00 46 20 lda t1,16(t5)
548: 01 00 e2 2c ldq_u t6,1(t1)
54c: 00 00 82 2c ldq_u t3,0(t1)
550: f7 0a 62 48 inswh t2,t1,t9
554: 76 03 62 48 inswl t2,t1,t8
558: 47 0a e2 48 mskwh t6,t1,t6
55c: 44 02 82 48 mskwl t3,t1,t3
560: 07 04 f7 44 or t6,t9,t6
564: 04 04 96 44 or t3,t8,t3
568: 01 00 e2 3c stq_u t6,1(t1)
56c: 00 00 82 3c stq_u t3,0(t1)
570: 21 00 20 f4 bne t0,5f8 <filldir+0x198>
574: 00 00 fe 2f unop
578: 2c 17 87 49 sll s3,0x38,s3
57c: ff ff 4d 20 lda t1,-1(s4)
580: 8c 17 87 49 sra s3,0x38,s3
584: 02 04 c2 40 addq t5,t1,t1
588: 00 00 62 2c ldq_u t2,0(t1)
58c: 64 01 82 49 insbl s3,t1,t3
590: 43 00 62 48 mskbl t2,t1,t2
594: 03 04 64 44 or t2,t3,t2
598: 00 00 62 3c stq_u t2,0(t1)
59c: 16 00 20 f4 bne t0,5f8 <filldir+0x198>
5a0: 12 04 ea 47 mov s1,a2
5a4: 12 00 46 20 lda t1,18(t5)
5a8: a1 f7 40 41 cmpule s1,0x7,t0
5ac: 24 00 20 f4 bne t0,640 <filldir+0x1e0>
5b0: 07 04 ff 47 clr t6
5b4: 06 00 e0 c3 br 5d0 <filldir+0x170>
5b8: 1f 04 ff 47 nop
5bc: 00 00 fe 2f unop
5c0: 08 00 42 20 lda t1,8(t1)
5c4: 08 00 29 21 lda s0,8(s0)
5c8: a1 f7 40 42 cmpule a2,0x7,t0
5cc: 1c 00 20 f4 bne t0,640 <filldir+0x1e0>
5d0: 00 00 29 2c ldq_u t0,0(s0)
5d4: 07 00 89 2c ldq_u t3,7(s0)
5d8: 03 04 e7 47 mov t6,t2
5dc: c1 06 29 48 extql t0,s0,t0
5e0: 44 0f 89 48 extqh t3,s0,t3
5e4: 01 04 24 44 or t0,t3,t0
5e8: 00 00 22 b4 stq t0,0(t1)
5ec: 00 00 fe 2f unop
5f0: f8 ff 52 22 lda a2,-8(a2)
5f4: f2 ff 7f e4 beq t2,5c0 <filldir+0x160>
5f8: f2 ff 3f 20 lda t0,-14
5fc: f2 ff 1f 20 lda v0,-14
600: 24 00 2b b0 stl t0,36(s2)
604: 1f 04 ff 47 nop
608: 00 00 5e a7 ldq ra,0(sp)
60c: 08 00 3e a5 ldq s0,8(sp)
610: 10 00 5e a5 ldq s1,16(sp)
614: 18 00 7e a5 ldq s2,24(sp)
618: 20 00 9e a5 ldq s3,32(sp)
61c: 28 00 be a5 ldq s4,40(sp)
620: 30 00 de a5 ldq s5,48(sp)
624: 38 00 fe a5 ldq fp,56(sp)
628: 40 00 de 23 lda sp,64(sp)
62c: 01 80 fa 6b ret
630: 50 00 28 a4 ldq t0,80(t7)
634: 01 f0 23 44 and t0,0x1f,t0
638: bd ff 3f e4 beq t0,530 <filldir+0xd0>
63c: ee ff ff c3 br 5f8 <filldir+0x198>
640: a1 77 40 42 cmpule a2,0x3,t0
644: 0c 00 20 f4 bne t0,678 <filldir+0x218>
648: 00 00 29 2c ldq_u t0,0(s0)
64c: 03 00 89 2c ldq_u t3,3(s0)
650: 03 04 ff 47 clr t2
654: c1 04 29 48 extll t0,s0,t0
658: 44 0d 89 48 extlh t3,s0,t3
65c: 01 04 24 44 or t0,t3,t0
660: 00 00 22 b0 stl t0,0(t1)
664: e4 ff 7f f4 bne t2,5f8 <filldir+0x198>
668: 04 00 42 20 lda t1,4(t1)
66c: 04 00 29 21 lda s0,4(s0)
670: fc ff 52 22 lda a2,-4(a2)
674: 1f 04 ff 47 nop
678: a1 37 40 42 cmpule a2,0x1,t0
67c: 15 00 20 f4 bne t0,6d4 <filldir+0x274>
680: 00 00 29 2c ldq_u t0,0(s0)
684: 01 00 89 2c ldq_u t3,1(s0)
688: 03 04 ff 47 clr t2
68c: c1 02 29 48 extwl t0,s0,t0
690: 44 0b 89 48 extwh t3,s0,t3
694: 01 04 24 44 or t0,t3,t0
698: 21 76 20 48 zapnot t0,0x3,t0
69c: 01 00 e2 2c ldq_u t6,1(t1)
6a0: 00 00 82 2c ldq_u t3,0(t1)
6a4: f7 0a 22 48 inswh t0,t1,t9
6a8: 76 03 22 48 inswl t0,t1,t8
6ac: 47 0a e2 48 mskwh t6,t1,t6
6b0: 44 02 82 48 mskwl t3,t1,t3
6b4: 07 04 f7 44 or t6,t9,t6
6b8: 04 04 96 44 or t3,t8,t3
6bc: 01 00 e2 3c stq_u t6,1(t1)
6c0: 00 00 82 3c stq_u t3,0(t1)
6c4: cc ff 7f f4 bne t2,5f8 <filldir+0x198>
6c8: 02 00 42 20 lda t1,2(t1)
6cc: 02 00 29 21 lda s0,2(s0)
6d0: fe ff 52 22 lda a2,-2(a2)
6d4: 0a 00 40 e6 beq a2,700 <filldir+0x2a0>
6d8: 00 00 69 2c ldq_u t2,0(s0)
6dc: 01 04 ff 47 clr t0
6e0: c9 00 69 48 extbl t2,s0,s0
6e4: 00 00 62 2c ldq_u t2,0(t1)
6e8: 64 01 22 49 insbl s0,t1,t3
6ec: 43 00 62 48 mskbl t2,t1,t2
6f0: 03 04 64 44 or t2,t3,t2
6f4: 00 00 62 3c stq_u t2,0(t1)
6f8: bf ff 3f f4 bne t0,5f8 <filldir+0x198>
6fc: 01 00 42 20 lda t1,1(t1)
700: 01 04 ff 47 clr t0
704: 00 00 62 2c ldq_u t2,0(t1)
708: 64 01 22 48 insbl t0,t1,t3
70c: 43 00 62 48 mskbl t2,t1,t2
710: 03 04 64 44 or t2,t3,t2
714: 00 00 62 3c stq_u t2,0(t1)
718: b7 ff 3f f4 bne t0,5f8 <filldir+0x198>
71c: 00 00 fe 2f unop
720: 01 04 cd 40 addq t5,s4,t0
724: 25 01 ad 40 subl t4,s4,t4
728: 18 00 cb b4 stq t5,24(s2)
72c: 10 00 2b b4 stq t0,16(s2)
730: 20 00 ab b0 stl t4,32(s2)
734: b4 ff ff c3 br 608 <filldir+0x1a8>
738: 1f 04 ff 47 nop
73c: 00 00 fe 2f unop
740: 24 00 0b b0 stl v0,36(s2)
744: b0 ff ff c3 br 608 <filldir+0x1a8>
748: 1f 04 ff 47 nop
74c: 00 00 fe 2f unop
750: fc ff 1f 20 lda v0,-4
754: ac ff ff c3 br 608 <filldir+0x1a8>
758: ea ff 1f 20 lda v0,-22
75c: aa ff ff c3 br 608 <filldir+0x1a8>
0000000000000760 <filldir64>:
760: 00 00 bb 27 ldah gp,0(t12)
764: 00 00 bd 23 lda gp,0(gp)
768: c0 ff de 23 lda sp,-64(sp)
76c: 1f 04 ff 47 nop
770: 08 00 3e b5 stq s0,8(sp)
774: 09 04 f1 47 mov a1,s0
778: 20 00 9e b5 stq s3,32(sp)
77c: 0c 70 43 42 addl a2,0x1b,s3
780: 18 00 7e b5 stq s2,24(sp)
784: 0c f1 80 45 andnot s3,0x7,s3
788: 0b 04 f0 47 mov a0,s2
78c: 11 04 f2 47 mov a2,a1
790: 10 04 e9 47 mov s0,a0
794: 0c 00 ec 43 sextl s3,s3
798: 10 00 5e b5 stq s1,16(sp)
79c: 0a 04 f2 47 mov a2,s1
7a0: 28 00 be b5 stq s4,40(sp)
7a4: 0d 04 f5 47 mov a5,s4
7a8: 30 00 de b5 stq s5,48(sp)
7ac: 0e 04 f4 47 mov a4,s5
7b0: 38 00 fe b5 stq fp,56(sp)
7b4: 0f 04 f3 47 mov a3,fp
7b8: 00 00 5e b7 stq ra,0(sp)
7bc: 00 00 7d a7 ldq t12,0(gp)
7c0: 00 40 5b 6b jsr ra,(t12),7c4 <filldir64+0x64>
7c4: 00 00 ba 27 ldah gp,0(ra)
7c8: 00 00 bd 23 lda gp,0(gp)
7cc: 98 00 00 f4 bne v0,a30 <filldir64+0x2d0>
7d0: ea ff 3f 20 lda t0,-22
7d4: 20 00 ab a0 ldl t4,32(s2)
7d8: 24 00 2b b0 stl t0,36(s2)
7dc: 1f 04 ff 47 nop
7e0: a1 09 ac 40 cmplt t4,s3,t0
7e4: 98 00 20 f4 bne t0,a48 <filldir64+0x2e8>
7e8: 18 00 4b a4 ldq t1,24(s2)
7ec: 4c 00 40 e4 beq t1,920 <filldir64+0x1c0>
7f0: 40 00 28 a4 ldq t0,64(t7)
7f4: 08 00 21 a4 ldq t0,8(t0)
7f8: 48 00 21 a0 ldl t0,72(t0)
7fc: 01 90 20 44 and t0,0x4,t0
800: a1 03 e1 43 cmpult zero,t0,t0
804: 8e 00 20 f4 bne t0,a40 <filldir64+0x2e0>
808: 17 00 22 20 lda t0,23(t1)
80c: 50 00 68 a4 ldq t2,80(t7)
810: 01 04 22 44 or t0,t1,t0
814: 01 14 23 44 or t0,0x18,t0
818: 01 00 23 44 and t0,t2,t0
81c: 32 00 20 f4 bne t0,8e8 <filldir64+0x188>
820: 01 04 e0 47 mov v0,t0
824: 08 00 e2 b5 stq fp,8(t1)
828: 2f 00 20 f4 bne t0,8e8 <filldir64+0x188>
82c: 00 00 fe 2f unop
830: 10 00 cb a4 ldq t5,16(s2)
834: 01 04 ff 47 clr t0
838: 00 00 c6 b5 stq s5,0(t5)
83c: 2a 00 20 f4 bne t0,8e8 <filldir64+0x188>
840: 23 76 80 49 zapnot s3,0x3,t2
844: 10 00 46 20 lda t1,16(t5)
848: 01 00 e2 2c ldq_u t6,1(t1)
84c: 00 00 82 2c ldq_u t3,0(t1)
850: f7 0a 62 48 inswh t2,t1,t9
854: 76 03 62 48 inswl t2,t1,t8
858: 47 0a e2 48 mskwh t6,t1,t6
85c: 44 02 82 48 mskwl t3,t1,t3
860: 07 04 f7 44 or t6,t9,t6
864: 04 04 96 44 or t3,t8,t3
868: 01 00 e2 3c stq_u t6,1(t1)
86c: 00 00 82 3c stq_u t3,0(t1)
870: 1d 00 20 f4 bne t0,8e8 <filldir64+0x188>
874: 00 00 fe 2f unop
878: 0d f0 bf 45 and s4,0xff,s4
87c: 12 00 46 20 lda t1,18(t5)
880: 00 00 62 2c ldq_u t2,0(t1)
884: 64 01 a2 49 insbl s4,t1,t3
888: 43 00 62 48 mskbl t2,t1,t2
88c: 03 04 64 44 or t2,t3,t2
890: 00 00 62 3c stq_u t2,0(t1)
894: 14 00 20 f4 bne t0,8e8 <filldir64+0x188>
898: 12 04 ea 47 mov s1,a2
89c: 13 00 46 20 lda t1,19(t5)
8a0: a1 f7 40 41 cmpule s1,0x7,t0
8a4: 22 00 20 f4 bne t0,930 <filldir64+0x1d0>
8a8: 07 04 ff 47 clr t6
8ac: 04 00 e0 c3 br 8c0 <filldir64+0x160>
8b0: 08 00 42 20 lda t1,8(t1)
8b4: 08 00 29 21 lda s0,8(s0)
8b8: a1 f7 40 42 cmpule a2,0x7,t0
8bc: 1c 00 20 f4 bne t0,930 <filldir64+0x1d0>
8c0: 00 00 29 2c ldq_u t0,0(s0)
8c4: 07 00 89 2c ldq_u t3,7(s0)
8c8: 03 04 e7 47 mov t6,t2
8cc: c1 06 29 48 extql t0,s0,t0
8d0: 44 0f 89 48 extqh t3,s0,t3
8d4: 01 04 24 44 or t0,t3,t0
8d8: 00 00 22 b4 stq t0,0(t1)
8dc: 00 00 fe 2f unop
8e0: f8 ff 52 22 lda a2,-8(a2)
8e4: f2 ff 7f e4 beq t2,8b0 <filldir64+0x150>
8e8: f2 ff 3f 20 lda t0,-14
8ec: f2 ff 1f 20 lda v0,-14
8f0: 24 00 2b b0 stl t0,36(s2)
8f4: 1f 04 ff 47 nop
8f8: 00 00 5e a7 ldq ra,0(sp)
8fc: 08 00 3e a5 ldq s0,8(sp)
900: 10 00 5e a5 ldq s1,16(sp)
904: 18 00 7e a5 ldq s2,24(sp)
908: 20 00 9e a5 ldq s3,32(sp)
90c: 28 00 be a5 ldq s4,40(sp)
910: 30 00 de a5 ldq s5,48(sp)
914: 38 00 fe a5 ldq fp,56(sp)
918: 40 00 de 23 lda sp,64(sp)
91c: 01 80 fa 6b ret
920: 50 00 28 a4 ldq t0,80(t7)
924: 01 f0 23 44 and t0,0x1f,t0
928: c1 ff 3f e4 beq t0,830 <filldir64+0xd0>
92c: ee ff ff c3 br 8e8 <filldir64+0x188>
930: a1 77 40 42 cmpule a2,0x3,t0
934: 0c 00 20 f4 bne t0,968 <filldir64+0x208>
938: 00 00 29 2c ldq_u t0,0(s0)
93c: 03 00 89 2c ldq_u t3,3(s0)
940: 03 04 ff 47 clr t2
944: c1 04 29 48 extll t0,s0,t0
948: 44 0d 89 48 extlh t3,s0,t3
94c: 01 04 24 44 or t0,t3,t0
950: 00 00 22 b0 stl t0,0(t1)
954: e4 ff 7f f4 bne t2,8e8 <filldir64+0x188>
958: 04 00 42 20 lda t1,4(t1)
95c: 04 00 29 21 lda s0,4(s0)
960: fc ff 52 22 lda a2,-4(a2)
964: 1f 04 ff 47 nop
968: a1 37 40 42 cmpule a2,0x1,t0
96c: 15 00 20 f4 bne t0,9c4 <filldir64+0x264>
970: 00 00 29 2c ldq_u t0,0(s0)
974: 01 00 89 2c ldq_u t3,1(s0)
978: 03 04 ff 47 clr t2
97c: c1 02 29 48 extwl t0,s0,t0
980: 44 0b 89 48 extwh t3,s0,t3
984: 01 04 24 44 or t0,t3,t0
988: 21 76 20 48 zapnot t0,0x3,t0
98c: 01 00 e2 2c ldq_u t6,1(t1)
990: 00 00 82 2c ldq_u t3,0(t1)
994: f7 0a 22 48 inswh t0,t1,t9
998: 76 03 22 48 inswl t0,t1,t8
99c: 47 0a e2 48 mskwh t6,t1,t6
9a0: 44 02 82 48 mskwl t3,t1,t3
9a4: 07 04 f7 44 or t6,t9,t6
9a8: 04 04 96 44 or t3,t8,t3
9ac: 01 00 e2 3c stq_u t6,1(t1)
9b0: 00 00 82 3c stq_u t3,0(t1)
9b4: cc ff 7f f4 bne t2,8e8 <filldir64+0x188>
9b8: 02 00 42 20 lda t1,2(t1)
9bc: 02 00 29 21 lda s0,2(s0)
9c0: fe ff 52 22 lda a2,-2(a2)
9c4: 0a 00 40 e6 beq a2,9f0 <filldir64+0x290>
9c8: 00 00 69 2c ldq_u t2,0(s0)
9cc: 01 04 ff 47 clr t0
9d0: c9 00 69 48 extbl t2,s0,s0
9d4: 00 00 62 2c ldq_u t2,0(t1)
9d8: 64 01 22 49 insbl s0,t1,t3
9dc: 43 00 62 48 mskbl t2,t1,t2
9e0: 03 04 64 44 or t2,t3,t2
9e4: 00 00 62 3c stq_u t2,0(t1)
9e8: bf ff 3f f4 bne t0,8e8 <filldir64+0x188>
9ec: 01 00 42 20 lda t1,1(t1)
9f0: 01 04 ff 47 clr t0
9f4: 00 00 62 2c ldq_u t2,0(t1)
9f8: 64 01 22 48 insbl t0,t1,t3
9fc: 43 00 62 48 mskbl t2,t1,t2
a00: 03 04 64 44 or t2,t3,t2
a04: 00 00 62 3c stq_u t2,0(t1)
a08: b7 ff 3f f4 bne t0,8e8 <filldir64+0x188>
a0c: 00 00 fe 2f unop
a10: 01 04 cc 40 addq t5,s3,t0
a14: 25 01 ac 40 subl t4,s3,t4
a18: 18 00 cb b4 stq t5,24(s2)
a1c: 10 00 2b b4 stq t0,16(s2)
a20: 20 00 ab b0 stl t4,32(s2)
a24: b4 ff ff c3 br 8f8 <filldir64+0x198>
a28: 1f 04 ff 47 nop
a2c: 00 00 fe 2f unop
a30: 24 00 0b b0 stl v0,36(s2)
a34: b0 ff ff c3 br 8f8 <filldir64+0x198>
a38: 1f 04 ff 47 nop
a3c: 00 00 fe 2f unop
a40: fc ff 1f 20 lda v0,-4
a44: ac ff ff c3 br 8f8 <filldir64+0x198>
a48: ea ff 1f 20 lda v0,-22
a4c: aa ff ff c3 br 8f8 <filldir64+0x198>
0000000000000a50 <__se_sys_old_readdir>:
a50: 00 00 bb 27 ldah gp,0(t12)
a54: 00 00 bd 23 lda gp,0(gp)
a58: c0 ff de 23 lda sp,-64(sp)
a5c: 00 00 7d a7 ldq t12,0(gp)
a60: 08 00 3e b5 stq s0,8(sp)
a64: 10 00 f0 43 sextl a0,a0
a68: 10 00 5e b5 stq s1,16(sp)
a6c: 0a 04 f1 47 mov a1,s1
a70: 18 00 7e b5 stq s2,24(sp)
a74: 00 00 5e b7 stq ra,0(sp)
a78: 00 40 5b 6b jsr ra,(t12),a7c <__se_sys_old_readdir+0x2c>
a7c: 00 00 ba 27 ldah gp,0(ra)
a80: 28 00 fe b7 stq zero,40(sp)
a84: 00 00 bd 23 lda gp,0(gp)
a88: 0b 71 00 44 andnot v0,0x3,s2
a8c: 00 00 fe 2f unop
a90: 00 00 3d 24 ldah t0,0(gp)
a94: 09 00 e0 43 sextl v0,s0
a98: 00 00 21 20 lda t0,0(t0)
a9c: f7 ff 1f 20 lda v0,-9
aa0: 38 00 fe b7 stq zero,56(sp)
aa4: 20 00 3e b4 stq t0,32(sp)
aa8: 30 00 5e b5 stq s1,48(sp)
aac: 0d 00 60 e5 beq s2,ae4 <__se_sys_old_readdir+0x94>
ab0: 20 00 3e 22 lda a1,32(sp)
ab4: 10 04 eb 47 mov s2,a0
ab8: 00 00 7d a7 ldq t12,0(gp)
abc: 00 40 5b 6b jsr ra,(t12),ac0 <__se_sys_old_readdir+0x70>
ac0: 00 00 ba 27 ldah gp,0(ra)
ac4: 00 00 bd 23 lda gp,0(gp)
ac8: 0a 04 e0 47 mov v0,s1
acc: 38 00 1e a0 ldl v0,56(sp)
ad0: 01 50 20 45 and s0,0x2,t0
ad4: ca 04 00 44 cmovne v0,v0,s1
ad8: 11 00 20 f4 bne t0,b20 <__se_sys_old_readdir+0xd0>
adc: 08 00 20 f1 blbs s0,b00 <__se_sys_old_readdir+0xb0>
ae0: 00 04 ea 47 mov s1,v0
ae4: 00 00 5e a7 ldq ra,0(sp)
ae8: 08 00 3e a5 ldq s0,8(sp)
aec: 1f 04 ff 47 nop
af0: 10 00 5e a5 ldq s1,16(sp)
af4: 18 00 7e a5 ldq s2,24(sp)
af8: 40 00 de 23 lda sp,64(sp)
afc: 01 80 fa 6b ret
b00: 00 00 7d a7 ldq t12,0(gp)
b04: 10 04 eb 47 mov s2,a0
b08: 00 40 5b 6b jsr ra,(t12),b0c <__se_sys_old_readdir+0xbc>
b0c: 00 00 ba 27 ldah gp,0(ra)
b10: 00 00 bd 23 lda gp,0(gp)
b14: f2 ff ff c3 br ae0 <__se_sys_old_readdir+0x90>
b18: 1f 04 ff 47 nop
b1c: 00 00 fe 2f unop
b20: 00 00 7d a7 ldq t12,0(gp)
b24: 10 04 eb 47 mov s2,a0
b28: 00 40 5b 6b jsr ra,(t12),b2c <__se_sys_old_readdir+0xdc>
b2c: 00 00 ba 27 ldah gp,0(ra)
b30: 00 00 bd 23 lda gp,0(gp)
b34: ea ff 3f e1 blbc s0,ae0 <__se_sys_old_readdir+0x90>
b38: f1 ff ff c3 br b00 <__se_sys_old_readdir+0xb0>
b3c: 00 00 fe 2f unop
0000000000000b40 <__se_sys_getdents>:
b40: 00 00 bb 27 ldah gp,0(t12)
b44: 00 00 bd 23 lda gp,0(gp)
b48: 22 f6 41 4a zapnot a2,0xf,t1
b4c: a0 ff de 23 lda sp,-96(sp)
b50: a3 03 e2 43 cmpult zero,t1,t2
b54: 01 04 22 42 addq a1,t1,t0
b58: 21 05 23 40 subq t0,t2,t0
b5c: 02 04 22 46 or a1,t1,t1
b60: 10 00 5e b5 stq s1,16(sp)
b64: 01 04 22 44 or t0,t1,t0
b68: 18 00 7e b5 stq s2,24(sp)
b6c: 00 00 5d 24 ldah t1,0(gp)
b70: 00 00 5e b7 stq ra,0(sp)
b74: 00 00 42 20 lda t1,0(t1)
b78: 08 00 3e b5 stq s0,8(sp)
b7c: 0a 04 f2 47 mov a2,s1
b80: 20 00 9e b5 stq s3,32(sp)
b84: 10 00 f0 43 sextl a0,a0
b88: 50 00 fe b7 stq zero,80(sp)
b8c: f2 ff 7f 21 lda s2,-14
b90: 50 00 68 a4 ldq t2,80(t7)
b94: 38 00 fe b7 stq zero,56(sp)
b98: 48 00 fe b7 stq zero,72(sp)
b9c: 01 00 23 44 and t0,t2,t0
ba0: 30 00 5e b4 stq t1,48(sp)
ba4: 40 00 3e b6 stq a1,64(sp)
ba8: 50 00 5e b2 stl a2,80(sp)
bac: 22 00 20 f4 bne t0,c38 <__se_sys_getdents+0xf8>
bb0: 00 00 7d a7 ldq t12,0(gp)
bb4: 1f 04 ff 47 nop
bb8: 00 40 5b 6b jsr ra,(t12),bbc <__se_sys_getdents+0x7c>
bbc: 00 00 ba 27 ldah gp,0(ra)
bc0: 00 00 bd 23 lda gp,0(gp)
bc4: 0c 71 00 44 andnot v0,0x3,s3
bc8: 09 00 e0 43 sextl v0,s0
bcc: 41 00 80 e5 beq s3,cd4 <__se_sys_getdents+0x194>
bd0: 30 00 3e 22 lda a1,48(sp)
bd4: 10 04 ec 47 mov s3,a0
bd8: 00 00 7d a7 ldq t12,0(gp)
bdc: 00 40 5b 6b jsr ra,(t12),be0 <__se_sys_getdents+0xa0>
be0: 00 00 ba 27 ldah gp,0(ra)
be4: 00 00 bd 23 lda gp,0(gp)
be8: 54 00 3e a0 ldl t0,84(sp)
bec: 48 00 7e a4 ldq t2,72(sp)
bf0: c0 08 01 44 cmovge v0,t0,v0
bf4: 2e 00 60 e4 beq t2,cb0 <__se_sys_getdents+0x170>
bf8: 0f 00 43 20 lda t1,15(t2)
bfc: 08 00 23 20 lda t0,8(t2)
c00: 01 04 41 44 or t1,t0,t0
c04: 50 00 48 a4 ldq t1,80(t7)
c08: 01 14 21 44 or t0,0x8,t0
c0c: 1f 04 ff 47 nop
c10: 01 00 22 44 and t0,t1,t0
c14: 04 00 20 f4 bne t0,c28 <__se_sys_getdents+0xe8>
c18: 38 00 5e a4 ldq t1,56(sp)
c1c: 08 00 43 b4 stq t1,8(t2)
c20: 27 00 20 e4 beq t0,cc0 <__se_sys_getdents+0x180>
c24: 00 00 fe 2f unop
c28: 01 50 20 45 and s0,0x2,t0
c2c: 0c 00 20 f4 bne t0,c60 <__se_sys_getdents+0x120>
c30: 1f 04 ff 47 nop
c34: 10 00 20 f1 blbs s0,c78 <__se_sys_getdents+0x138>
c38: 00 04 eb 47 mov s2,v0
c3c: 00 00 5e a7 ldq ra,0(sp)
c40: 08 00 3e a5 ldq s0,8(sp)
c44: 10 00 5e a5 ldq s1,16(sp)
c48: 18 00 7e a5 ldq s2,24(sp)
c4c: 20 00 9e a5 ldq s3,32(sp)
c50: 60 00 de 23 lda sp,96(sp)
c54: 01 80 fa 6b ret
c58: 1f 04 ff 47 nop
c5c: 00 00 fe 2f unop
c60: 00 00 7d a7 ldq t12,0(gp)
c64: 10 04 ec 47 mov s3,a0
c68: 00 40 5b 6b jsr ra,(t12),c6c <__se_sys_getdents+0x12c>
c6c: 00 00 ba 27 ldah gp,0(ra)
c70: 00 00 bd 23 lda gp,0(gp)
c74: f0 ff 3f e1 blbc s0,c38 <__se_sys_getdents+0xf8>
c78: 00 00 7d a7 ldq t12,0(gp)
c7c: 10 04 ec 47 mov s3,a0
c80: 00 40 5b 6b jsr ra,(t12),c84 <__se_sys_getdents+0x144>
c84: 00 00 ba 27 ldah gp,0(ra)
c88: 08 00 3e a5 ldq s0,8(sp)
c8c: 1f 04 ff 47 nop
c90: 00 04 eb 47 mov s2,v0
c94: 00 00 5e a7 ldq ra,0(sp)
c98: 10 00 5e a5 ldq s1,16(sp)
c9c: 18 00 7e a5 ldq s2,24(sp)
ca0: 20 00 9e a5 ldq s3,32(sp)
ca4: 00 00 bd 23 lda gp,0(gp)
ca8: 60 00 de 23 lda sp,96(sp)
cac: 01 80 fa 6b ret
cb0: 0b 04 e0 47 mov v0,s2
cb4: 01 50 20 45 and s0,0x2,t0
cb8: dd ff 3f e4 beq t0,c30 <__se_sys_getdents+0xf0>
cbc: e8 ff ff c3 br c60 <__se_sys_getdents+0x120>
cc0: 50 00 7e a1 ldl s2,80(sp)
cc4: 01 50 20 45 and s0,0x2,t0
cc8: 2b 01 4b 41 subl s1,s2,s2
ccc: d8 ff 3f e4 beq t0,c30 <__se_sys_getdents+0xf0>
cd0: e3 ff ff c3 br c60 <__se_sys_getdents+0x120>
cd4: f7 ff 7f 21 lda s2,-9
cd8: d7 ff ff c3 br c38 <__se_sys_getdents+0xf8>
cdc: 00 00 fe 2f unop
0000000000000ce0 <ksys_getdents64>:
ce0: 00 00 bb 27 ldah gp,0(t12)
ce4: 00 00 bd 23 lda gp,0(gp)
ce8: 21 f6 41 4a zapnot a2,0xf,t0
cec: a0 ff de 23 lda sp,-96(sp)
cf0: 08 00 3e b5 stq s0,8(sp)
cf4: a2 03 e1 43 cmpult zero,t0,t1
cf8: 10 00 5e b5 stq s1,16(sp)
cfc: 09 04 21 42 addq a1,t0,s0
d00: 29 05 22 41 subq s0,t1,s0
d04: 01 04 21 46 or a1,t0,t0
d08: 20 00 9e b5 stq s3,32(sp)
d0c: 09 04 21 45 or s0,t0,s0
d10: 00 00 5e b7 stq ra,0(sp)
d14: 00 00 3d 24 ldah t0,0(gp)
d18: 18 00 7e b5 stq s2,24(sp)
d1c: 00 00 21 20 lda t0,0(t0)
d20: 28 00 be b5 stq s4,40(sp)
d24: 0c 04 f2 47 mov a2,s3
d28: 50 00 fe b7 stq zero,80(sp)
d2c: f2 ff 5f 21 lda s1,-14
d30: 50 00 48 a4 ldq t1,80(t7)
d34: 38 00 fe b7 stq zero,56(sp)
d38: 48 00 fe b7 stq zero,72(sp)
d3c: 09 00 22 45 and s0,t1,s0
d40: 30 00 3e b4 stq t0,48(sp)
d44: 40 00 3e b6 stq a1,64(sp)
d48: 50 00 5e b2 stl a2,80(sp)
d4c: 1a 00 20 f5 bne s0,db8 <ksys_getdents64+0xd8>
d50: 00 00 7d a7 ldq t12,0(gp)
d54: f7 ff 5f 21 lda s1,-9
d58: 00 40 5b 6b jsr ra,(t12),d5c <ksys_getdents64+0x7c>
d5c: 00 00 ba 27 ldah gp,0(ra)
d60: 00 00 bd 23 lda gp,0(gp)
d64: 0d 71 00 44 andnot v0,0x3,s4
d68: 0b 00 e0 43 sextl v0,s2
d6c: 12 00 a0 e5 beq s4,db8 <ksys_getdents64+0xd8>
d70: 30 00 3e 22 lda a1,48(sp)
d74: 10 04 ed 47 mov s4,a0
d78: 00 00 7d a7 ldq t12,0(gp)
d7c: 00 40 5b 6b jsr ra,(t12),d80 <ksys_getdents64+0xa0>
d80: 00 00 ba 27 ldah gp,0(ra)
d84: 00 00 bd 23 lda gp,0(gp)
d88: 54 00 5e a1 ldl s1,84(sp)
d8c: 48 00 3e a4 ldq t0,72(sp)
d90: 8a 08 00 44 cmovlt v0,v0,s1
d94: 04 00 20 e4 beq t0,da8 <ksys_getdents64+0xc8>
d98: 38 00 5e a4 ldq t1,56(sp)
d9c: 08 00 41 b4 stq t1,8(t0)
da0: f2 ff 5f 21 lda s1,-14
da4: 0e 00 20 e5 beq s0,de0 <ksys_getdents64+0x100>
da8: 01 50 60 45 and s2,0x2,t0
dac: 10 00 20 f4 bne t0,df0 <ksys_getdents64+0x110>
db0: 1f 04 ff 47 nop
db4: 14 00 60 f1 blbs s2,e08 <ksys_getdents64+0x128>
db8: 00 04 ea 47 mov s1,v0
dbc: 00 00 5e a7 ldq ra,0(sp)
dc0: 08 00 3e a5 ldq s0,8(sp)
dc4: 10 00 5e a5 ldq s1,16(sp)
dc8: 18 00 7e a5 ldq s2,24(sp)
dcc: 20 00 9e a5 ldq s3,32(sp)
dd0: 28 00 be a5 ldq s4,40(sp)
dd4: 1f 04 ff 47 nop
dd8: 60 00 de 23 lda sp,96(sp)
ddc: 01 80 fa 6b ret
de0: 50 00 5e a1 ldl s1,80(sp)
de4: 01 50 60 45 and s2,0x2,t0
de8: 2a 01 8a 41 subl s3,s1,s1
dec: f0 ff 3f e4 beq t0,db0 <ksys_getdents64+0xd0>
df0: 00 00 7d a7 ldq t12,0(gp)
df4: 10 04 ed 47 mov s4,a0
df8: 00 40 5b 6b jsr ra,(t12),dfc <ksys_getdents64+0x11c>
dfc: 00 00 ba 27 ldah gp,0(ra)
e00: 00 00 bd 23 lda gp,0(gp)
e04: ec ff 7f e1 blbc s2,db8 <ksys_getdents64+0xd8>
e08: 00 00 7d a7 ldq t12,0(gp)
e0c: 10 04 ed 47 mov s4,a0
e10: 00 40 5b 6b jsr ra,(t12),e14 <ksys_getdents64+0x134>
e14: 00 00 ba 27 ldah gp,0(ra)
e18: 00 00 bd 23 lda gp,0(gp)
e1c: e6 ff ff c3 br db8 <ksys_getdents64+0xd8>
0000000000000e20 <__se_sys_getdents64>:
e20: 00 00 bb 27 ldah gp,0(t12)
e24: 00 00 bd 23 lda gp,0(gp)
e28: f0 ff de 23 lda sp,-16(sp)
e2c: 12 00 f2 43 sextl a2,a2
e30: 00 00 5e b7 stq ra,0(sp)
e34: 10 00 f0 43 sextl a0,a0
e38: 00 00 7d a7 ldq t12,0(gp)
e3c: 00 40 5b 6b jsr ra,(t12),e40 <__se_sys_getdents64+0x20>
e40: 00 00 ba 27 ldah gp,0(ra)
e44: 00 00 bd 23 lda gp,0(gp)
e48: 00 00 5e a7 ldq ra,0(sp)
e4c: 1f 04 ff 47 nop
e50: 10 00 de 23 lda sp,16(sp)
e54: 01 80 fa 6b ret
e58: 1f 04 ff 47 nop
e5c: 00 00 fe 2f unop