From: Guenter Roeck <linux@roeck-us.net>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Alexander Viro <viro@zeniv.linux.org.uk>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>
Subject: Re: [PATCH] Convert filldir[64]() from __put_user() to unsafe_put_user()
Date: Sun, 6 Oct 2019 17:23:16 -0700 [thread overview]
Message-ID: <20191007002316.GA30301@roeck-us.net> (raw)
In-Reply-To: <CAHk-=wgrqwuZJmwbrjhjCFeSUu2i57unaGOnP4qZAmSyuGwMZA@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 1532 bytes --]
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@roeck-us.net> 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
[-- Attachment #2: readdir.s --]
[-- Type: text/plain, Size: 65439 bytes --]
.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
[-- Attachment #3: readdir.s.objdump --]
[-- Type: text/plain, Size: 32015 bytes --]
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
next prev parent reply other threads:[~2019-10-07 0:23 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-06 22:20 [PATCH] Convert filldir[64]() from __put_user() to unsafe_put_user() Guenter Roeck
2019-10-06 23:06 ` Linus Torvalds
2019-10-06 23:35 ` Linus Torvalds
2019-10-07 0:04 ` Guenter Roeck
2019-10-07 1:17 ` Linus Torvalds
2019-10-07 1:24 ` Al Viro
2019-10-07 2:06 ` Linus Torvalds
2019-10-07 2:50 ` Al Viro
2019-10-07 3:11 ` Linus Torvalds
2019-10-07 15:40 ` David Laight
2019-10-07 18:11 ` Linus Torvalds
2019-10-08 9:58 ` David Laight
2019-10-07 17:34 ` Al Viro
2019-10-07 18:13 ` Linus Torvalds
2019-10-07 18:22 ` Al Viro
2019-10-07 18:26 ` Linus Torvalds
2019-10-07 18:36 ` Tony Luck
2019-10-07 19:08 ` Linus Torvalds
2019-10-07 19:49 ` Tony Luck
2019-10-07 20:04 ` Linus Torvalds
2019-10-08 3:29 ` Al Viro
2019-10-08 4:09 ` Linus Torvalds
2019-10-08 4:14 ` Linus Torvalds
2019-10-08 5:02 ` Al Viro
2019-10-08 4:24 ` Linus Torvalds
2019-10-10 19:55 ` Al Viro
2019-10-10 22:12 ` Linus Torvalds
2019-10-11 0:11 ` Al Viro
2019-10-11 0:31 ` Linus Torvalds
2019-10-13 18:13 ` Al Viro
2019-10-13 18:43 ` Linus Torvalds
2019-10-13 19:10 ` Al Viro
2019-10-13 19:22 ` Linus Torvalds
2019-10-13 19:59 ` Al Viro
2019-10-13 20:20 ` Linus Torvalds
2019-10-15 3:46 ` Michael Ellerman
2019-10-15 18:08 ` Al Viro
2019-10-15 19:00 ` Linus Torvalds
2019-10-15 19:40 ` Al Viro
2019-10-15 20:18 ` Al Viro
2019-10-16 12:12 ` [RFC] change of calling conventions for arch_futex_atomic_op_inuser() Al Viro
2019-10-16 12:24 ` Thomas Gleixner
2019-10-16 20:25 ` [PATCH] Convert filldir[64]() from __put_user() to unsafe_put_user() Al Viro
2019-10-17 19:36 ` [RFC][PATCHES] drivers/scsi/sg.c uaccess cleanups/fixes Al Viro
2019-10-17 19:39 ` [RFC PATCH 1/8] sg_ioctl(): fix copyout handling Al Viro
2019-10-17 19:39 ` [RFC PATCH 2/8] sg_new_write(): replace access_ok() + __copy_from_user() with copy_from_user() Al Viro
2019-10-17 19:39 ` [RFC PATCH 3/8] sg_write(): __get_user() can fail Al Viro
2019-10-17 19:39 ` [RFC PATCH 4/8] sg_read(): simplify reading ->pack_id of userland sg_io_hdr_t Al Viro
2019-10-17 19:39 ` [RFC PATCH 5/8] sg_new_write(): don't bother with access_ok Al Viro
2019-10-17 19:39 ` [RFC PATCH 6/8] sg_read(): get rid of access_ok()/__copy_..._user() Al Viro
2019-10-17 19:39 ` [RFC PATCH 7/8] sg_write(): get rid of access_ok()/__copy_from_user()/__get_user() Al Viro
2019-10-17 19:39 ` [RFC PATCH 8/8] SG_IO: get rid of access_ok() Al Viro
2019-10-17 21:44 ` [RFC][PATCHES] drivers/scsi/sg.c uaccess cleanups/fixes Douglas Gilbert
2019-11-05 4:54 ` Martin K. Petersen
2019-11-05 5:25 ` Al Viro
2019-11-06 4:29 ` Martin K. Petersen
2019-10-18 0:27 ` [RFC] csum_and_copy_from_user() semantics Al Viro
2019-10-25 14:01 ` [PATCH] Convert filldir[64]() from __put_user() to unsafe_put_user() Thomas Gleixner
2019-10-08 4:57 ` Al Viro
2019-10-08 13:14 ` Greg KH
2019-10-08 15:29 ` Al Viro
2019-10-08 15:38 ` Greg KH
2019-10-08 17:06 ` Al Viro
2019-10-08 19:58 ` Al Viro
2019-10-08 20:16 ` Al Viro
2019-10-08 20:34 ` Al Viro
2019-10-07 2:30 ` Guenter Roeck
2019-10-07 3:12 ` Linus Torvalds
2019-10-07 0:23 ` Guenter Roeck [this message]
2019-10-07 4:04 ` Max Filippov
2019-10-07 12:16 ` Guenter Roeck
2019-10-07 19:21 ` Linus Torvalds
2019-10-07 20:29 ` Guenter Roeck
2019-10-07 23:27 ` Guenter Roeck
2019-10-08 6:28 ` Geert Uytterhoeven
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191007002316.GA30301@roeck-us.net \
--to=linux@roeck-us.net \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.