RTEMS-6
Annotated Report
libjffs2
Sun Feb 28 12:30:56 2021
4000a7b0 <__jffs2_dbg_acct_sanity_check>:
void
__jffs2_dbg_acct_sanity_check(struct jffs2_sb_info *c,
struct jffs2_eraseblock *jeb)
{
spin_lock(&c->erase_completion_lock);
jffs2_dbg_acct_sanity_check_nolock(c, jeb);
4000a7b0: e9dff06f j 4000a64c <__jffs2_dbg_acct_sanity_check_nolock> <== NOT EXECUTED
4000a64c <__jffs2_dbg_acct_sanity_check_nolock>:
#ifdef JFFS2_DBG_SANITY_CHECKS
void
__jffs2_dbg_acct_sanity_check_nolock(struct jffs2_sb_info *c,
struct jffs2_eraseblock *jeb)
{
4000a64c: fe010113 addi sp,sp,-32
4000a650: 00812c23 sw s0,24(sp)
4000a654: 00112e23 sw ra,28(sp)
4000a658: 00912a23 sw s1,20(sp)
4000a65c: 01212823 sw s2,16(sp)
4000a660: 00050413 mv s0,a0
if (unlikely(jeb && jeb->used_size + jeb->dirty_size +
4000a664: 02058a63 beqz a1,4000a698 <__jffs2_dbg_acct_sanity_check_nolock+0x4c><== NEVER TAKEN
4000a668: 00058493 mv s1,a1
4000a66c: 0145a783 lw a5,20(a1)
4000a670: 0185a583 lw a1,24(a1)
4000a674: 0204a703 lw a4,32(s1)
4000a678: 01c4a603 lw a2,28(s1)
4000a67c: 0104a683 lw a3,16(s1)
4000a680: 00b787b3 add a5,a5,a1
4000a684: 00e787b3 add a5,a5,a4
4000a688: 03452703 lw a4,52(a0)
4000a68c: 00c787b3 add a5,a5,a2
4000a690: 00d787b3 add a5,a5,a3
4000a694: 0ce79063 bne a5,a4,4000a754 <__jffs2_dbg_acct_sanity_check_nolock+0x108>
jeb->free_size, jeb->dirty_size, jeb->used_size,
jeb->wasted_size, jeb->unchecked_size, c->sector_size);
BUG();
}
if (unlikely(c->used_size + c->dirty_size + c->free_size + c->erasing_size + c->bad_size
4000a698: 02042603 lw a2,32(s0)
4000a69c: 01c42783 lw a5,28(s0)
4000a6a0: 02842683 lw a3,40(s0)
4000a6a4: 02c42583 lw a1,44(s0)
4000a6a8: 03042703 lw a4,48(s0)
4000a6ac: 00c787b3 add a5,a5,a2
4000a6b0: 00d787b3 add a5,a5,a3
4000a6b4: 02442603 lw a2,36(s0)
4000a6b8: 03842683 lw a3,56(s0)
4000a6bc: 00b787b3 add a5,a5,a1
4000a6c0: 00e787b3 add a5,a5,a4
4000a6c4: 01842703 lw a4,24(s0)
4000a6c8: 00c787b3 add a5,a5,a2
4000a6cc: 00d787b3 add a5,a5,a3
4000a6d0: 00e79e63 bne a5,a4,4000a6ec <__jffs2_dbg_acct_sanity_check_nolock+0xa0>
JFFS2_ERROR("free %#08x + dirty %#08x + used %#08x + erasing %#08x + bad %#08x + wasted %#08x + unchecked %#08x != total %#08x.\n",
c->free_size, c->dirty_size, c->used_size, c->erasing_size, c->bad_size,
c->wasted_size, c->unchecked_size, c->flash_size);
BUG();
}
}
4000a6d4: 01c12083 lw ra,28(sp)
4000a6d8: 01812403 lw s0,24(sp)
4000a6dc: 01412483 lw s1,20(sp)
4000a6e0: 01012903 lw s2,16(sp)
4000a6e4: 02010113 addi sp,sp,32
4000a6e8: 00008067 ret
JFFS2_ERROR("eeep, space accounting superblock info is screwed.\n");
4000a6ec: 400204b7 lui s1,0x40020 <== NOT EXECUTED
4000a6f0: 4001f537 lui a0,0x4001f <== NOT EXECUTED
4000a6f4: 85c48593 addi a1,s1,-1956 # 4001f85c <__func__.0> <== NOT EXECUTED
4000a6f8: 78450513 addi a0,a0,1924 # 4001f784 <crc32_tab+0x4ec> <== NOT EXECUTED
4000a6fc: f11ff0ef jal ra,4000a60c <jffs2_printk> <== NOT EXECUTED
JFFS2_ERROR("free %#08x + dirty %#08x + used %#08x + erasing %#08x + bad %#08x + wasted %#08x + unchecked %#08x != total %#08x.\n",
4000a700: 03842503 lw a0,56(s0) <== NOT EXECUTED
4000a704: 01842303 lw t1,24(s0) <== NOT EXECUTED
4000a708: 02042683 lw a3,32(s0) <== NOT EXECUTED
4000a70c: 02842603 lw a2,40(s0) <== NOT EXECUTED
4000a710: 02442883 lw a7,36(s0) <== NOT EXECUTED
4000a714: 03042803 lw a6,48(s0) <== NOT EXECUTED
4000a718: 02c42783 lw a5,44(s0) <== NOT EXECUTED
4000a71c: 01c42703 lw a4,28(s0) <== NOT EXECUTED
4000a720: 00a12023 sw a0,0(sp) <== NOT EXECUTED
4000a724: 4001f537 lui a0,0x4001f <== NOT EXECUTED
4000a728: 85c48593 addi a1,s1,-1956 <== NOT EXECUTED
4000a72c: 00612223 sw t1,4(sp) <== NOT EXECUTED
4000a730: 7d050513 addi a0,a0,2000 # 4001f7d0 <crc32_tab+0x538> <== NOT EXECUTED
4000a734: ed9ff0ef jal ra,4000a60c <jffs2_printk> <== NOT EXECUTED
BUG();
4000a738: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
4000a73c: 4001f537 lui a0,0x4001f <== NOT EXECUTED
4000a740: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
4000a744: 85c48613 addi a2,s1,-1956 <== NOT EXECUTED
4000a748: 03100593 li a1,49 <== NOT EXECUTED
4000a74c: 75850513 addi a0,a0,1880 # 4001f758 <crc32_tab+0x4c0> <== NOT EXECUTED
4000a750: 351020ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
JFFS2_ERROR("eeep, space accounting for block at 0x%08x is screwed.\n", jeb->offset);
4000a754: 00c4a603 lw a2,12(s1) <== NOT EXECUTED
4000a758: 40020937 lui s2,0x40020 <== NOT EXECUTED
4000a75c: 4001f537 lui a0,0x4001f <== NOT EXECUTED
4000a760: 85c90593 addi a1,s2,-1956 # 4001f85c <__func__.0> <== NOT EXECUTED
4000a764: 69850513 addi a0,a0,1688 # 4001f698 <crc32_tab+0x400> <== NOT EXECUTED
4000a768: ea5ff0ef jal ra,4000a60c <jffs2_printk> <== NOT EXECUTED
JFFS2_ERROR("free %#08x + dirty %#08x + used %#08x + wasted %#08x + unchecked %#08x != total %#08x.\n",
4000a76c: 0184a683 lw a3,24(s1) <== NOT EXECUTED
4000a770: 0204a603 lw a2,32(s1) <== NOT EXECUTED
4000a774: 03442883 lw a7,52(s0) <== NOT EXECUTED
4000a778: 0104a803 lw a6,16(s1) <== NOT EXECUTED
4000a77c: 01c4a783 lw a5,28(s1) <== NOT EXECUTED
4000a780: 0144a703 lw a4,20(s1) <== NOT EXECUTED
4000a784: 4001f537 lui a0,0x4001f <== NOT EXECUTED
4000a788: 85c90593 addi a1,s2,-1956 <== NOT EXECUTED
4000a78c: 6e850513 addi a0,a0,1768 # 4001f6e8 <crc32_tab+0x450> <== NOT EXECUTED
4000a790: e7dff0ef jal ra,4000a60c <jffs2_printk> <== NOT EXECUTED
BUG();
4000a794: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
4000a798: 4001f537 lui a0,0x4001f <== NOT EXECUTED
4000a79c: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
4000a7a0: 85c90613 addi a2,s2,-1956 <== NOT EXECUTED
4000a7a4: 02800593 li a1,40 <== NOT EXECUTED
4000a7a8: 75850513 addi a0,a0,1880 # 4001f758 <crc32_tab+0x4c0> <== NOT EXECUTED
4000a7ac: 2f5020ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
40005824 <__jffs2_ref_totlen>:
jeb = &c->blocks[ref->flash_offset / c->sector_size];
40005824: 00462703 lw a4,4(a2)
if (ref->flash_offset == REF_LINK_NODE) {
40005828: 00c62783 lw a5,12(a2)
4000582c: fff00693 li a3,-1
}
uint32_t __jffs2_ref_totlen(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
struct jffs2_raw_node_ref *ref)
{
40005830: 00060813 mv a6,a2
pr_crit("ref %p @0x%08x is not jeb->last_node (%p @0x%08x)\n",
40005834: ffc77613 andi a2,a4,-4
40005838: 00d78c63 beq a5,a3,40005850 <__jffs2_ref_totlen+0x2c>
if (ref->flash_offset == REF_EMPTY_NODE)
4000583c: ffe00693 li a3,-2
40005840: 02d78063 beq a5,a3,40005860 <__jffs2_ref_totlen+0x3c>
ref_end = ref_offset(next_ref);
40005844: ffc7f513 andi a0,a5,-4
ret = ref->__totlen;
}
#endif /* TEST_TOTLEN */
return ret;
}
40005848: 40c50533 sub a0,a0,a2
4000584c: 00008067 ret
ref = ref->next_in_ino;
40005850: 00882783 lw a5,8(a6)
if (!ref)
40005854: 00078663 beqz a5,40005860 <__jffs2_ref_totlen+0x3c> <== NEVER TAKEN
if (ref->flash_offset == REF_EMPTY_NODE)
40005858: 0047a783 lw a5,4(a5)
4000585c: fe1ff06f j 4000583c <__jffs2_ref_totlen+0x18>
if (!jeb)
40005860: 02058463 beqz a1,40005888 <__jffs2_ref_totlen+0x64> <== NEVER TAKEN
if (unlikely(ref != jeb->last_node)) {
40005864: 02c5a683 lw a3,44(a1)
40005868: 02d81e63 bne a6,a3,400058a4 <__jffs2_ref_totlen+0x80>
ref_end = jeb->offset + c->sector_size - jeb->free_size;
4000586c: 03452703 lw a4,52(a0)
40005870: 00c5a783 lw a5,12(a1)
40005874: 0205a503 lw a0,32(a1)
40005878: 00e787b3 add a5,a5,a4
4000587c: 40a78533 sub a0,a5,a0
}
40005880: 40c50533 sub a0,a0,a2
40005884: 00008067 ret
jeb = &c->blocks[ref->flash_offset / c->sector_size];
40005888: 03452783 lw a5,52(a0) <== NOT EXECUTED
4000588c: 05452583 lw a1,84(a0) <== NOT EXECUTED
40005890: 02f75733 divu a4,a4,a5 <== NOT EXECUTED
40005894: 03400793 li a5,52 <== NOT EXECUTED
40005898: 02f70733 mul a4,a4,a5 <== NOT EXECUTED
4000589c: 00e585b3 add a1,a1,a4 <== NOT EXECUTED
400058a0: fc5ff06f j 40005864 <__jffs2_ref_totlen+0x40> <== NOT EXECUTED
{
400058a4: ff010113 addi sp,sp,-16 <== NOT EXECUTED
400058a8: 00112623 sw ra,12(sp) <== NOT EXECUTED
pr_crit("ref %p @0x%08x is not jeb->last_node (%p @0x%08x)\n",
400058ac: 02068e63 beqz a3,400058e8 <__jffs2_ref_totlen+0xc4> <== NOT EXECUTED
400058b0: 0046a703 lw a4,4(a3) <== NOT EXECUTED
400058b4: ffc77713 andi a4,a4,-4 <== NOT EXECUTED
400058b8: 4001e537 lui a0,0x4001e <== NOT EXECUTED
400058bc: 00080593 mv a1,a6 <== NOT EXECUTED
400058c0: edc50513 addi a0,a0,-292 # 4001dedc <__func__.4+0x178> <== NOT EXECUTED
400058c4: 954ff0ef jal ra,40004a18 <jffs2_printk> <== NOT EXECUTED
BUG();
400058c8: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
400058cc: 4001e637 lui a2,0x4001e <== NOT EXECUTED
400058d0: 4001e537 lui a0,0x4001e <== NOT EXECUTED
400058d4: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
400058d8: f1c60613 addi a2,a2,-228 # 4001df1c <__func__.0> <== NOT EXECUTED
400058dc: 2c900593 li a1,713 <== NOT EXECUTED
400058e0: db850513 addi a0,a0,-584 # 4001ddb8 <__func__.4+0x54> <== NOT EXECUTED
400058e4: 1bd070ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
pr_crit("ref %p @0x%08x is not jeb->last_node (%p @0x%08x)\n",
400058e8: 00000713 li a4,0 <== NOT EXECUTED
400058ec: fcdff06f j 400058b8 <__jffs2_ref_totlen+0x94> <== NOT EXECUTED
40004af8 <jffs2_add_fd_to_list>:
{
40004af8: fe010113 addi sp,sp,-32
40004afc: 00812c23 sw s0,24(sp)
while ((*prev) && (*prev)->nhash <= new->nhash) {
40004b00: 00062403 lw s0,0(a2)
{
40004b04: 01212823 sw s2,16(sp)
40004b08: 01312623 sw s3,12(sp)
40004b0c: 00112e23 sw ra,28(sp)
40004b10: 00912a23 sw s1,20(sp)
40004b14: 01412423 sw s4,8(sp)
40004b18: 01512223 sw s5,4(sp)
40004b1c: 00060913 mv s2,a2
40004b20: 00058993 mv s3,a1
while ((*prev) && (*prev)->nhash <= new->nhash) {
40004b24: 06040a63 beqz s0,40004b98 <jffs2_add_fd_to_list+0xa0>
40004b28: 0105a483 lw s1,16(a1)
40004b2c: 00050a93 mv s5,a0
if ((*prev)->nhash == new->nhash && !strcmp((*prev)->name, new->name)) {
40004b30: 01558a13 addi s4,a1,21
40004b34: 0100006f j 40004b44 <jffs2_add_fd_to_list+0x4c>
prev = &((*prev)->next);
40004b38: 00440913 addi s2,s0,4
while ((*prev) && (*prev)->nhash <= new->nhash) {
40004b3c: 00442403 lw s0,4(s0)
40004b40: 04040c63 beqz s0,40004b98 <jffs2_add_fd_to_list+0xa0>
40004b44: 01042783 lw a5,16(s0)
40004b48: 04f4e863 bltu s1,a5,40004b98 <jffs2_add_fd_to_list+0xa0>
if ((*prev)->nhash == new->nhash && !strcmp((*prev)->name, new->name)) {
40004b4c: fe9796e3 bne a5,s1,40004b38 <jffs2_add_fd_to_list+0x40>
40004b50: 01540513 addi a0,s0,21
40004b54: 000a0593 mv a1,s4
40004b58: 029170ef jal ra,4001c380 <strcmp>
40004b5c: fc051ee3 bnez a0,40004b38 <jffs2_add_fd_to_list+0x40> <== NEVER TAKEN
if (new->version < (*prev)->version) {
40004b60: 0089a703 lw a4,8(s3)
40004b64: 00842783 lw a5,8(s0)
40004b68: 04f76e63 bltu a4,a5,40004bc4 <jffs2_add_fd_to_list+0xcc>
new->next = (*prev)->next;
40004b6c: 00442783 lw a5,4(s0)
40004b70: 00f9a223 sw a5,4(s3)
if ((*prev)->raw)
40004b74: 00092503 lw a0,0(s2)
40004b78: 00052583 lw a1,0(a0)
40004b7c: 00058863 beqz a1,40004b8c <jffs2_add_fd_to_list+0x94>
jffs2_mark_node_obsolete(c, ((*prev)->raw));
40004b80: 000a8513 mv a0,s5
40004b84: 719000ef jal ra,40005a9c <jffs2_mark_node_obsolete>
jffs2_free_full_dirent(*prev);
40004b88: 00092503 lw a0,0(s2)
40004b8c: cedff0ef jal ra,40004878 <jffs2_free_full_dirent>
*prev = new;
40004b90: 01392023 sw s3,0(s2)
40004b94: 00c0006f j 40004ba0 <jffs2_add_fd_to_list+0xa8>
new->next = *prev;
40004b98: 0089a223 sw s0,4(s3)
*prev = new;
40004b9c: 01392023 sw s3,0(s2)
}
40004ba0: 01c12083 lw ra,28(sp)
40004ba4: 01812403 lw s0,24(sp)
40004ba8: 01412483 lw s1,20(sp)
40004bac: 01012903 lw s2,16(sp)
40004bb0: 00c12983 lw s3,12(sp)
40004bb4: 00812a03 lw s4,8(sp)
40004bb8: 00412a83 lw s5,4(sp)
40004bbc: 02010113 addi sp,sp,32
40004bc0: 00008067 ret
jffs2_mark_node_obsolete(c, new->raw);
40004bc4: 0009a583 lw a1,0(s3) <== NOT EXECUTED
40004bc8: 000a8513 mv a0,s5 <== NOT EXECUTED
40004bcc: 6d1000ef jal ra,40005a9c <jffs2_mark_node_obsolete> <== NOT EXECUTED
}
40004bd0: 01812403 lw s0,24(sp) <== NOT EXECUTED
40004bd4: 01c12083 lw ra,28(sp) <== NOT EXECUTED
40004bd8: 01412483 lw s1,20(sp) <== NOT EXECUTED
40004bdc: 01012903 lw s2,16(sp) <== NOT EXECUTED
40004be0: 00812a03 lw s4,8(sp) <== NOT EXECUTED
40004be4: 00412a83 lw s5,4(sp) <== NOT EXECUTED
jffs2_free_full_dirent(new);
40004be8: 00098513 mv a0,s3 <== NOT EXECUTED
}
40004bec: 00c12983 lw s3,12(sp) <== NOT EXECUTED
40004bf0: 02010113 addi sp,sp,32 <== NOT EXECUTED
jffs2_free_full_dirent(new);
40004bf4: c85ff06f j 40004878 <jffs2_free_full_dirent> <== NOT EXECUTED
40004d78 <jffs2_add_full_dnode_to_inode>:
{
40004d78: fd010113 addi sp,sp,-48
40004d7c: 01812423 sw s8,8(sp)
if (unlikely(!fn->size))
40004d80: 00862c03 lw s8,8(a2)
{
40004d84: 02112623 sw ra,44(sp)
40004d88: 02812423 sw s0,40(sp)
40004d8c: 02912223 sw s1,36(sp)
40004d90: 03212023 sw s2,32(sp)
40004d94: 01312e23 sw s3,28(sp)
40004d98: 01412c23 sw s4,24(sp)
40004d9c: 01512a23 sw s5,20(sp)
40004da0: 01612823 sw s6,16(sp)
40004da4: 01712623 sw s7,12(sp)
40004da8: 01912223 sw s9,4(sp)
if (unlikely(!fn->size))
40004dac: 020c1e63 bnez s8,40004de8 <jffs2_add_full_dnode_to_inode+0x70> <== ALWAYS TAKEN
return 0;
40004db0: 00000513 li a0,0
}
40004db4: 02c12083 lw ra,44(sp)
40004db8: 02812403 lw s0,40(sp)
40004dbc: 02412483 lw s1,36(sp)
40004dc0: 02012903 lw s2,32(sp)
40004dc4: 01c12983 lw s3,28(sp)
40004dc8: 01812a03 lw s4,24(sp)
40004dcc: 01412a83 lw s5,20(sp)
40004dd0: 01012b03 lw s6,16(sp)
40004dd4: 00c12b83 lw s7,12(sp)
40004dd8: 00812c03 lw s8,8(sp)
40004ddc: 00412c83 lw s9,4(sp)
40004de0: 03010113 addi sp,sp,48
40004de4: 00008067 ret
newfrag = new_fragment(fn, fn->ofs, fn->size);
40004de8: 00462c83 lw s9,4(a2)
40004dec: 00060a13 mv s4,a2
40004df0: 00050b13 mv s6,a0
40004df4: 00058b93 mv s7,a1
newfrag = jffs2_alloc_node_frag();
40004df8: b9dff0ef jal ra,40004994 <jffs2_alloc_node_frag>
40004dfc: 00050913 mv s2,a0
if (likely(newfrag)) {
40004e00: 32050e63 beqz a0,4000513c <jffs2_add_full_dnode_to_inode+0x3c4> <== NEVER TAKEN
next = fragtree->rb_node;
40004e04: 004ba403 lw s0,4(s7)
newfrag->node->frags = 1;
40004e08: 00100713 li a4,1
newfrag->ofs = ofs;
40004e0c: 01952c23 sw s9,24(a0)
newfrag->size = size;
40004e10: 01852a23 sw s8,20(a0)
newfrag->node = fn;
40004e14: 01452823 sw s4,16(a0)
newfrag->node->frags = 1;
40004e18: 00ea2623 sw a4,12(s4)
this = jffs2_lookup_node_frag(root, newfrag->node->ofs);
40004e1c: 004a2983 lw s3,4(s4)
ret = jffs2_add_frag_to_fragtree(c, &f->fragtree, newfrag);
40004e20: 004b8a93 addi s5,s7,4
struct jffs2_node_frag *prev = NULL;
40004e24: 00000713 li a4,0
while(next) {
40004e28: 14040863 beqz s0,40004f78 <jffs2_add_full_dnode_to_inode+0x200>
if (frag->ofs + frag->size <= offset) {
40004e2c: 01842783 lw a5,24(s0)
40004e30: 01442483 lw s1,20(s0)
40004e34: 009784b3 add s1,a5,s1
40004e38: 1299e863 bltu s3,s1,40004f68 <jffs2_add_full_dnode_to_inode+0x1f0>
if (!prev || frag->ofs > prev->ofs)
40004e3c: 00070663 beqz a4,40004e48 <jffs2_add_full_dnode_to_inode+0xd0>
40004e40: 01872683 lw a3,24(a4)
40004e44: 00f6f463 bgeu a3,a5,40004e4c <jffs2_add_full_dnode_to_inode+0xd4>
40004e48: 00040713 mv a4,s0
next = frag->rb.rb_right;
40004e4c: 00442403 lw s0,4(s0)
while(next) {
40004e50: fc041ee3 bnez s0,40004e2c <jffs2_add_full_dnode_to_inode+0xb4>
if (this) {
40004e54: 12070263 beqz a4,40004f78 <jffs2_add_full_dnode_to_inode+0x200> <== NEVER TAKEN
lastend = this->ofs + this->size;
40004e58: 01872783 lw a5,24(a4)
40004e5c: 01472483 lw s1,20(a4)
40004e60: 00070413 mv s0,a4
40004e64: 009784b3 add s1,a5,s1
if (lastend <= newfrag->ofs) {
40004e68: 229cf863 bgeu s9,s1,40005098 <jffs2_add_full_dnode_to_inode+0x320>
if (newfrag->ofs > this->ofs) {
40004e6c: 2797fa63 bgeu a5,s9,400050e0 <jffs2_add_full_dnode_to_inode+0x368>
mark_ref_normal(newfrag->node->raw);
40004e70: 000a2683 lw a3,0(s4)
if (this->node)
40004e74: 01042b83 lw s7,16(s0)
mark_ref_normal(newfrag->node->raw);
40004e78: 0046a703 lw a4,4(a3)
40004e7c: 00376713 ori a4,a4,3
40004e80: 00e6a223 sw a4,4(a3)
if (this->node)
40004e84: 000b8a63 beqz s7,40004e98 <jffs2_add_full_dnode_to_inode+0x120>
mark_ref_normal(this->node->raw);
40004e88: 000ba683 lw a3,0(s7)
40004e8c: 0046a703 lw a4,4(a3)
40004e90: 00376713 ori a4,a4,3
40004e94: 00e6a223 sw a4,4(a3)
if (this->ofs + this->size > newfrag->ofs + newfrag->size) {
40004e98: 019c0c33 add s8,s8,s9
40004e9c: 149c7463 bgeu s8,s1,40004fe4 <jffs2_add_full_dnode_to_inode+0x26c>
newfrag = jffs2_alloc_node_frag();
40004ea0: af5ff0ef jal ra,40004994 <jffs2_alloc_node_frag> <== NOT EXECUTED
40004ea4: 00050b13 mv s6,a0 <== NOT EXECUTED
newfrag2 = new_fragment(this->node, newfrag->ofs + newfrag->size,
40004ea8: 418484b3 sub s1,s1,s8 <== NOT EXECUTED
if (likely(newfrag)) {
40004eac: 28050863 beqz a0,4000513c <jffs2_add_full_dnode_to_inode+0x3c4> <== NOT EXECUTED
newfrag->node = fn;
40004eb0: 01752823 sw s7,16(a0) <== NOT EXECUTED
if (this->node)
40004eb4: 01042783 lw a5,16(s0) <== NOT EXECUTED
newfrag->ofs = ofs;
40004eb8: 01852c23 sw s8,24(a0) <== NOT EXECUTED
newfrag->size = size;
40004ebc: 00952a23 sw s1,20(a0) <== NOT EXECUTED
if (this->node)
40004ec0: 00078863 beqz a5,40004ed0 <jffs2_add_full_dnode_to_inode+0x158> <== NOT EXECUTED
this->node->frags++;
40004ec4: 00c7a703 lw a4,12(a5) <== NOT EXECUTED
40004ec8: 00170713 addi a4,a4,1 <== NOT EXECUTED
40004ecc: 00e7a623 sw a4,12(a5) <== NOT EXECUTED
this->size = newfrag->ofs - this->ofs;
40004ed0: 01842703 lw a4,24(s0) <== NOT EXECUTED
40004ed4: 01892783 lw a5,24(s2) <== NOT EXECUTED
jffs2_fragtree_insert(newfrag, this);
40004ed8: 00040593 mv a1,s0 <== NOT EXECUTED
40004edc: 00090513 mv a0,s2 <== NOT EXECUTED
this->size = newfrag->ofs - this->ofs;
40004ee0: 40e787b3 sub a5,a5,a4 <== NOT EXECUTED
40004ee4: 00f42a23 sw a5,20(s0) <== NOT EXECUTED
jffs2_fragtree_insert(newfrag, this);
40004ee8: b71ff0ef jal ra,40004a58 <jffs2_fragtree_insert> <== NOT EXECUTED
_RBTree_Insert_color( (RBTree_Control *) root, node );
40004eec: 00090593 mv a1,s2 <== NOT EXECUTED
40004ef0: 000a8513 mv a0,s5 <== NOT EXECUTED
40004ef4: 5180f0ef jal ra,4001440c <_RBTree_Insert_color> <== NOT EXECUTED
jffs2_fragtree_insert(newfrag2, newfrag);
40004ef8: 00090593 mv a1,s2 <== NOT EXECUTED
40004efc: 000b0513 mv a0,s6 <== NOT EXECUTED
40004f00: b59ff0ef jal ra,40004a58 <jffs2_fragtree_insert> <== NOT EXECUTED
40004f04: 000b0593 mv a1,s6 <== NOT EXECUTED
40004f08: 000a8513 mv a0,s5 <== NOT EXECUTED
40004f0c: 5000f0ef jal ra,4001440c <_RBTree_Insert_color> <== NOT EXECUTED
if (newfrag->ofs & (PAGE_SIZE-1)) {
40004f10: 01892683 lw a3,24(s2) <== NOT EXECUTED
40004f14: 01469793 slli a5,a3,0x14
40004f18: 08079a63 bnez a5,40004fac <jffs2_add_full_dnode_to_inode+0x234>
if ((newfrag->ofs+newfrag->size) & (PAGE_SIZE-1)) {
40004f1c: 01492783 lw a5,20(s2)
40004f20: 00f686b3 add a3,a3,a5
40004f24: 01469693 slli a3,a3,0x14
40004f28: e80684e3 beqz a3,40004db0 <jffs2_add_full_dnode_to_inode+0x38>
return _RBTree_Successor( node );
40004f2c: 00090513 mv a0,s2
40004f30: 6f00f0ef jal ra,40014620 <_RBTree_Successor>
if (next) {
40004f34: e6050ee3 beqz a0,40004db0 <jffs2_add_full_dnode_to_inode+0x38>
mark_ref_normal(fn->raw);
40004f38: 000a2703 lw a4,0(s4)
if (next->node)
40004f3c: 01052683 lw a3,16(a0)
mark_ref_normal(fn->raw);
40004f40: 00472783 lw a5,4(a4)
40004f44: 0037e793 ori a5,a5,3
40004f48: 00f72223 sw a5,4(a4)
if (next->node)
40004f4c: e60682e3 beqz a3,40004db0 <jffs2_add_full_dnode_to_inode+0x38> <== NEVER TAKEN
mark_ref_normal(next->node->raw);
40004f50: 0006a703 lw a4,0(a3)
return 0;
40004f54: 00000513 li a0,0
mark_ref_normal(next->node->raw);
40004f58: 00472783 lw a5,4(a4)
40004f5c: 0037e793 ori a5,a5,3
40004f60: 00f72223 sw a5,4(a4)
40004f64: e51ff06f j 40004db4 <jffs2_add_full_dnode_to_inode+0x3c>
} else if (frag->ofs > offset) {
40004f68: f0f9f0e3 bgeu s3,a5,40004e68 <jffs2_add_full_dnode_to_inode+0xf0>
next = frag->rb.rb_left;
40004f6c: 00042403 lw s0,0(s0)
while(next) {
40004f70: ea041ee3 bnez s0,40004e2c <jffs2_add_full_dnode_to_inode+0xb4> <== ALWAYS TAKEN
40004f74: ee1ff06f j 40004e54 <jffs2_add_full_dnode_to_inode+0xdc> <== NOT EXECUTED
if (lastend < newfrag->node->ofs) {
40004f78: 24099e63 bnez s3,400051d4 <jffs2_add_full_dnode_to_inode+0x45c>
RB_SET( child, parent, Node );
40004f7c: 00100793 li a5,1
40004f80: 00092423 sw zero,8(s2)
40004f84: 00092223 sw zero,4(s2)
40004f88: 00092023 sw zero,0(s2)
40004f8c: 00f92623 sw a5,12(s2)
*link = child;
40004f90: 012ba223 sw s2,4(s7)
_RBTree_Insert_color( (RBTree_Control *) root, node );
40004f94: 00090593 mv a1,s2
40004f98: 000a8513 mv a0,s5
40004f9c: 4700f0ef jal ra,4001440c <_RBTree_Insert_color>
if (newfrag->ofs & (PAGE_SIZE-1)) {
40004fa0: 01892683 lw a3,24(s2)
40004fa4: 01469793 slli a5,a3,0x14
40004fa8: f6078ae3 beqz a5,40004f1c <jffs2_add_full_dnode_to_inode+0x1a4>
return _RBTree_Predecessor( node );
40004fac: 00090513 mv a0,s2
40004fb0: 6c40f0ef jal ra,40014674 <_RBTree_Predecessor>
mark_ref_normal(fn->raw);
40004fb4: 000a2703 lw a4,0(s4)
if (prev->node)
40004fb8: 01052683 lw a3,16(a0)
mark_ref_normal(fn->raw);
40004fbc: 00472783 lw a5,4(a4)
40004fc0: 0037e793 ori a5,a5,3
40004fc4: 00f72223 sw a5,4(a4)
if (prev->node)
40004fc8: 1c068c63 beqz a3,400051a0 <jffs2_add_full_dnode_to_inode+0x428>
mark_ref_normal(prev->node->raw);
40004fcc: 0006a703 lw a4,0(a3)
if ((newfrag->ofs+newfrag->size) & (PAGE_SIZE-1)) {
40004fd0: 01892683 lw a3,24(s2)
mark_ref_normal(prev->node->raw);
40004fd4: 00472783 lw a5,4(a4)
40004fd8: 0037e793 ori a5,a5,3
40004fdc: 00f72223 sw a5,4(a4)
40004fe0: f3dff06f j 40004f1c <jffs2_add_full_dnode_to_inode+0x1a4>
this->size = newfrag->ofs - this->ofs;
40004fe4: 40fc87b3 sub a5,s9,a5
jffs2_fragtree_insert(newfrag, this);
40004fe8: 00040593 mv a1,s0
40004fec: 00090513 mv a0,s2
this->size = newfrag->ofs - this->ofs;
40004ff0: 00f42a23 sw a5,20(s0)
jffs2_fragtree_insert(newfrag, this);
40004ff4: a65ff0ef jal ra,40004a58 <jffs2_fragtree_insert>
_RBTree_Insert_color( (RBTree_Control *) root, node );
40004ff8: 00090593 mv a1,s2
40004ffc: 000a8513 mv a0,s5
40005000: 40c0f0ef jal ra,4001440c <_RBTree_Insert_color>
}
40005004: 0140006f j 40005018 <jffs2_add_full_dnode_to_inode+0x2a0>
_RBTree_Extract( (RBTree_Control *) root, node );
40005008: 7d90e0ef jal ra,40013fe0 <_RBTree_Extract>
jffs2_obsolete_node_frag(c, this);
4000500c: 00040593 mv a1,s0
40005010: 000b0513 mv a0,s6
40005014: 999ff0ef jal ra,400049ac <jffs2_obsolete_node_frag>
return _RBTree_Successor( node );
40005018: 00090513 mv a0,s2
4000501c: 6040f0ef jal ra,40014620 <_RBTree_Successor>
40005020: 00050413 mv s0,a0
while ((this = frag_next(newfrag)) && newfrag->ofs + newfrag->size >= this->ofs + this->size) {
40005024: 01892683 lw a3,24(s2)
_RBTree_Extract( (RBTree_Control *) root, node );
40005028: 000a8513 mv a0,s5
4000502c: 00040593 mv a1,s0
40005030: ee0402e3 beqz s0,40004f14 <jffs2_add_full_dnode_to_inode+0x19c>
40005034: 01492703 lw a4,20(s2)
40005038: 01842603 lw a2,24(s0)
4000503c: 01442783 lw a5,20(s0)
40005040: 00e68733 add a4,a3,a4
40005044: 00f607b3 add a5,a2,a5
40005048: fcf770e3 bgeu a4,a5,40005008 <jffs2_add_full_dnode_to_inode+0x290>
if (!this || newfrag->ofs + newfrag->size == this->ofs)
4000504c: ecc704e3 beq a4,a2,40004f14 <jffs2_add_full_dnode_to_inode+0x19c>
this->size = (this->ofs + this->size) - (newfrag->ofs + newfrag->size);
40005050: 40e787b3 sub a5,a5,a4
40005054: 00f42a23 sw a5,20(s0)
this->ofs = newfrag->ofs + newfrag->size;
40005058: 01492783 lw a5,20(s2)
if (this->node)
4000505c: 01042703 lw a4,16(s0)
this->ofs = newfrag->ofs + newfrag->size;
40005060: 00d786b3 add a3,a5,a3
40005064: 00d42c23 sw a3,24(s0)
if (this->node)
40005068: 00070a63 beqz a4,4000507c <jffs2_add_full_dnode_to_inode+0x304> <== NEVER TAKEN
mark_ref_normal(this->node->raw);
4000506c: 00072703 lw a4,0(a4)
40005070: 00472783 lw a5,4(a4)
40005074: 0037e793 ori a5,a5,3
40005078: 00f72223 sw a5,4(a4)
mark_ref_normal(newfrag->node->raw);
4000507c: 01092783 lw a5,16(s2)
if (newfrag->ofs & (PAGE_SIZE-1)) {
40005080: 01892683 lw a3,24(s2)
mark_ref_normal(newfrag->node->raw);
40005084: 0007a703 lw a4,0(a5)
40005088: 00472783 lw a5,4(a4)
4000508c: 0037e793 ori a5,a5,3
40005090: 00f72223 sw a5,4(a4)
if (unlikely(ret))
40005094: e81ff06f j 40004f14 <jffs2_add_full_dnode_to_inode+0x19c>
if (lastend && (lastend-1) >> PAGE_SHIFT == newfrag->ofs >> PAGE_SHIFT) {
40005098: 00048a63 beqz s1,400050ac <jffs2_add_full_dnode_to_inode+0x334> <== NEVER TAKEN
4000509c: fff48713 addi a4,s1,-1
400050a0: 00c75713 srli a4,a4,0xc
400050a4: 00ccd793 srli a5,s9,0xc
400050a8: 10f70063 beq a4,a5,400051a8 <jffs2_add_full_dnode_to_inode+0x430>
rb_link_node(&newfrag->rb, &this->rb, &this->rb.rb_right);
400050ac: 00040b13 mv s6,s0
if (lastend < newfrag->node->ofs) {
400050b0: 0b34e463 bltu s1,s3,40005158 <jffs2_add_full_dnode_to_inode+0x3e0>
RB_SET( child, parent, Node );
400050b4: 00100793 li a5,1
400050b8: 01692423 sw s6,8(s2)
400050bc: 00092223 sw zero,4(s2)
400050c0: 00092023 sw zero,0(s2)
400050c4: 00f92623 sw a5,12(s2)
*link = child;
400050c8: 01242223 sw s2,4(s0)
_RBTree_Insert_color( (RBTree_Control *) root, node );
400050cc: 00090593 mv a1,s2
400050d0: 000a8513 mv a0,s5
400050d4: 3380f0ef jal ra,4001440c <_RBTree_Insert_color>
if (newfrag->ofs & (PAGE_SIZE-1)) {
400050d8: 01892683 lw a3,24(s2)
400050dc: ec9ff06f j 40004fa4 <jffs2_add_full_dnode_to_inode+0x22c>
struct rb_node *victim,
struct rb_node *replacement,
struct rb_root *root
)
{
_RBTree_Replace_node(
400050e0: 00090613 mv a2,s2
400050e4: 00040593 mv a1,s0
400050e8: 000a8513 mv a0,s5
400050ec: 6400f0ef jal ra,4001472c <_RBTree_Replace_node>
if (newfrag->ofs + newfrag->size >= this->ofs+this->size) {
400050f0: 01492603 lw a2,20(s2)
400050f4: 01842683 lw a3,24(s0)
400050f8: 01442703 lw a4,20(s0)
400050fc: 01892783 lw a5,24(s2)
40005100: 00e685b3 add a1,a3,a4
40005104: 00f607b3 add a5,a2,a5
40005108: f0b7f2e3 bgeu a5,a1,4000500c <jffs2_add_full_dnode_to_inode+0x294>
this->ofs += newfrag->size;
4000510c: 00d606b3 add a3,a2,a3 <== NOT EXECUTED
this->size -= newfrag->size;
40005110: 40c70733 sub a4,a4,a2 <== NOT EXECUTED
this->ofs += newfrag->size;
40005114: 00d42c23 sw a3,24(s0) <== NOT EXECUTED
this->size -= newfrag->size;
40005118: 00e42a23 sw a4,20(s0) <== NOT EXECUTED
jffs2_fragtree_insert(this, newfrag);
4000511c: 00090593 mv a1,s2 <== NOT EXECUTED
40005120: 00040513 mv a0,s0 <== NOT EXECUTED
40005124: 935ff0ef jal ra,40004a58 <jffs2_fragtree_insert> <== NOT EXECUTED
_RBTree_Insert_color( (RBTree_Control *) root, node );
40005128: 00040593 mv a1,s0 <== NOT EXECUTED
4000512c: 000a8513 mv a0,s5 <== NOT EXECUTED
40005130: 2dc0f0ef jal ra,4001440c <_RBTree_Insert_color> <== NOT EXECUTED
if (newfrag->ofs & (PAGE_SIZE-1)) {
40005134: 01892683 lw a3,24(s2) <== NOT EXECUTED
40005138: dddff06f j 40004f14 <jffs2_add_full_dnode_to_inode+0x19c> <== NOT EXECUTED
JFFS2_ERROR("cannot allocate a jffs2_node_frag object\n");
4000513c: 4001e5b7 lui a1,0x4001e <== NOT EXECUTED
40005140: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40005144: f7058593 addi a1,a1,-144 # 4001df70 <__func__.4> <== NOT EXECUTED
40005148: de850513 addi a0,a0,-536 # 4001dde8 <__func__.4+0x84> <== NOT EXECUTED
4000514c: 8cdff0ef jal ra,40004a18 <jffs2_printk> <== NOT EXECUTED
return -ENOMEM;
40005150: ff400513 li a0,-12 <== NOT EXECUTED
40005154: c61ff06f j 40004db4 <jffs2_add_full_dnode_to_inode+0x3c> <== NOT EXECUTED
newfrag = jffs2_alloc_node_frag();
40005158: 83dff0ef jal ra,40004994 <jffs2_alloc_node_frag> <== NOT EXECUTED
holefrag= new_fragment(NULL, lastend, newfrag->node->ofs - lastend);
4000515c: 409989b3 sub s3,s3,s1 <== NOT EXECUTED
if (likely(newfrag)) {
40005160: 0a050663 beqz a0,4000520c <jffs2_add_full_dnode_to_inode+0x494> <== NOT EXECUTED
RB_SET( child, parent, Node );
40005164: 00100793 li a5,1 <== NOT EXECUTED
40005168: 00852423 sw s0,8(a0) <== NOT EXECUTED
newfrag->ofs = ofs;
4000516c: 00952c23 sw s1,24(a0) <== NOT EXECUTED
newfrag->size = size;
40005170: 01352a23 sw s3,20(a0) <== NOT EXECUTED
newfrag->node = fn;
40005174: 00052823 sw zero,16(a0) <== NOT EXECUTED
40005178: 00052223 sw zero,4(a0) <== NOT EXECUTED
4000517c: 00052023 sw zero,0(a0) <== NOT EXECUTED
40005180: 00f52623 sw a5,12(a0) <== NOT EXECUTED
*link = child;
40005184: 00a42223 sw a0,4(s0) <== NOT EXECUTED
rb_link_node(&holefrag->rb, &this->rb, &this->rb.rb_right);
40005188: 00050b13 mv s6,a0 <== NOT EXECUTED
struct rb_node **link
)
{
_RBTree_Initialize_node( node );
_RBTree_Add_child( node, parent, link );
}
4000518c: 00050413 mv s0,a0 <== NOT EXECUTED
_RBTree_Insert_color( (RBTree_Control *) root, node );
40005190: 000b0593 mv a1,s6
40005194: 000a8513 mv a0,s5
40005198: 2740f0ef jal ra,4001440c <_RBTree_Insert_color>
if (this) {
4000519c: f19ff06f j 400050b4 <jffs2_add_full_dnode_to_inode+0x33c>
if ((newfrag->ofs+newfrag->size) & (PAGE_SIZE-1)) {
400051a0: 01892683 lw a3,24(s2)
400051a4: d79ff06f j 40004f1c <jffs2_add_full_dnode_to_inode+0x1a4>
if (this->node)
400051a8: 01042783 lw a5,16(s0)
400051ac: 00078a63 beqz a5,400051c0 <jffs2_add_full_dnode_to_inode+0x448> <== NEVER TAKEN
mark_ref_normal(this->node->raw);
400051b0: 0007a703 lw a4,0(a5)
400051b4: 00472783 lw a5,4(a4)
400051b8: 0037e793 ori a5,a5,3
400051bc: 00f72223 sw a5,4(a4)
mark_ref_normal(newfrag->node->raw);
400051c0: 000a2703 lw a4,0(s4)
400051c4: 00472783 lw a5,4(a4)
400051c8: 0037e793 ori a5,a5,3
400051cc: 00f72223 sw a5,4(a4)
400051d0: eddff06f j 400050ac <jffs2_add_full_dnode_to_inode+0x334>
newfrag = jffs2_alloc_node_frag();
400051d4: fc0ff0ef jal ra,40004994 <jffs2_alloc_node_frag>
400051d8: 00050413 mv s0,a0
if (likely(newfrag)) {
400051dc: 02050863 beqz a0,4000520c <jffs2_add_full_dnode_to_inode+0x494> <== NEVER TAKEN
RB_SET( child, parent, Node );
400051e0: 00100793 li a5,1
newfrag->ofs = ofs;
400051e4: 00052c23 sw zero,24(a0)
newfrag->size = size;
400051e8: 01352a23 sw s3,20(a0)
newfrag->node = fn;
400051ec: 00052823 sw zero,16(a0)
400051f0: 00052423 sw zero,8(a0)
400051f4: 00052223 sw zero,4(a0)
400051f8: 00052023 sw zero,0(a0)
400051fc: 00f52623 sw a5,12(a0)
rb_link_node(&holefrag->rb, NULL, &root->rb_node);
40005200: 00050b13 mv s6,a0
*link = child;
40005204: 00aba223 sw a0,4(s7)
}
40005208: f89ff06f j 40005190 <jffs2_add_full_dnode_to_inode+0x418>
JFFS2_ERROR("cannot allocate a jffs2_node_frag object\n");
4000520c: 4001e5b7 lui a1,0x4001e <== NOT EXECUTED
40005210: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40005214: f7058593 addi a1,a1,-144 # 4001df70 <__func__.4> <== NOT EXECUTED
40005218: de850513 addi a0,a0,-536 # 4001dde8 <__func__.4+0x84> <== NOT EXECUTED
4000521c: ffcff0ef jal ra,40004a18 <jffs2_printk> <== NOT EXECUTED
jffs2_free_node_frag(newfrag);
40005220: 00090513 mv a0,s2 <== NOT EXECUTED
40005224: f78ff0ef jal ra,4000499c <jffs2_free_node_frag> <== NOT EXECUTED
return -ENOMEM;
40005228: ff400513 li a0,-12 <== NOT EXECUTED
4000522c: b89ff06f j 40004db4 <jffs2_add_full_dnode_to_inode+0x3c> <== NOT EXECUTED
40005280 <jffs2_add_ino_cache>:
if (!new->ino)
40005280: 00c5a683 lw a3,12(a1)
40005284: 00069a63 bnez a3,40005298 <jffs2_add_ino_cache+0x18>
new->ino = ++c->highest_ino;
40005288: 00452683 lw a3,4(a0)
4000528c: 00168693 addi a3,a3,1
40005290: 00d52223 sw a3,4(a0)
40005294: 00d5a623 sw a3,12(a1)
prev = &c->inocache_list[new->ino % c->inocache_hashsize];
40005298: 0c052783 lw a5,192(a0)
4000529c: 0c452603 lw a2,196(a0)
400052a0: 02f6f7b3 remu a5,a3,a5
400052a4: 00279793 slli a5,a5,0x2
400052a8: 00f60633 add a2,a2,a5
while ((*prev) && (*prev)->ino < new->ino) {
400052ac: 00062783 lw a5,0(a2)
400052b0: 00079a63 bnez a5,400052c4 <jffs2_add_ino_cache+0x44> <== NEVER TAKEN
400052b4: 0180006f j 400052cc <jffs2_add_ino_cache+0x4c>
prev = &(*prev)->next;
400052b8: 01078613 addi a2,a5,16 <== NOT EXECUTED
while ((*prev) && (*prev)->ino < new->ino) {
400052bc: 0107a783 lw a5,16(a5) <== NOT EXECUTED
400052c0: 00078663 beqz a5,400052cc <jffs2_add_ino_cache+0x4c> <== NOT EXECUTED
400052c4: 00c7a703 lw a4,12(a5) <== NOT EXECUTED
400052c8: fed768e3 bltu a4,a3,400052b8 <jffs2_add_ino_cache+0x38> <== NOT EXECUTED
new->next = *prev;
400052cc: 00f5a823 sw a5,16(a1)
*prev = new;
400052d0: 00b62023 sw a1,0(a2)
}
400052d4: 00008067 ret
40005930 <jffs2_add_physical_node_ref>:
*/
struct jffs2_raw_node_ref *jffs2_add_physical_node_ref(struct jffs2_sb_info *c,
uint32_t ofs, uint32_t len,
struct jffs2_inode_cache *ic)
{
40005930: ff010113 addi sp,sp,-16
40005934: 00812423 sw s0,8(sp)
40005938: 00050413 mv s0,a0
struct jffs2_eraseblock *jeb;
struct jffs2_raw_node_ref *new;
jeb = &c->blocks[ofs / c->sector_size];
4000593c: 03452503 lw a0,52(a0)
{
40005940: 00058793 mv a5,a1
jeb = &c->blocks[ofs / c->sector_size];
40005944: 03400813 li a6,52
40005948: 02a5d5b3 divu a1,a1,a0
{
4000594c: 00912223 sw s1,4(sp)
__func__, ofs & ~3, ofs & 3, len);
#if 1
/* Allow non-obsolete nodes only to be added at the end of c->nextblock,
if c->nextblock is set. Note that wbuf.c will file obsolete nodes
even after refiling c->nextblock */
if ((c->nextblock || ((ofs & 3) != REF_OBSOLETE))
40005950: 05842703 lw a4,88(s0)
jeb = &c->blocks[ofs / c->sector_size];
40005954: 05442483 lw s1,84(s0)
{
40005958: 00112623 sw ra,12(sp)
4000595c: 01212023 sw s2,0(sp)
jeb = &c->blocks[ofs / c->sector_size];
40005960: 030585b3 mul a1,a1,a6
40005964: 00b484b3 add s1,s1,a1
if ((c->nextblock || ((ofs & 3) != REF_OBSOLETE))
40005968: 08070463 beqz a4,400059f0 <jffs2_add_physical_node_ref+0xc0> <== NEVER TAKEN
&& (jeb != c->nextblock || (ofs & ~3) != jeb->offset + (c->sector_size - jeb->free_size))) {
4000596c: ffc7f593 andi a1,a5,-4
40005970: 00971c63 bne a4,s1,40005988 <jffs2_add_physical_node_ref+0x58>
40005974: 00c4a803 lw a6,12(s1)
40005978: 0204a703 lw a4,32(s1)
4000597c: 01050533 add a0,a0,a6
40005980: 40e50533 sub a0,a0,a4
40005984: 06b50c63 beq a0,a1,400059fc <jffs2_add_physical_node_ref+0xcc>
pr_warn("argh. node added in wrong place at 0x%08x(%d)\n",
40005988: 4001e537 lui a0,0x4001e <== NOT EXECUTED
4000598c: 0037f613 andi a2,a5,3 <== NOT EXECUTED
40005990: f8050513 addi a0,a0,-128 # 4001df80 <__func__.4+0x10> <== NOT EXECUTED
40005994: f5dff0ef jal ra,400058f0 <jffs2_printk> <== NOT EXECUTED
ofs & ~3, ofs & 3);
if (c->nextblock)
40005998: 05842783 lw a5,88(s0) <== NOT EXECUTED
4000599c: 0c078e63 beqz a5,40005a78 <jffs2_add_physical_node_ref+0x148> <== NOT EXECUTED
pr_warn("nextblock 0x%08x", c->nextblock->offset);
400059a0: 00c7a583 lw a1,12(a5) <== NOT EXECUTED
400059a4: 4001e537 lui a0,0x4001e <== NOT EXECUTED
400059a8: fbc50513 addi a0,a0,-68 # 4001dfbc <__func__.4+0x4c> <== NOT EXECUTED
400059ac: f45ff0ef jal ra,400058f0 <jffs2_printk> <== NOT EXECUTED
else
pr_warn("No nextblock");
pr_cont(", expected at %08x\n",
400059b0: 00c4a783 lw a5,12(s1) <== NOT EXECUTED
400059b4: 03442703 lw a4,52(s0) <== NOT EXECUTED
400059b8: 0204a583 lw a1,32(s1) <== NOT EXECUTED
400059bc: 4001e537 lui a0,0x4001e <== NOT EXECUTED
400059c0: 00e787b3 add a5,a5,a4 <== NOT EXECUTED
400059c4: 40b785b3 sub a1,a5,a1 <== NOT EXECUTED
400059c8: ff050513 addi a0,a0,-16 # 4001dff0 <__func__.4+0x80> <== NOT EXECUTED
400059cc: f25ff0ef jal ra,400058f0 <jffs2_printk> <== NOT EXECUTED
jffs2_dbg_acct_paranoia_check_nolock(c, jeb);
spin_unlock(&c->erase_completion_lock);
return new;
}
400059d0: 00c12083 lw ra,12(sp) <== NOT EXECUTED
400059d4: 00812403 lw s0,8(sp) <== NOT EXECUTED
return ERR_PTR(-EINVAL);
400059d8: fea00913 li s2,-22 <== NOT EXECUTED
}
400059dc: 00412483 lw s1,4(sp) <== NOT EXECUTED
400059e0: 00090513 mv a0,s2 <== NOT EXECUTED
400059e4: 00012903 lw s2,0(sp) <== NOT EXECUTED
400059e8: 01010113 addi sp,sp,16 <== NOT EXECUTED
400059ec: 00008067 ret <== NOT EXECUTED
if ((c->nextblock || ((ofs & 3) != REF_OBSOLETE))
400059f0: 0037f593 andi a1,a5,3 <== NOT EXECUTED
400059f4: 00100813 li a6,1 <== NOT EXECUTED
400059f8: f7059ae3 bne a1,a6,4000596c <jffs2_add_physical_node_ref+0x3c> <== NOT EXECUTED
new = jffs2_link_node_ref(c, jeb, ofs, len, ic);
400059fc: 00068713 mv a4,a3
40005a00: 00048593 mv a1,s1
40005a04: 00060693 mv a3,a2
40005a08: 00040513 mv a0,s0
40005a0c: 00078613 mv a2,a5
40005a10: b59ff0ef jal ra,40005568 <jffs2_link_node_ref>
if (!jeb->free_size && !jeb->dirty_size && !ISDIRTY(jeb->wasted_size)) {
40005a14: 0204a783 lw a5,32(s1)
new = jffs2_link_node_ref(c, jeb, ofs, len, ic);
40005a18: 00050913 mv s2,a0
if (!jeb->free_size && !jeb->dirty_size && !ISDIRTY(jeb->wasted_size)) {
40005a1c: 02079a63 bnez a5,40005a50 <jffs2_add_physical_node_ref+0x120>
40005a20: 0184a783 lw a5,24(s1)
40005a24: 02079663 bnez a5,40005a50 <jffs2_add_physical_node_ref+0x120> <== NEVER TAKEN
40005a28: 01c4a703 lw a4,28(s1)
40005a2c: 0c400793 li a5,196
40005a30: 02e7e063 bltu a5,a4,40005a50 <jffs2_add_physical_node_ref+0x120>
struct list_head *prev = beforethisent->prev;
40005a34: 06442783 lw a5,100(s0)
list_add_tail(&jeb->list, &c->clean_list);
40005a38: 06040713 addi a4,s0,96
newent->next = beforethisent;
40005a3c: 00e4a023 sw a4,0(s1)
newent->prev = prev;
40005a40: 00f4a223 sw a5,4(s1)
beforethisent->prev = newent;
40005a44: 06942223 sw s1,100(s0)
prev->next = newent;
40005a48: 0097a023 sw s1,0(a5)
c->nextblock = NULL;
40005a4c: 04042c23 sw zero,88(s0)
jffs2_dbg_acct_sanity_check_nolock(c,jeb);
40005a50: 00040513 mv a0,s0
40005a54: 00048593 mv a1,s1
40005a58: 3f5040ef jal ra,4000a64c <__jffs2_dbg_acct_sanity_check_nolock>
}
40005a5c: 00c12083 lw ra,12(sp)
40005a60: 00812403 lw s0,8(sp)
40005a64: 00412483 lw s1,4(sp)
40005a68: 00090513 mv a0,s2
40005a6c: 00012903 lw s2,0(sp)
40005a70: 01010113 addi sp,sp,16
40005a74: 00008067 ret
pr_warn("No nextblock");
40005a78: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40005a7c: fd850513 addi a0,a0,-40 # 4001dfd8 <__func__.4+0x68> <== NOT EXECUTED
40005a80: e71ff0ef jal ra,400058f0 <jffs2_printk> <== NOT EXECUTED
40005a84: f2dff06f j 400059b0 <jffs2_add_physical_node_ref+0x80> <== NOT EXECUTED
40005a88 <jffs2_complete_reservation>:
rtems_jffs2_flash_control *fc = sb->s_flash_control;
40005a88: 0e452503 lw a0,228(a0)
if (fc->trigger_garbage_collection != NULL) {
40005a8c: 02052783 lw a5,32(a0)
40005a90: 00078463 beqz a5,40005a98 <jffs2_complete_reservation+0x10> <== ALWAYS TAKEN
(*fc->trigger_garbage_collection)(fc);
40005a94: 00078067 jr a5 <== NOT EXECUTED
jffs2_dbg(1, "jffs2_complete_reservation()\n");
spin_lock(&c->erase_completion_lock);
jffs2_garbage_collect_trigger(c);
spin_unlock(&c->erase_completion_lock);
mutex_unlock(&c->alloc_sem);
}
40005a98: 00008067 ret
4000a4cc <jffs2_compress>:
uint16_t jffs2_compress(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
unsigned char *data_in, unsigned char **cpage_out,
uint32_t *datalen, uint32_t *cdatalen)
{
struct super_block *sb = OFNI_BS_2SFFJ(c);
rtems_jffs2_compressor_control *cc = sb->s_compressor_control;
4000a4cc: 0e852503 lw a0,232(a0)
{
4000a4d0: fe010113 addi sp,sp,-32
4000a4d4: 00812c23 sw s0,24(sp)
4000a4d8: 00912a23 sw s1,20(sp)
4000a4dc: 01212823 sw s2,16(sp)
4000a4e0: 01312623 sw s3,12(sp)
4000a4e4: 00112e23 sw ra,28(sp)
4000a4e8: 00060413 mv s0,a2
4000a4ec: 00068993 mv s3,a3
4000a4f0: 00070493 mv s1,a4
4000a4f4: 00078913 mv s2,a5
int ret;
if (cc != NULL) {
4000a4f8: 02050263 beqz a0,4000a51c <jffs2_compress+0x50> <== NEVER TAKEN
*cpage_out = &cc->buffer[0];
ret = (*cc->compress)(cc, data_in, *cpage_out, datalen, cdatalen);
4000a4fc: 00052783 lw a5,0(a0)
*cpage_out = &cc->buffer[0];
4000a500: 00c50613 addi a2,a0,12
4000a504: 00c6a023 sw a2,0(a3)
ret = (*cc->compress)(cc, data_in, *cpage_out, datalen, cdatalen);
4000a508: 00090713 mv a4,s2
4000a50c: 00048693 mv a3,s1
4000a510: 00040593 mv a1,s0
4000a514: 000780e7 jalr a5
} else {
ret = JFFS2_COMPR_NONE;
}
if (ret == JFFS2_COMPR_NONE) {
4000a518: 00051a63 bnez a0,4000a52c <jffs2_compress+0x60>
*cpage_out = data_in;
*datalen = *cdatalen;
4000a51c: 00092783 lw a5,0(s2)
*cpage_out = data_in;
4000a520: 0089a023 sw s0,0(s3)
*datalen = *cdatalen;
4000a524: 00000513 li a0,0
4000a528: 00f4a023 sw a5,0(s1)
}
return ret;
}
4000a52c: 01c12083 lw ra,28(sp)
4000a530: 01812403 lw s0,24(sp)
4000a534: 01412483 lw s1,20(sp)
4000a538: 01012903 lw s2,16(sp)
4000a53c: 00c12983 lw s3,12(sp)
4000a540: 02010113 addi sp,sp,32
4000a544: 00008067 ret
4000a930 <jffs2_create>:
/***********************************************************************/
int jffs2_create(struct _inode *dir_i, const char *d_name, size_t d_namelen, int mode)
{
4000a930: fd010113 addi sp,sp,-48
4000a934: 02912223 sw s1,36(sp)
4000a938: 03212023 sw s2,32(sp)
4000a93c: 02112623 sw ra,44(sp)
4000a940: 02812423 sw s0,40(sp)
4000a944: 01312e23 sw s3,28(sp)
4000a948: 00050493 mv s1,a0
4000a94c: 00068913 mv s2,a3
struct jffs2_sb_info *c;
struct _inode *inode;
int ret;
struct qstr qstr;
qstr.name = d_name;
4000a950: 00b12423 sw a1,8(sp)
qstr.len = d_namelen;
4000a954: 00c12623 sw a2,12(sp)
ri = jffs2_alloc_raw_inode();
4000a958: f3df90ef jal ra,40004894 <jffs2_alloc_raw_inode>
if (!ri)
4000a95c: 10050863 beqz a0,4000aa6c <jffs2_create+0x13c> <== NEVER TAKEN
c = JFFS2_SB_INFO(dir_i->i_sb);
D1(printk(KERN_DEBUG "jffs2_create()\n"));
inode = jffs2_new_inode(dir_i, mode, ri);
4000a960: 00050613 mv a2,a0
4000a964: 00090593 mv a1,s2
4000a968: 00050413 mv s0,a0
4000a96c: 00048513 mv a0,s1
c = JFFS2_SB_INFO(dir_i->i_sb);
4000a970: 0404a983 lw s3,64(s1)
inode = jffs2_new_inode(dir_i, mode, ri);
4000a974: d18f80ef jal ra,40002e8c <jffs2_new_inode>
if (IS_ERR(inode)) {
4000a978: c1800793 li a5,-1000
inode = jffs2_new_inode(dir_i, mode, ri);
4000a97c: 00050913 mv s2,a0
if (IS_ERR(inode)) {
4000a980: 0ca7e063 bltu a5,a0,4000aa40 <jffs2_create+0x110>
}
f = JFFS2_INODE_INFO(inode);
dir_f = JFFS2_INODE_INFO(dir_i);
ret = jffs2_do_create(c, dir_f, f, ri, &qstr);
4000a984: 04850613 addi a2,a0,72
4000a988: 00810713 addi a4,sp,8
4000a98c: 00098513 mv a0,s3
4000a990: 00040693 mv a3,s0
4000a994: 04848593 addi a1,s1,72
4000a998: d29fe0ef jal ra,400096c0 <jffs2_do_create>
4000a99c: 00050993 mv s3,a0
if (ret) {
4000a9a0: 06051663 bnez a0,4000aa0c <jffs2_create+0xdc> <== NEVER TAKEN
jffs2_iput(inode);
jffs2_free_raw_inode(ri);
return ret;
}
dir_i->i_mtime = dir_i->i_ctime = ITIME(je32_to_cpu(ri->ctime));
4000a9a4: 02944683 lbu a3,41(s0)
4000a9a8: 02844603 lbu a2,40(s0)
4000a9ac: 02a44703 lbu a4,42(s0)
4000a9b0: 02b44783 lbu a5,43(s0)
4000a9b4: 00869693 slli a3,a3,0x8
4000a9b8: 00c6e6b3 or a3,a3,a2
4000a9bc: 01071713 slli a4,a4,0x10
4000a9c0: 00d76733 or a4,a4,a3
4000a9c4: 01879793 slli a5,a5,0x18
4000a9c8: 00e7e7b3 or a5,a5,a4
jffs2_free_raw_inode(ri);
4000a9cc: 00040513 mv a0,s0
dir_i->i_mtime = dir_i->i_ctime = ITIME(je32_to_cpu(ri->ctime));
4000a9d0: 02f4a423 sw a5,40(s1)
4000a9d4: 0204a623 sw zero,44(s1)
4000a9d8: 02f4a023 sw a5,32(s1)
4000a9dc: 0204a223 sw zero,36(s1)
jffs2_free_raw_inode(ri);
4000a9e0: ebdf90ef jal ra,4000489c <jffs2_free_raw_inode>
D1(printk(KERN_DEBUG "jffs2_create: Created ino #%lu with mode %o, nlink %d(%d)\n",
inode->i_ino, inode->i_mode, inode->i_nlink, f->inocache->pino_nlink));
jffs2_iput(inode);
4000a9e4: 00090513 mv a0,s2
4000a9e8: d59f70ef jal ra,40002740 <jffs2_iput>
return 0;
}
4000a9ec: 02c12083 lw ra,44(sp)
4000a9f0: 02812403 lw s0,40(sp)
4000a9f4: 02412483 lw s1,36(sp)
4000a9f8: 02012903 lw s2,32(sp)
4000a9fc: 00098513 mv a0,s3
4000aa00: 01c12983 lw s3,28(sp)
4000aa04: 03010113 addi sp,sp,48
4000aa08: 00008067 ret
jffs2_iput(inode);
4000aa0c: 00090513 mv a0,s2 <== NOT EXECUTED
inode->i_nlink = 0;
4000aa10: 00091623 sh zero,12(s2) <== NOT EXECUTED
jffs2_iput(inode);
4000aa14: d2df70ef jal ra,40002740 <jffs2_iput> <== NOT EXECUTED
jffs2_free_raw_inode(ri);
4000aa18: 00040513 mv a0,s0 <== NOT EXECUTED
4000aa1c: e81f90ef jal ra,4000489c <jffs2_free_raw_inode> <== NOT EXECUTED
}
4000aa20: 02c12083 lw ra,44(sp) <== NOT EXECUTED
4000aa24: 02812403 lw s0,40(sp) <== NOT EXECUTED
4000aa28: 02412483 lw s1,36(sp) <== NOT EXECUTED
4000aa2c: 02012903 lw s2,32(sp) <== NOT EXECUTED
4000aa30: 00098513 mv a0,s3 <== NOT EXECUTED
4000aa34: 01c12983 lw s3,28(sp) <== NOT EXECUTED
4000aa38: 03010113 addi sp,sp,48 <== NOT EXECUTED
4000aa3c: 00008067 ret <== NOT EXECUTED
jffs2_free_raw_inode(ri);
4000aa40: 00040513 mv a0,s0 <== NOT EXECUTED
4000aa44: e59f90ef jal ra,4000489c <jffs2_free_raw_inode> <== NOT EXECUTED
}
4000aa48: 02c12083 lw ra,44(sp) <== NOT EXECUTED
4000aa4c: 02812403 lw s0,40(sp) <== NOT EXECUTED
return PTR_ERR(inode);
4000aa50: 00090993 mv s3,s2 <== NOT EXECUTED
}
4000aa54: 02412483 lw s1,36(sp) <== NOT EXECUTED
4000aa58: 02012903 lw s2,32(sp) <== NOT EXECUTED
4000aa5c: 00098513 mv a0,s3 <== NOT EXECUTED
4000aa60: 01c12983 lw s3,28(sp) <== NOT EXECUTED
4000aa64: 03010113 addi sp,sp,48 <== NOT EXECUTED
4000aa68: 00008067 ret <== NOT EXECUTED
return -ENOMEM;
4000aa6c: ff400993 li s3,-12 <== NOT EXECUTED
4000aa70: f7dff06f j 4000a9ec <jffs2_create+0xbc> <== NOT EXECUTED
4000a548 <jffs2_decompress>:
int jffs2_decompress(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
uint16_t comprtype, unsigned char *cdata_in,
unsigned char *data_out, uint32_t cdatalen, uint32_t datalen)
{
struct super_block *sb = OFNI_BS_2SFFJ(c);
4000a548: 0ff67e13 andi t3,a2,255
rtems_jffs2_compressor_control *cc = sb->s_compressor_control;
/* Older code had a bug where it would write non-zero 'usercompr'
fields. Deal with it. */
if ((comprtype & 0xff) <= JFFS2_COMPR_ZLIB)
4000a54c: 00600e93 li t4,6
{
4000a550: 00060893 mv a7,a2
4000a554: 00050313 mv t1,a0
4000a558: 00068593 mv a1,a3
4000a55c: 00070513 mv a0,a4
4000a560: 00080613 mv a2,a6
4000a564: 00078713 mv a4,a5
if ((comprtype & 0xff) <= JFFS2_COMPR_ZLIB)
4000a568: 03cef463 bgeu t4,t3,4000a590 <jffs2_decompress+0x48>
rtems_jffs2_compressor_control *cc = sb->s_compressor_control;
4000a56c: 0e832803 lw a6,232(t1) <== NOT EXECUTED
break;
case JFFS2_COMPR_ZERO:
memset(data_out, 0, datalen);
break;
default:
if (cc != NULL) {
4000a570: 06080063 beqz a6,4000a5d0 <jffs2_decompress+0x88> <== NOT EXECUTED
return (*cc->decompress)(cc, comprtype, cdata_in, data_out, cdatalen, datalen);
4000a574: 00482303 lw t1,4(a6) <== NOT EXECUTED
4000a578: 00060793 mv a5,a2 <== NOT EXECUTED
4000a57c: 00050693 mv a3,a0 <== NOT EXECUTED
4000a580: 00058613 mv a2,a1 <== NOT EXECUTED
4000a584: 00080513 mv a0,a6 <== NOT EXECUTED
4000a588: 00088593 mv a1,a7 <== NOT EXECUTED
4000a58c: 00030067 jr t1 <== NOT EXECUTED
{
4000a590: ff010113 addi sp,sp,-16
4000a594: 00112623 sw ra,12(sp)
switch (comprtype & 0xff) {
4000a598: 000e1c63 bnez t3,4000a5b0 <jffs2_decompress+0x68> <== ALWAYS TAKEN
memcpy(data_out, cdata_in, datalen);
4000a59c: 255110ef jal ra,4001bff0 <memcpy> <== NOT EXECUTED
} else {
return -EIO;
}
}
return 0;
4000a5a0: 00000513 li a0,0 <== NOT EXECUTED
}
4000a5a4: 00c12083 lw ra,12(sp) <== NOT EXECUTED
4000a5a8: 01010113 addi sp,sp,16 <== NOT EXECUTED
4000a5ac: 00008067 ret <== NOT EXECUTED
switch (comprtype & 0xff) {
4000a5b0: 00100793 li a5,1
4000a5b4: 02fe1263 bne t3,a5,4000a5d8 <jffs2_decompress+0x90>
memset(data_out, 0, datalen);
4000a5b8: 00000593 li a1,0 <== NOT EXECUTED
4000a5bc: 35d110ef jal ra,4001c118 <memset> <== NOT EXECUTED
}
4000a5c0: 00c12083 lw ra,12(sp) <== NOT EXECUTED
return 0;
4000a5c4: 00000513 li a0,0 <== NOT EXECUTED
}
4000a5c8: 01010113 addi sp,sp,16 <== NOT EXECUTED
4000a5cc: 00008067 ret <== NOT EXECUTED
return -EIO;
4000a5d0: ffb00513 li a0,-5 <== NOT EXECUTED
}
4000a5d4: 00008067 ret <== NOT EXECUTED
rtems_jffs2_compressor_control *cc = sb->s_compressor_control;
4000a5d8: 0e832803 lw a6,232(t1)
if (cc != NULL) {
4000a5dc: 02080463 beqz a6,4000a604 <jffs2_decompress+0xbc> <== NEVER TAKEN
}
4000a5e0: 00c12083 lw ra,12(sp)
return (*cc->decompress)(cc, comprtype, cdata_in, data_out, cdatalen, datalen);
4000a5e4: 00482303 lw t1,4(a6)
4000a5e8: 00060793 mv a5,a2
4000a5ec: 00050693 mv a3,a0
4000a5f0: 00058613 mv a2,a1
4000a5f4: 000e0593 mv a1,t3
4000a5f8: 00080513 mv a0,a6
}
4000a5fc: 01010113 addi sp,sp,16
return (*cc->decompress)(cc, comprtype, cdata_in, data_out, cdatalen, datalen);
4000a600: 00030067 jr t1
return -EIO;
4000a604: ffb00513 li a0,-5 <== NOT EXECUTED
4000a608: f9dff06f j 4000a5a4 <jffs2_decompress+0x5c> <== NOT EXECUTED
400052d8 <jffs2_del_ino_cache>:
prev = &c->inocache_list[old->ino % c->inocache_hashsize];
400052d8: 00c5a603 lw a2,12(a1)
400052dc: 0c052783 lw a5,192(a0)
400052e0: 0c452683 lw a3,196(a0)
400052e4: 02f677b3 remu a5,a2,a5
400052e8: 00279793 slli a5,a5,0x2
400052ec: 00f686b3 add a3,a3,a5
while ((*prev) && (*prev)->ino < old->ino) {
400052f0: 0006a783 lw a5,0(a3)
400052f4: 00079a63 bnez a5,40005308 <jffs2_del_ino_cache+0x30>
400052f8: 0240006f j 4000531c <jffs2_del_ino_cache+0x44>
prev = &(*prev)->next;
400052fc: 01078693 addi a3,a5,16 <== NOT EXECUTED
while ((*prev) && (*prev)->ino < old->ino) {
40005300: 0107a783 lw a5,16(a5) <== NOT EXECUTED
40005304: 00078c63 beqz a5,4000531c <jffs2_del_ino_cache+0x44> <== NOT EXECUTED
40005308: 00c7a703 lw a4,12(a5)
4000530c: fec768e3 bltu a4,a2,400052fc <jffs2_del_ino_cache+0x24>
if ((*prev) == old) {
40005310: 00f59663 bne a1,a5,4000531c <jffs2_del_ino_cache+0x44>
*prev = old->next;
40005314: 0105a783 lw a5,16(a1)
40005318: 00f6a023 sw a5,0(a3)
if (old->state != INO_STATE_READING && old->state != INO_STATE_CLEARING)
4000531c: 00a5d783 lhu a5,10(a1)
40005320: 00100713 li a4,1
40005324: ffb78793 addi a5,a5,-5
40005328: 01079793 slli a5,a5,0x10
4000532c: 0107d793 srli a5,a5,0x10
40005330: 00f76463 bltu a4,a5,40005338 <jffs2_del_ino_cache+0x60>
}
40005334: 00008067 ret
jffs2_free_inode_cache(old);
40005338: 00058513 mv a0,a1
4000533c: e6cff06f j 400049a8 <jffs2_free_inode_cache>
40008650 <jffs2_do_clear_inode>:
kfree (f);
return ret;
}
void jffs2_do_clear_inode(struct jffs2_sb_info *c, struct jffs2_inode_info *f)
{
40008650: ff010113 addi sp,sp,-16
40008654: 00912223 sw s1,4(sp)
40008658: 00058493 mv s1,a1
struct jffs2_full_dirent *fd, *fds;
int deleted;
jffs2_xattr_delete_inode(c, f->inocache);
mutex_lock(&f->sem);
deleted = f->inocache && !f->inocache->pino_nlink;
4000865c: 0145a583 lw a1,20(a1)
{
40008660: 00812423 sw s0,8(sp)
40008664: 01212023 sw s2,0(sp)
40008668: 00112623 sw ra,12(sp)
4000866c: 00050913 mv s2,a0
if (deleted)
jffs2_mark_node_obsolete(c, f->metadata->raw);
jffs2_free_full_dnode(f->metadata);
}
jffs2_kill_fragtree(&f->fragtree, deleted?c:NULL);
40008670: 00448413 addi s0,s1,4
deleted = f->inocache && !f->inocache->pino_nlink;
40008674: 04058263 beqz a1,400086b8 <jffs2_do_clear_inode+0x68> <== NEVER TAKEN
40008678: 0145a783 lw a5,20(a1)
if (f->inocache && f->inocache->state != INO_STATE_CHECKING)
4000867c: 00a5d703 lhu a4,10(a1)
deleted = f->inocache && !f->inocache->pino_nlink;
40008680: 02079863 bnez a5,400086b0 <jffs2_do_clear_inode+0x60>
if (f->inocache && f->inocache->state != INO_STATE_CHECKING)
40008684: 00100793 li a5,1
40008688: 0af71a63 bne a4,a5,4000873c <jffs2_do_clear_inode+0xec>
if (f->metadata) {
4000868c: 0084a783 lw a5,8(s1)
40008690: 00078c63 beqz a5,400086a8 <jffs2_do_clear_inode+0x58>
jffs2_mark_node_obsolete(c, f->metadata->raw);
40008694: 0007a583 lw a1,0(a5)
40008698: 00090513 mv a0,s2
4000869c: c00fd0ef jal ra,40005a9c <jffs2_mark_node_obsolete>
jffs2_free_full_dnode(f->metadata);
400086a0: 0084a503 lw a0,8(s1)
400086a4: 9e0fc0ef jal ra,40004884 <jffs2_free_full_dnode>
jffs2_kill_fragtree(&f->fragtree, deleted?c:NULL);
400086a8: 00090593 mv a1,s2
400086ac: 01c0006f j 400086c8 <jffs2_do_clear_inode+0x78>
if (f->inocache && f->inocache->state != INO_STATE_CHECKING)
400086b0: 00100793 li a5,1
400086b4: 08f71a63 bne a4,a5,40008748 <jffs2_do_clear_inode+0xf8>
if (f->metadata) {
400086b8: 0084a503 lw a0,8(s1) <== NOT EXECUTED
400086bc: 00050463 beqz a0,400086c4 <jffs2_do_clear_inode+0x74> <== NOT EXECUTED
jffs2_free_full_dnode(f->metadata);
400086c0: 9c4fc0ef jal ra,40004884 <jffs2_free_full_dnode>
jffs2_kill_fragtree(&f->fragtree, deleted?c:NULL);
400086c4: 00000593 li a1,0
400086c8: 00040513 mv a0,s0
400086cc: e09fc0ef jal ra,400054d4 <jffs2_kill_fragtree>
if (f->target) {
400086d0: 0104a503 lw a0,16(s1)
400086d4: 00050663 beqz a0,400086e0 <jffs2_do_clear_inode+0x90>
kfree(f->target);
400086d8: 7fd040ef jal ra,4000d6d4 <free>
f->target = NULL;
400086dc: 0004a823 sw zero,16(s1)
}
fds = f->dents;
400086e0: 00c4a403 lw s0,12(s1)
while(fds) {
400086e4: 00040a63 beqz s0,400086f8 <jffs2_do_clear_inode+0xa8>
fd = fds;
fds = fd->next;
400086e8: 00040513 mv a0,s0
400086ec: 00442403 lw s0,4(s0)
jffs2_free_full_dirent(fd);
400086f0: 988fc0ef jal ra,40004878 <jffs2_free_full_dirent>
while(fds) {
400086f4: fe041ae3 bnez s0,400086e8 <jffs2_do_clear_inode+0x98>
}
if (f->inocache && f->inocache->state != INO_STATE_CHECKING) {
400086f8: 0144a583 lw a1,20(s1)
400086fc: 02058463 beqz a1,40008724 <jffs2_do_clear_inode+0xd4> <== NEVER TAKEN
40008700: 00a5d703 lhu a4,10(a1)
40008704: 00100793 li a5,1
40008708: 00f70e63 beq a4,a5,40008724 <jffs2_do_clear_inode+0xd4>
jffs2_set_inocache_state(c, f->inocache, INO_STATE_CHECKEDABSENT);
4000870c: 00300613 li a2,3
40008710: 00090513 mv a0,s2
40008714: b1dfc0ef jal ra,40005230 <jffs2_set_inocache_state>
if (f->inocache->nodes == (void *)f->inocache)
40008718: 0144a583 lw a1,20(s1)
4000871c: 0045a783 lw a5,4(a1)
40008720: 02f58e63 beq a1,a5,4000875c <jffs2_do_clear_inode+0x10c>
jffs2_del_ino_cache(c, f->inocache);
}
mutex_unlock(&f->sem);
}
40008724: 00c12083 lw ra,12(sp)
40008728: 00812403 lw s0,8(sp)
4000872c: 00412483 lw s1,4(sp)
40008730: 00012903 lw s2,0(sp)
40008734: 01010113 addi sp,sp,16
40008738: 00008067 ret
jffs2_set_inocache_state(c, f->inocache, INO_STATE_CLEARING);
4000873c: 00600613 li a2,6
40008740: af1fc0ef jal ra,40005230 <jffs2_set_inocache_state>
40008744: f49ff06f j 4000868c <jffs2_do_clear_inode+0x3c>
40008748: 00600613 li a2,6
4000874c: ae5fc0ef jal ra,40005230 <jffs2_set_inocache_state>
if (f->metadata) {
40008750: 0084a503 lw a0,8(s1)
40008754: f60508e3 beqz a0,400086c4 <jffs2_do_clear_inode+0x74>
40008758: f69ff06f j 400086c0 <jffs2_do_clear_inode+0x70>
}
4000875c: 00812403 lw s0,8(sp)
40008760: 00c12083 lw ra,12(sp)
40008764: 00412483 lw s1,4(sp)
jffs2_del_ino_cache(c, f->inocache);
40008768: 00090513 mv a0,s2
}
4000876c: 00012903 lw s2,0(sp)
40008770: 01010113 addi sp,sp,16
jffs2_del_ino_cache(c, f->inocache);
40008774: b65fc06f j 400052d8 <jffs2_del_ino_cache>
40008778 <jffs2_do_crccheck_inode>:
{
40008778: fa010113 addi sp,sp,-96 <== NOT EXECUTED
4000877c: 04912a23 sw s1,84(sp) <== NOT EXECUTED
40008780: 05212823 sw s2,80(sp) <== NOT EXECUTED
40008784: 00050493 mv s1,a0 <== NOT EXECUTED
40008788: 00058913 mv s2,a1 <== NOT EXECUTED
struct jffs2_inode_info *f = kzalloc(sizeof(*f), GFP_KERNEL);
4000878c: 00100513 li a0,1 <== NOT EXECUTED
40008790: 01c00593 li a1,28 <== NOT EXECUTED
{
40008794: 04112e23 sw ra,92(sp) <== NOT EXECUTED
40008798: 04812c23 sw s0,88(sp) <== NOT EXECUTED
struct jffs2_inode_info *f = kzalloc(sizeof(*f), GFP_KERNEL);
4000879c: 3c9040ef jal ra,4000d364 <calloc> <== NOT EXECUTED
if (!f)
400087a0: 04050a63 beqz a0,400087f4 <jffs2_do_crccheck_inode+0x7c> <== NOT EXECUTED
f->inocache = ic;
400087a4: 00050413 mv s0,a0 <== NOT EXECUTED
ret = jffs2_do_read_inode_internal(c, f, &n);
400087a8: 00050593 mv a1,a0 <== NOT EXECUTED
400087ac: 00c10613 addi a2,sp,12 <== NOT EXECUTED
400087b0: 00048513 mv a0,s1 <== NOT EXECUTED
f->inocache = ic;
400087b4: 01242a23 sw s2,20(s0) <== NOT EXECUTED
ret = jffs2_do_read_inode_internal(c, f, &n);
400087b8: e68fe0ef jal ra,40006e20 <jffs2_do_read_inode_internal> <== NOT EXECUTED
400087bc: 00050793 mv a5,a0 <== NOT EXECUTED
jffs2_do_clear_inode(c, f);
400087c0: 00040593 mv a1,s0 <== NOT EXECUTED
400087c4: 00048513 mv a0,s1 <== NOT EXECUTED
ret = jffs2_do_read_inode_internal(c, f, &n);
400087c8: 00078493 mv s1,a5 <== NOT EXECUTED
jffs2_do_clear_inode(c, f);
400087cc: e85ff0ef jal ra,40008650 <jffs2_do_clear_inode> <== NOT EXECUTED
kfree (f);
400087d0: 00040513 mv a0,s0 <== NOT EXECUTED
400087d4: 701040ef jal ra,4000d6d4 <free> <== NOT EXECUTED
}
400087d8: 05c12083 lw ra,92(sp) <== NOT EXECUTED
400087dc: 05812403 lw s0,88(sp) <== NOT EXECUTED
400087e0: 05012903 lw s2,80(sp) <== NOT EXECUTED
400087e4: 00048513 mv a0,s1 <== NOT EXECUTED
400087e8: 05412483 lw s1,84(sp) <== NOT EXECUTED
400087ec: 06010113 addi sp,sp,96 <== NOT EXECUTED
400087f0: 00008067 ret <== NOT EXECUTED
return -ENOMEM;
400087f4: ff400493 li s1,-12 <== NOT EXECUTED
400087f8: fe1ff06f j 400087d8 <jffs2_do_crccheck_inode+0x60> <== NOT EXECUTED
400096c0 <jffs2_do_create>:
int jffs2_do_create(struct jffs2_sb_info *c, struct jffs2_inode_info *dir_f,
struct jffs2_inode_info *f, struct jffs2_raw_inode *ri,
const struct qstr *qstr)
{
400096c0: fd010113 addi sp,sp,-48
400096c4: 02812423 sw s0,40(sp)
400096c8: 03212023 sw s2,32(sp)
400096cc: 01412c23 sw s4,24(sp)
400096d0: 01512a23 sw s5,20(sp)
400096d4: 00058a13 mv s4,a1
400096d8: 00060913 mv s2,a2
400096dc: 00068413 mv s0,a3
400096e0: 00070a93 mv s5,a4
int ret;
/* Try to reserve enough space for both node and dirent.
* Just the node will do for now, though
*/
ret = jffs2_reserve_space(c, sizeof(*ri), &alloclen, ALLOC_NORMAL,
400096e4: 00000693 li a3,0
400096e8: 01200713 li a4,18
400096ec: 00c10613 addi a2,sp,12
400096f0: 04400593 li a1,68
{
400096f4: 02912223 sw s1,36(sp)
400096f8: 01312e23 sw s3,28(sp)
400096fc: 02112623 sw ra,44(sp)
40009700: 01612823 sw s6,16(sp)
40009704: 00050993 mv s3,a0
ret = jffs2_reserve_space(c, sizeof(*ri), &alloclen, ALLOC_NORMAL,
40009708: b99fc0ef jal ra,400062a0 <jffs2_reserve_space>
4000970c: 00050493 mv s1,a0
JFFS2_SUMMARY_INODE_SIZE);
jffs2_dbg(1, "%s(): reserved 0x%x bytes\n", __func__, alloclen);
if (ret)
40009710: 02050863 beqz a0,40009740 <jffs2_do_create+0x80> <== ALWAYS TAKEN
jffs2_complete_reservation(c);
mutex_unlock(&dir_f->sem);
return 0;
}
40009714: 02c12083 lw ra,44(sp)
40009718: 02812403 lw s0,40(sp)
4000971c: 02012903 lw s2,32(sp)
40009720: 01c12983 lw s3,28(sp)
40009724: 01812a03 lw s4,24(sp)
40009728: 01412a83 lw s5,20(sp)
4000972c: 01012b03 lw s6,16(sp)
40009730: 00048513 mv a0,s1
40009734: 02412483 lw s1,36(sp)
40009738: 03010113 addi sp,sp,48
4000973c: 00008067 ret
ri->node_crc = cpu_to_je32(crc32(0, ri, sizeof(*ri)-8));
40009740: 03c00613 li a2,60
40009744: 00040593 mv a1,s0
ri->data_crc = cpu_to_je32(0);
40009748: 02040e23 sb zero,60(s0)
4000974c: 02040ea3 sb zero,61(s0)
40009750: 02040f23 sb zero,62(s0)
40009754: 02040fa3 sb zero,63(s0)
ri->node_crc = cpu_to_je32(crc32(0, ri, sizeof(*ri)-8));
40009758: 539000ef jal ra,4000a490 <cyg_crc32_accumulate>
4000975c: 00855693 srli a3,a0,0x8
40009760: 01055713 srli a4,a0,0x10
40009764: 01855793 srli a5,a0,0x18
40009768: 04a40023 sb a0,64(s0)
4000976c: 04d400a3 sb a3,65(s0)
40009770: 04e40123 sb a4,66(s0)
40009774: 04f401a3 sb a5,67(s0)
fn = jffs2_write_dnode(c, f, ri, NULL, 0, ALLOC_NORMAL);
40009778: 00000713 li a4,0
4000977c: 00000793 li a5,0
40009780: 00000693 li a3,0
40009784: 00040613 mv a2,s0
40009788: 00090593 mv a1,s2
4000978c: 00098513 mv a0,s3
40009790: a08ff0ef jal ra,40008998 <jffs2_write_dnode>
40009794: 00050493 mv s1,a0
if (IS_ERR(fn)) {
40009798: c1800b13 li s6,-1000
jffs2_complete_reservation(c);
4000979c: 00098513 mv a0,s3
if (IS_ERR(fn)) {
400097a0: 1e9b6063 bltu s6,s1,40009980 <jffs2_do_create+0x2c0>
f->metadata = fn;
400097a4: 00992423 sw s1,8(s2)
jffs2_complete_reservation(c);
400097a8: ae0fc0ef jal ra,40005a88 <jffs2_complete_reservation>
ret = jffs2_reserve_space(c, sizeof(*rd)+qstr->len, &alloclen,
400097ac: 004aa583 lw a1,4(s5)
400097b0: 00000693 li a3,0
400097b4: 00c10613 addi a2,sp,12
400097b8: 01858713 addi a4,a1,24
400097bc: 00098513 mv a0,s3
400097c0: 02858593 addi a1,a1,40
400097c4: addfc0ef jal ra,400062a0 <jffs2_reserve_space>
400097c8: 00050493 mv s1,a0
if (ret) {
400097cc: f40514e3 bnez a0,40009714 <jffs2_do_create+0x54> <== NEVER TAKEN
rd = jffs2_alloc_raw_dirent();
400097d0: 8b8fb0ef jal ra,40004888 <jffs2_alloc_raw_dirent>
400097d4: 00050913 mv s2,a0
if (!rd) {
400097d8: 1c050063 beqz a0,40009998 <jffs2_do_create+0x2d8> <== NEVER TAKEN
rd->totlen = cpu_to_je32(sizeof(*rd) + qstr->len);
400097dc: 004aa783 lw a5,4(s5)
rd->magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
400097e0: f8500813 li a6,-123
400097e4: 01090023 sb a6,0(s2)
400097e8: 01900813 li a6,25
rd->totlen = cpu_to_je32(sizeof(*rd) + qstr->len);
400097ec: 02878793 addi a5,a5,40
rd->magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
400097f0: 010900a3 sb a6,1(s2)
rd->nodetype = cpu_to_je16(JFFS2_NODETYPE_DIRENT);
400097f4: 00100813 li a6,1
rd->totlen = cpu_to_je32(sizeof(*rd) + qstr->len);
400097f8: 0087d513 srli a0,a5,0x8
400097fc: 0107d693 srli a3,a5,0x10
40009800: 0187d713 srli a4,a5,0x18
rd->nodetype = cpu_to_je16(JFFS2_NODETYPE_DIRENT);
40009804: 01090123 sb a6,2(s2)
40009808: fe000813 li a6,-32
rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4));
4000980c: 00800613 li a2,8
40009810: 00090593 mv a1,s2
rd->nodetype = cpu_to_je16(JFFS2_NODETYPE_DIRENT);
40009814: 010901a3 sb a6,3(s2)
rd->totlen = cpu_to_je32(sizeof(*rd) + qstr->len);
40009818: 00f90223 sb a5,4(s2)
4000981c: 00a902a3 sb a0,5(s2)
40009820: 00d90323 sb a3,6(s2)
40009824: 00e903a3 sb a4,7(s2)
rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4));
40009828: 00000513 li a0,0
4000982c: 465000ef jal ra,4000a490 <cyg_crc32_accumulate>
rd->pino = cpu_to_je32(dir_f->inocache->ino);
40009830: 014a2703 lw a4,20(s4)
rd->version = cpu_to_je32(++dir_f->highest_version);
40009834: 000a2783 lw a5,0(s4)
rd->ino = ri->ino;
40009838: 00c44e03 lbu t3,12(s0)
rd->pino = cpu_to_je32(dir_f->inocache->ino);
4000983c: 00c74e83 lbu t4,12(a4)
40009840: 00d74603 lbu a2,13(a4)
40009844: 00e74683 lbu a3,14(a4)
40009848: 00f74703 lbu a4,15(a4)
rd->ino = ri->ino;
4000984c: 00d44303 lbu t1,13(s0)
40009850: 00e44883 lbu a7,14(s0)
40009854: 00f44803 lbu a6,15(s0)
rd->mctime = ri->ctime;
40009858: 02844583 lbu a1,40(s0)
rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4));
4000985c: 00855293 srli t0,a0,0x8
40009860: 01055f93 srli t6,a0,0x10
40009864: 01855f13 srli t5,a0,0x18
rd->version = cpu_to_je32(++dir_f->highest_version);
40009868: 00178793 addi a5,a5,1
rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4));
4000986c: 005904a3 sb t0,9(s2)
40009870: 01f90523 sb t6,10(s2)
40009874: 00a90423 sb a0,8(s2)
40009878: 01e905a3 sb t5,11(s2)
rd->pino = cpu_to_je32(dir_f->inocache->ino);
4000987c: 01d90623 sb t4,12(s2)
40009880: 00c906a3 sb a2,13(s2)
40009884: 00d90723 sb a3,14(s2)
rd->mctime = ri->ctime;
40009888: 02944603 lbu a2,41(s0)
rd->pino = cpu_to_je32(dir_f->inocache->ino);
4000988c: 00e907a3 sb a4,15(s2)
rd->version = cpu_to_je32(++dir_f->highest_version);
40009890: 00fa2023 sw a5,0(s4)
40009894: 0087df13 srli t5,a5,0x8
40009898: 0107de93 srli t4,a5,0x10
4000989c: 0187d513 srli a0,a5,0x18
rd->mctime = ri->ctime;
400098a0: 02a44683 lbu a3,42(s0)
400098a4: 02b44703 lbu a4,43(s0)
rd->version = cpu_to_je32(++dir_f->highest_version);
400098a8: 01e908a3 sb t5,17(s2)
400098ac: 01d90923 sb t4,18(s2)
rd->ino = ri->ino;
400098b0: 01c90a23 sb t3,20(s2)
400098b4: 00690aa3 sb t1,21(s2)
400098b8: 01190b23 sb a7,22(s2)
400098bc: 01090ba3 sb a6,23(s2)
rd->version = cpu_to_je32(++dir_f->highest_version);
400098c0: 00f90823 sb a5,16(s2)
400098c4: 00a909a3 sb a0,19(s2)
rd->mctime = ri->ctime;
400098c8: 00b90c23 sb a1,24(s2)
400098cc: 00c90ca3 sb a2,25(s2)
rd->nsize = qstr->len;
400098d0: 004aa783 lw a5,4(s5)
rd->node_crc = cpu_to_je32(crc32(0, rd, sizeof(*rd)-8));
400098d4: 02000613 li a2,32
400098d8: 00090593 mv a1,s2
rd->nsize = qstr->len;
400098dc: 00f90e23 sb a5,28(s2)
rd->type = DT_REG;
400098e0: 00800793 li a5,8
rd->mctime = ri->ctime;
400098e4: 00d90d23 sb a3,26(s2)
400098e8: 00e90da3 sb a4,27(s2)
rd->type = DT_REG;
400098ec: 00f90ea3 sb a5,29(s2)
rd->node_crc = cpu_to_je32(crc32(0, rd, sizeof(*rd)-8));
400098f0: 00000513 li a0,0
400098f4: 39d000ef jal ra,4000a490 <cyg_crc32_accumulate>
rd->name_crc = cpu_to_je32(crc32(0, qstr->name, qstr->len));
400098f8: 004aa603 lw a2,4(s5)
400098fc: 000aa583 lw a1,0(s5)
rd->node_crc = cpu_to_je32(crc32(0, rd, sizeof(*rd)-8));
40009900: 00855693 srli a3,a0,0x8
40009904: 01055713 srli a4,a0,0x10
40009908: 01855793 srli a5,a0,0x18
4000990c: 02a90023 sb a0,32(s2)
40009910: 02d900a3 sb a3,33(s2)
40009914: 02e90123 sb a4,34(s2)
40009918: 02f901a3 sb a5,35(s2)
rd->name_crc = cpu_to_je32(crc32(0, qstr->name, qstr->len));
4000991c: 00000513 li a0,0
40009920: 371000ef jal ra,4000a490 <cyg_crc32_accumulate>
fd = jffs2_write_dirent(c, dir_f, rd, qstr->name, qstr->len, ALLOC_NORMAL);
40009924: 004aa703 lw a4,4(s5)
40009928: 000aa683 lw a3,0(s5)
rd->name_crc = cpu_to_je32(crc32(0, qstr->name, qstr->len));
4000992c: 00855593 srli a1,a0,0x8
40009930: 01055613 srli a2,a0,0x10
40009934: 01855793 srli a5,a0,0x18
40009938: 02a90223 sb a0,36(s2)
4000993c: 02b902a3 sb a1,37(s2)
40009940: 02c90323 sb a2,38(s2)
40009944: 02f903a3 sb a5,39(s2)
fd = jffs2_write_dirent(c, dir_f, rd, qstr->name, qstr->len, ALLOC_NORMAL);
40009948: 00090613 mv a2,s2
4000994c: 00000793 li a5,0
40009950: 000a0593 mv a1,s4
40009954: 00098513 mv a0,s3
40009958: cb4ff0ef jal ra,40008e0c <jffs2_write_dirent>
4000995c: 00050413 mv s0,a0
jffs2_free_raw_dirent(rd);
40009960: 00090513 mv a0,s2
40009964: f2dfa0ef jal ra,40004890 <jffs2_free_raw_dirent>
if (IS_ERR(fd)) {
40009968: 028b6063 bltu s6,s0,40009988 <jffs2_do_create+0x2c8>
jffs2_add_fd_to_list(c, fd, &dir_f->dents);
4000996c: 00098513 mv a0,s3
40009970: 00ca0613 addi a2,s4,12
40009974: 00040593 mv a1,s0
40009978: 980fb0ef jal ra,40004af8 <jffs2_add_fd_to_list>
jffs2_complete_reservation(c);
4000997c: 00098513 mv a0,s3
40009980: 908fc0ef jal ra,40005a88 <jffs2_complete_reservation>
return 0;
40009984: d91ff06f j 40009714 <jffs2_do_create+0x54>
jffs2_complete_reservation(c);
40009988: 00098513 mv a0,s3 <== NOT EXECUTED
4000998c: 8fcfc0ef jal ra,40005a88 <jffs2_complete_reservation> <== NOT EXECUTED
return PTR_ERR(fd);
40009990: 00040493 mv s1,s0 <== NOT EXECUTED
40009994: d81ff06f j 40009714 <jffs2_do_create+0x54> <== NOT EXECUTED
jffs2_complete_reservation(c);
40009998: 00098513 mv a0,s3 <== NOT EXECUTED
4000999c: 8ecfc0ef jal ra,40005a88 <jffs2_complete_reservation> <== NOT EXECUTED
return -ENOMEM;
400099a0: ff400493 li s1,-12 <== NOT EXECUTED
400099a4: d71ff06f j 40009714 <jffs2_do_create+0x54> <== NOT EXECUTED
40009b1c <jffs2_do_link>:
int jffs2_do_link (struct jffs2_sb_info *c, struct jffs2_inode_info *dir_f, uint32_t ino, uint8_t type, const char *name, int namelen, uint32_t time)
{
40009b1c: fc010113 addi sp,sp,-64
40009b20: 02912a23 sw s1,52(sp)
40009b24: 03212823 sw s2,48(sp)
40009b28: 03312623 sw s3,44(sp)
40009b2c: 03412423 sw s4,40(sp)
40009b30: 03512223 sw s5,36(sp)
40009b34: 01712e23 sw s7,28(sp)
40009b38: 01812c23 sw s8,24(sp)
40009b3c: 02112e23 sw ra,60(sp)
40009b40: 02812c23 sw s0,56(sp)
40009b44: 03612023 sw s6,32(sp)
40009b48: 01912a23 sw s9,20(sp)
40009b4c: 00050993 mv s3,a0
40009b50: 00058913 mv s2,a1
40009b54: 00060a93 mv s5,a2
40009b58: 00068c13 mv s8,a3
40009b5c: 00070b93 mv s7,a4
40009b60: 00078493 mv s1,a5
40009b64: 00080a13 mv s4,a6
struct jffs2_raw_dirent *rd;
struct jffs2_full_dirent *fd;
uint32_t alloclen;
int ret;
rd = jffs2_alloc_raw_dirent();
40009b68: d21fa0ef jal ra,40004888 <jffs2_alloc_raw_dirent>
if (!rd)
40009b6c: 20050a63 beqz a0,40009d80 <jffs2_do_link+0x264> <== NEVER TAKEN
return -ENOMEM;
ret = jffs2_reserve_space(c, sizeof(*rd)+namelen, &alloclen,
40009b70: 02848b13 addi s6,s1,40
40009b74: 00050413 mv s0,a0
40009b78: 01848713 addi a4,s1,24
40009b7c: 00000693 li a3,0
40009b80: 00c10613 addi a2,sp,12
40009b84: 000b0593 mv a1,s6
40009b88: 00098513 mv a0,s3
40009b8c: f14fc0ef jal ra,400062a0 <jffs2_reserve_space>
40009b90: 00050c93 mv s9,a0
ALLOC_NORMAL, JFFS2_SUMMARY_DIRENT_SIZE(namelen));
if (ret) {
40009b94: 1e051063 bnez a0,40009d74 <jffs2_do_link+0x258> <== NEVER TAKEN
}
mutex_lock(&dir_f->sem);
/* Build a deletion node */
rd->magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
40009b98: f8500813 li a6,-123
40009b9c: 01040023 sb a6,0(s0)
40009ba0: 01900813 li a6,25
40009ba4: 010400a3 sb a6,1(s0)
rd->nodetype = cpu_to_je16(JFFS2_NODETYPE_DIRENT);
40009ba8: 00100813 li a6,1
rd->totlen = cpu_to_je32(sizeof(*rd) + namelen);
40009bac: 008b5693 srli a3,s6,0x8
40009bb0: 010b5713 srli a4,s6,0x10
40009bb4: 018b5793 srli a5,s6,0x18
rd->nodetype = cpu_to_je16(JFFS2_NODETYPE_DIRENT);
40009bb8: 01040123 sb a6,2(s0)
40009bbc: fe000813 li a6,-32
rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4));
40009bc0: 00040593 mv a1,s0
rd->nodetype = cpu_to_je16(JFFS2_NODETYPE_DIRENT);
40009bc4: 010401a3 sb a6,3(s0)
rd->totlen = cpu_to_je32(sizeof(*rd) + namelen);
40009bc8: 00d402a3 sb a3,5(s0)
40009bcc: 00e40323 sb a4,6(s0)
40009bd0: 00f403a3 sb a5,7(s0)
rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4));
40009bd4: 00800613 li a2,8
rd->totlen = cpu_to_je32(sizeof(*rd) + namelen);
40009bd8: 01640223 sb s6,4(s0)
rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4));
40009bdc: 0b5000ef jal ra,4000a490 <cyg_crc32_accumulate>
rd->pino = cpu_to_je32(dir_f->inocache->ino);
40009be0: 01492703 lw a4,20(s2)
rd->version = cpu_to_je32(++dir_f->highest_version);
40009be4: 00092783 lw a5,0(s2)
rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4));
40009be8: 00855313 srli t1,a0,0x8
rd->pino = cpu_to_je32(dir_f->inocache->ino);
40009bec: 00c74583 lbu a1,12(a4)
40009bf0: 00d74603 lbu a2,13(a4)
40009bf4: 00e74683 lbu a3,14(a4)
40009bf8: 00f74703 lbu a4,15(a4)
rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4));
40009bfc: 01055893 srli a7,a0,0x10
40009c00: 01855813 srli a6,a0,0x18
rd->version = cpu_to_je32(++dir_f->highest_version);
40009c04: 00178793 addi a5,a5,1
rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4));
40009c08: 00a40423 sb a0,8(s0)
40009c0c: 006404a3 sb t1,9(s0)
40009c10: 01140523 sb a7,10(s0)
40009c14: 010405a3 sb a6,11(s0)
rd->pino = cpu_to_je32(dir_f->inocache->ino);
40009c18: 00b40623 sb a1,12(s0)
40009c1c: 00c406a3 sb a2,13(s0)
40009c20: 00d40723 sb a3,14(s0)
40009c24: 00e407a3 sb a4,15(s0)
rd->version = cpu_to_je32(++dir_f->highest_version);
40009c28: 00f92023 sw a5,0(s2)
40009c2c: 0087df13 srli t5,a5,0x8
40009c30: 0107de93 srli t4,a5,0x10
40009c34: 0187de13 srli t3,a5,0x18
rd->ino = cpu_to_je32(ino);
40009c38: 008ad313 srli t1,s5,0x8
40009c3c: 010ad893 srli a7,s5,0x10
40009c40: 018ad813 srli a6,s5,0x18
rd->mctime = cpu_to_je32(time);
40009c44: 010a5693 srli a3,s4,0x10
40009c48: 018a5713 srli a4,s4,0x18
40009c4c: 008a5513 srli a0,s4,0x8
rd->version = cpu_to_je32(++dir_f->highest_version);
40009c50: 01e408a3 sb t5,17(s0)
40009c54: 01d40923 sb t4,18(s0)
40009c58: 01c409a3 sb t3,19(s0)
rd->ino = cpu_to_je32(ino);
40009c5c: 00640aa3 sb t1,21(s0)
40009c60: 01140b23 sb a7,22(s0)
40009c64: 01040ba3 sb a6,23(s0)
rd->nsize = namelen;
rd->type = type;
rd->node_crc = cpu_to_je32(crc32(0, rd, sizeof(*rd)-8));
40009c68: 00040593 mv a1,s0
rd->version = cpu_to_je32(++dir_f->highest_version);
40009c6c: 00f40823 sb a5,16(s0)
rd->mctime = cpu_to_je32(time);
40009c70: 00a40ca3 sb a0,25(s0)
40009c74: 00d40d23 sb a3,26(s0)
40009c78: 00e40da3 sb a4,27(s0)
rd->node_crc = cpu_to_je32(crc32(0, rd, sizeof(*rd)-8));
40009c7c: 02000613 li a2,32
rd->ino = cpu_to_je32(ino);
40009c80: 01540a23 sb s5,20(s0)
rd->mctime = cpu_to_je32(time);
40009c84: 01440c23 sb s4,24(s0)
rd->nsize = namelen;
40009c88: 00940e23 sb s1,28(s0)
rd->type = type;
40009c8c: 01840ea3 sb s8,29(s0)
rd->node_crc = cpu_to_je32(crc32(0, rd, sizeof(*rd)-8));
40009c90: 00000513 li a0,0
40009c94: 7fc000ef jal ra,4000a490 <cyg_crc32_accumulate>
40009c98: 00855693 srli a3,a0,0x8
40009c9c: 01055713 srli a4,a0,0x10
40009ca0: 01855793 srli a5,a0,0x18
40009ca4: 02a40023 sb a0,32(s0)
40009ca8: 02d400a3 sb a3,33(s0)
40009cac: 02e40123 sb a4,34(s0)
40009cb0: 02f401a3 sb a5,35(s0)
rd->name_crc = cpu_to_je32(crc32(0, name, namelen));
40009cb4: 00048613 mv a2,s1
40009cb8: 000b8593 mv a1,s7
40009cbc: 00000513 li a0,0
40009cc0: 7d0000ef jal ra,4000a490 <cyg_crc32_accumulate>
40009cc4: 00855313 srli t1,a0,0x8
40009cc8: 01055893 srli a7,a0,0x10
40009ccc: 01855813 srli a6,a0,0x18
fd = jffs2_write_dirent(c, dir_f, rd, name, namelen, ALLOC_NORMAL);
40009cd0: 00000793 li a5,0
40009cd4: 00040613 mv a2,s0
rd->name_crc = cpu_to_je32(crc32(0, name, namelen));
40009cd8: 02a40223 sb a0,36(s0)
40009cdc: 026402a3 sb t1,37(s0)
40009ce0: 03140323 sb a7,38(s0)
40009ce4: 030403a3 sb a6,39(s0)
fd = jffs2_write_dirent(c, dir_f, rd, name, namelen, ALLOC_NORMAL);
40009ce8: 00048713 mv a4,s1
40009cec: 000b8693 mv a3,s7
40009cf0: 00090593 mv a1,s2
40009cf4: 00098513 mv a0,s3
40009cf8: 914ff0ef jal ra,40008e0c <jffs2_write_dirent>
40009cfc: 00050593 mv a1,a0
jffs2_free_raw_dirent(rd);
40009d00: 00040513 mv a0,s0
fd = jffs2_write_dirent(c, dir_f, rd, name, namelen, ALLOC_NORMAL);
40009d04: 00058413 mv s0,a1
jffs2_free_raw_dirent(rd);
40009d08: b89fa0ef jal ra,40004890 <jffs2_free_raw_dirent>
if (IS_ERR(fd)) {
40009d0c: c1800793 li a5,-1000
40009d10: 0487ea63 bltu a5,s0,40009d64 <jffs2_do_link+0x248>
mutex_unlock(&dir_f->sem);
return PTR_ERR(fd);
}
/* File it. This will mark the old one obsolete. */
jffs2_add_fd_to_list(c, fd, &dir_f->dents);
40009d14: 00098513 mv a0,s3
40009d18: 00c90613 addi a2,s2,12
40009d1c: 00040593 mv a1,s0
40009d20: dd9fa0ef jal ra,40004af8 <jffs2_add_fd_to_list>
jffs2_complete_reservation(c);
40009d24: 00098513 mv a0,s3
40009d28: d61fb0ef jal ra,40005a88 <jffs2_complete_reservation>
mutex_unlock(&dir_f->sem);
return 0;
}
40009d2c: 03c12083 lw ra,60(sp)
40009d30: 03812403 lw s0,56(sp)
40009d34: 03412483 lw s1,52(sp)
40009d38: 03012903 lw s2,48(sp)
40009d3c: 02c12983 lw s3,44(sp)
40009d40: 02812a03 lw s4,40(sp)
40009d44: 02412a83 lw s5,36(sp)
40009d48: 02012b03 lw s6,32(sp)
40009d4c: 01c12b83 lw s7,28(sp)
40009d50: 01812c03 lw s8,24(sp)
40009d54: 000c8513 mv a0,s9
40009d58: 01412c83 lw s9,20(sp)
40009d5c: 04010113 addi sp,sp,64
40009d60: 00008067 ret
jffs2_complete_reservation(c);
40009d64: 00098513 mv a0,s3 <== NOT EXECUTED
40009d68: d21fb0ef jal ra,40005a88 <jffs2_complete_reservation> <== NOT EXECUTED
return PTR_ERR(fd);
40009d6c: 00040c93 mv s9,s0 <== NOT EXECUTED
40009d70: fbdff06f j 40009d2c <jffs2_do_link+0x210> <== NOT EXECUTED
jffs2_free_raw_dirent(rd);
40009d74: 00040513 mv a0,s0 <== NOT EXECUTED
40009d78: b19fa0ef jal ra,40004890 <jffs2_free_raw_dirent> <== NOT EXECUTED
return ret;
40009d7c: fb1ff06f j 40009d2c <jffs2_do_link+0x210> <== NOT EXECUTED
return -ENOMEM;
40009d80: ff400c93 li s9,-12 <== NOT EXECUTED
40009d84: fa9ff06f j 40009d2c <jffs2_do_link+0x210> <== NOT EXECUTED
40009e80 <jffs2_do_mount_fs>:
dbg_fsbuild("Very dirty blocks before GC triggered: %d\n",
c->vdirty_blocks_gctrigger);
}
int jffs2_do_mount_fs(struct jffs2_sb_info *c)
{
40009e80: fc010113 addi sp,sp,-64
40009e84: 02812c23 sw s0,56(sp)
40009e88: 03212823 sw s2,48(sp)
int ret;
int i;
int size;
c->free_size = c->flash_size;
c->nr_blocks = c->flash_size / c->sector_size;
40009e8c: 03452403 lw s0,52(a0)
c->free_size = c->flash_size;
40009e90: 01852903 lw s2,24(a0)
{
40009e94: 02912a23 sw s1,52(sp)
#ifndef __ECOS
if (jffs2_blocks_use_vmalloc(c))
c->blocks = vzalloc(size);
else
#endif
c->blocks = kzalloc(size, GFP_KERNEL);
40009e98: 03400593 li a1,52
c->nr_blocks = c->flash_size / c->sector_size;
40009e9c: 028954b3 divu s1,s2,s0
{
40009ea0: 03412423 sw s4,40(sp)
40009ea4: 02112e23 sw ra,60(sp)
40009ea8: 03312623 sw s3,44(sp)
40009eac: 03512223 sw s5,36(sp)
40009eb0: 03612023 sw s6,32(sp)
40009eb4: 01712e23 sw s7,28(sp)
40009eb8: 01812c23 sw s8,24(sp)
40009ebc: 00050a13 mv s4,a0
c->free_size = c->flash_size;
40009ec0: 03252423 sw s2,40(a0)
c->blocks = kzalloc(size, GFP_KERNEL);
40009ec4: 00100513 li a0,1
40009ec8: 02b485b3 mul a1,s1,a1
c->nr_blocks = c->flash_size / c->sector_size;
40009ecc: 049a2823 sw s1,80(s4)
c->blocks = kzalloc(size, GFP_KERNEL);
40009ed0: 494030ef jal ra,4000d364 <calloc>
40009ed4: 04aa2a23 sw a0,84(s4)
if (!c->blocks)
40009ed8: 5a050863 beqz a0,4000a488 <jffs2_do_mount_fs+0x608> <== NEVER TAKEN
40009edc: 00050793 mv a5,a0
return -ENOMEM;
for (i=0; i<c->nr_blocks; i++) {
40009ee0: 00000693 li a3,0
40009ee4: 00000713 li a4,0
40009ee8: 02896263 bltu s2,s0,40009f0c <jffs2_do_mount_fs+0x8c>
INIT_LIST_HEAD(&c->blocks[i].list);
c->blocks[i].offset = i * c->sector_size;
40009eec: 00d7a623 sw a3,12(a5)
INIT_LIST_HEAD(&c->blocks[i].list);
40009ef0: 00f7a223 sw a5,4(a5)
40009ef4: 00f7a023 sw a5,0(a5)
c->blocks[i].free_size = c->sector_size;
40009ef8: 0287a023 sw s0,32(a5)
for (i=0; i<c->nr_blocks; i++) {
40009efc: 00170713 addi a4,a4,1
40009f00: 03478793 addi a5,a5,52
40009f04: 008686b3 add a3,a3,s0
40009f08: fe9762e3 bltu a4,s1,40009eec <jffs2_do_mount_fs+0x6c>
c->flags |= JFFS2_SB_FLAG_SCANNING;
40009f0c: 00ca2f83 lw t6,12(s4)
INIT_LIST_HEAD(&c->erase_pending_list);
INIT_LIST_HEAD(&c->erasable_pending_wbuf_list);
INIT_LIST_HEAD(&c->erase_complete_list);
INIT_LIST_HEAD(&c->free_list);
INIT_LIST_HEAD(&c->bad_list);
INIT_LIST_HEAD(&c->bad_used_list);
40009f10: 0b8a0793 addi a5,s4,184
INIT_LIST_HEAD(&c->bad_list);
40009f14: 0b0a0713 addi a4,s4,176
INIT_LIST_HEAD(&c->clean_list);
40009f18: 060a0f13 addi t5,s4,96
INIT_LIST_HEAD(&c->very_dirty_list);
40009f1c: 068a0e93 addi t4,s4,104
INIT_LIST_HEAD(&c->dirty_list);
40009f20: 070a0e13 addi t3,s4,112
INIT_LIST_HEAD(&c->erasable_list);
40009f24: 078a0313 addi t1,s4,120
INIT_LIST_HEAD(&c->erasing_list);
40009f28: 088a0893 addi a7,s4,136
INIT_LIST_HEAD(&c->erase_checking_list);
40009f2c: 090a0813 addi a6,s4,144
INIT_LIST_HEAD(&c->erase_pending_list);
40009f30: 098a0513 addi a0,s4,152
INIT_LIST_HEAD(&c->erasable_pending_wbuf_list);
40009f34: 080a0593 addi a1,s4,128
INIT_LIST_HEAD(&c->erase_complete_list);
40009f38: 0a0a0613 addi a2,s4,160
INIT_LIST_HEAD(&c->free_list);
40009f3c: 0a8a0693 addi a3,s4,168
c->flags |= JFFS2_SB_FLAG_SCANNING;
40009f40: 002fef93 ori t6,t6,2
INIT_LIST_HEAD(&c->bad_used_list);
40009f44: 0afa2e23 sw a5,188(s4)
40009f48: 0afa2c23 sw a5,184(s4)
c->highest_ino = 1;
40009f4c: 00100793 li a5,1
INIT_LIST_HEAD(&c->erase_pending_list);
40009f50: 08aa2e23 sw a0,156(s4)
40009f54: 08aa2c23 sw a0,152(s4)
INIT_LIST_HEAD(&c->bad_list);
40009f58: 0aea2a23 sw a4,180(s4)
40009f5c: 0aea2823 sw a4,176(s4)
INIT_LIST_HEAD(&c->clean_list);
40009f60: 07ea2223 sw t5,100(s4)
40009f64: 07ea2023 sw t5,96(s4)
INIT_LIST_HEAD(&c->very_dirty_list);
40009f68: 07da2623 sw t4,108(s4)
40009f6c: 07da2423 sw t4,104(s4)
INIT_LIST_HEAD(&c->dirty_list);
40009f70: 07ca2a23 sw t3,116(s4)
40009f74: 07ca2823 sw t3,112(s4)
INIT_LIST_HEAD(&c->erasable_list);
40009f78: 066a2e23 sw t1,124(s4)
40009f7c: 066a2c23 sw t1,120(s4)
INIT_LIST_HEAD(&c->erasing_list);
40009f80: 091a2623 sw a7,140(s4)
40009f84: 091a2423 sw a7,136(s4)
INIT_LIST_HEAD(&c->erase_checking_list);
40009f88: 090a2a23 sw a6,148(s4)
40009f8c: 090a2823 sw a6,144(s4)
INIT_LIST_HEAD(&c->erasable_pending_wbuf_list);
40009f90: 08ba2223 sw a1,132(s4)
40009f94: 08ba2023 sw a1,128(s4)
INIT_LIST_HEAD(&c->erase_complete_list);
40009f98: 0aca2223 sw a2,164(s4)
40009f9c: 0aca2023 sw a2,160(s4)
INIT_LIST_HEAD(&c->free_list);
40009fa0: 0ada2623 sw a3,172(s4)
40009fa4: 0ada2423 sw a3,168(s4)
c->highest_ino = 1;
40009fa8: 00fa2223 sw a5,4(s4)
c->summary = NULL;
40009fac: 0c0a2623 sw zero,204(s4)
c->flags |= JFFS2_SB_FLAG_SCANNING;
40009fb0: 01fa2623 sw t6,12(s4)
ret = jffs2_scan_medium(c);
40009fb4: 000a0513 mv a0,s4
struct jffs2_full_dirent *dead_fds = NULL;
40009fb8: 00012623 sw zero,12(sp)
ret = jffs2_scan_medium(c);
40009fbc: 6bd010ef jal ra,4000be78 <jffs2_scan_medium>
c->flags &= ~JFFS2_SB_FLAG_SCANNING;
40009fc0: 00ca2703 lw a4,12(s4)
ret = jffs2_scan_medium(c);
40009fc4: 00050c13 mv s8,a0
c->flags &= ~JFFS2_SB_FLAG_SCANNING;
40009fc8: ffd77713 andi a4,a4,-3
40009fcc: 00ea2623 sw a4,12(s4)
if (ret)
40009fd0: 3c051e63 bnez a0,4000a3ac <jffs2_do_mount_fs+0x52c> <== NEVER TAKEN
for (; *i < c->inocache_hashsize; (*i)++) {
40009fd4: 0c0a2783 lw a5,192(s4)
c->flags |= JFFS2_SB_FLAG_BUILDING;
40009fd8: 00476713 ori a4,a4,4
40009fdc: 00ea2623 sw a4,12(s4)
for (; *i < c->inocache_hashsize; (*i)++) {
40009fe0: 48f05e63 blez a5,4000a47c <jffs2_do_mount_fs+0x5fc> <== NEVER TAKEN
40009fe4: 0c4a2703 lw a4,196(s4)
for_each_inode(i, c, ic) {
40009fe8: 00000913 li s2,0
40009fec: 0100006f j 40009ffc <jffs2_do_mount_fs+0x17c>
for (; *i < c->inocache_hashsize; (*i)++) {
40009ff0: 00190913 addi s2,s2,1
40009ff4: 00470713 addi a4,a4,4
40009ff8: 00f90663 beq s2,a5,4000a004 <jffs2_do_mount_fs+0x184>
if (c->inocache_list[*i])
40009ffc: 00072483 lw s1,0(a4)
4000a000: fe0488e3 beqz s1,40009ff0 <jffs2_do_mount_fs+0x170> <== ALWAYS TAKEN
4000a004: 00000a93 li s5,0
if (fd->type == DT_DIR) {
4000a008: 00400993 li s3,4
if (child_ic->pino_nlink > 1)
4000a00c: 00100b13 li s6,1
for_each_inode(i, c, ic) {
4000a010: 12049463 bnez s1,4000a138 <jffs2_do_mount_fs+0x2b8> <== NEVER TAKEN
for (; *i < c->inocache_hashsize; (*i)++) {
4000a014: 46f05063 blez a5,4000a474 <jffs2_do_mount_fs+0x5f4> <== NEVER TAKEN
4000a018: 0c4a2703 lw a4,196(s4)
for_each_inode(i, c, ic) {
4000a01c: 00000413 li s0,0
4000a020: 0100006f j 4000a030 <jffs2_do_mount_fs+0x1b0>
for (; *i < c->inocache_hashsize; (*i)++) {
4000a024: 00140413 addi s0,s0,1
4000a028: 00470713 addi a4,a4,4
4000a02c: 00f40663 beq s0,a5,4000a038 <jffs2_do_mount_fs+0x1b8>
if (c->inocache_list[*i])
4000a030: 00072483 lw s1,0(a4)
4000a034: fe0488e3 beqz s1,4000a024 <jffs2_do_mount_fs+0x1a4> <== ALWAYS TAKEN
for_each_inode(i, c, ic) {
4000a038: 18049663 bnez s1,4000a1c4 <jffs2_do_mount_fs+0x344> <== NEVER TAKEN
while (dead_fds) {
4000a03c: 00c12403 lw s0,12(sp)
4000a040: 04040063 beqz s0,4000a080 <jffs2_do_mount_fs+0x200> <== ALWAYS TAKEN
dead_fds = fd->next;
4000a044: 00442783 lw a5,4(s0) <== NOT EXECUTED
ic = jffs2_get_ino_cache(c, fd->ino);
4000a048: 00c42583 lw a1,12(s0) <== NOT EXECUTED
4000a04c: 000a0513 mv a0,s4 <== NOT EXECUTED
dead_fds = fd->next;
4000a050: 00f12623 sw a5,12(sp) <== NOT EXECUTED
ic = jffs2_get_ino_cache(c, fd->ino);
4000a054: 9e4fb0ef jal ra,40005238 <jffs2_get_ino_cache> <== NOT EXECUTED
4000a058: 00050593 mv a1,a0 <== NOT EXECUTED
if (ic)
4000a05c: 00050863 beqz a0,4000a06c <jffs2_do_mount_fs+0x1ec> <== NOT EXECUTED
jffs2_build_remove_unlinked_inode(c, ic, &dead_fds);
4000a060: 00c10613 addi a2,sp,12 <== NOT EXECUTED
4000a064: 000a0513 mv a0,s4 <== NOT EXECUTED
4000a068: d21ff0ef jal ra,40009d88 <jffs2_build_remove_unlinked_inode> <== NOT EXECUTED
jffs2_free_full_dirent(fd);
4000a06c: 00040513 mv a0,s0 <== NOT EXECUTED
4000a070: 809fa0ef jal ra,40004878 <jffs2_free_full_dirent> <== NOT EXECUTED
while (dead_fds) {
4000a074: 00c12403 lw s0,12(sp) <== NOT EXECUTED
4000a078: fc0416e3 bnez s0,4000a044 <jffs2_do_mount_fs+0x1c4> <== NOT EXECUTED
4000a07c: 0c0a2783 lw a5,192(s4) <== NOT EXECUTED
if (dir_hardlinks) {
4000a080: 160a8663 beqz s5,4000a1ec <jffs2_do_mount_fs+0x36c> <== ALWAYS TAKEN
for_each_inode(i, c, ic) {
4000a084: 00000713 li a4,0 <== NOT EXECUTED
return NULL;
4000a088: 00000693 li a3,0 <== NOT EXECUTED
for (; *i < c->inocache_hashsize; (*i)++) {
4000a08c: 14f05e63 blez a5,4000a1e8 <jffs2_do_mount_fs+0x368> <== NOT EXECUTED
4000a090: 0c4a2603 lw a2,196(s4) <== NOT EXECUTED
for_each_inode(i, c, ic) {
4000a094: 00000713 li a4,0 <== NOT EXECUTED
4000a098: 0100006f j 4000a0a8 <jffs2_do_mount_fs+0x228> <== NOT EXECUTED
for (; *i < c->inocache_hashsize; (*i)++) {
4000a09c: 00170713 addi a4,a4,1 <== NOT EXECUTED
4000a0a0: 00460613 addi a2,a2,4 <== NOT EXECUTED
4000a0a4: 14f70263 beq a4,a5,4000a1e8 <jffs2_do_mount_fs+0x368> <== NOT EXECUTED
if (c->inocache_list[*i])
4000a0a8: 00062683 lw a3,0(a2) <== NOT EXECUTED
4000a0ac: fe0688e3 beqz a3,4000a09c <jffs2_do_mount_fs+0x21c> <== NOT EXECUTED
if (ic->flags & INO_FLAGS_IS_DIR)
4000a0b0: 0096c603 lbu a2,9(a3) # 4009 <bsp_section_bss_size+0x1571> <== NOT EXECUTED
4000a0b4: 00267613 andi a2,a2,2 <== NOT EXECUTED
4000a0b8: 00060463 beqz a2,4000a0c0 <jffs2_do_mount_fs+0x240> <== NOT EXECUTED
ic->pino_nlink = 0;
4000a0bc: 0006aa23 sw zero,20(a3) <== NOT EXECUTED
if (ic->next)
4000a0c0: 0106a683 lw a3,16(a3) <== NOT EXECUTED
4000a0c4: fe0696e3 bnez a3,4000a0b0 <jffs2_do_mount_fs+0x230> <== NOT EXECUTED
(*i)++;
4000a0c8: 00170693 addi a3,a4,1 <== NOT EXECUTED
for (; *i < c->inocache_hashsize; (*i)++) {
4000a0cc: 12f6d063 bge a3,a5,4000a1ec <jffs2_do_mount_fs+0x36c> <== NOT EXECUTED
4000a0d0: 0c4a2603 lw a2,196(s4) <== NOT EXECUTED
4000a0d4: 00271593 slli a1,a4,0x2 <== NOT EXECUTED
if (c->inocache_list[*i])
4000a0d8: 00068713 mv a4,a3 <== NOT EXECUTED
4000a0dc: 00b60633 add a2,a2,a1 <== NOT EXECUTED
4000a0e0: 0100006f j 4000a0f0 <jffs2_do_mount_fs+0x270> <== NOT EXECUTED
for (; *i < c->inocache_hashsize; (*i)++) {
4000a0e4: 00170713 addi a4,a4,1 <== NOT EXECUTED
4000a0e8: 00460613 addi a2,a2,4 <== NOT EXECUTED
4000a0ec: 10f70063 beq a4,a5,4000a1ec <jffs2_do_mount_fs+0x36c> <== NOT EXECUTED
if (c->inocache_list[*i])
4000a0f0: 00462683 lw a3,4(a2) <== NOT EXECUTED
4000a0f4: fe0688e3 beqz a3,4000a0e4 <jffs2_do_mount_fs+0x264> <== NOT EXECUTED
4000a0f8: fb9ff06f j 4000a0b0 <jffs2_do_mount_fs+0x230> <== NOT EXECUTED
if (ic->next)
4000a0fc: 0104a483 lw s1,16(s1) <== NOT EXECUTED
4000a100: 02049c63 bnez s1,4000a138 <jffs2_do_mount_fs+0x2b8> <== NOT EXECUTED
for (; *i < c->inocache_hashsize; (*i)++) {
4000a104: 0c0a2783 lw a5,192(s4) <== NOT EXECUTED
(*i)++;
4000a108: 00190693 addi a3,s2,1 <== NOT EXECUTED
for (; *i < c->inocache_hashsize; (*i)++) {
4000a10c: f0f6d4e3 bge a3,a5,4000a014 <jffs2_do_mount_fs+0x194> <== NOT EXECUTED
4000a110: 0c4a2703 lw a4,196(s4) <== NOT EXECUTED
4000a114: 00291613 slli a2,s2,0x2 <== NOT EXECUTED
if (c->inocache_list[*i])
4000a118: 00068913 mv s2,a3 <== NOT EXECUTED
4000a11c: 00c70733 add a4,a4,a2 <== NOT EXECUTED
4000a120: 0100006f j 4000a130 <jffs2_do_mount_fs+0x2b0> <== NOT EXECUTED
for (; *i < c->inocache_hashsize; (*i)++) {
4000a124: 00190913 addi s2,s2,1 <== NOT EXECUTED
4000a128: 00470713 addi a4,a4,4 <== NOT EXECUTED
4000a12c: eef904e3 beq s2,a5,4000a014 <jffs2_do_mount_fs+0x194> <== NOT EXECUTED
if (c->inocache_list[*i])
4000a130: 00472483 lw s1,4(a4) <== NOT EXECUTED
4000a134: fe0488e3 beqz s1,4000a124 <jffs2_do_mount_fs+0x2a4> <== NOT EXECUTED
if (ic->scan_dents) {
4000a138: 0004a403 lw s0,0(s1) <== NOT EXECUTED
4000a13c: 00041863 bnez s0,4000a14c <jffs2_do_mount_fs+0x2cc> <== NOT EXECUTED
4000a140: fbdff06f j 4000a0fc <jffs2_do_mount_fs+0x27c> <== NOT EXECUTED
for(fd = ic->scan_dents; fd; fd = fd->next) {
4000a144: 00442403 lw s0,4(s0) <== NOT EXECUTED
4000a148: fa040ae3 beqz s0,4000a0fc <jffs2_do_mount_fs+0x27c> <== NOT EXECUTED
if (!fd->ino)
4000a14c: 00c42583 lw a1,12(s0) <== NOT EXECUTED
4000a150: fe058ae3 beqz a1,4000a144 <jffs2_do_mount_fs+0x2c4> <== NOT EXECUTED
child_ic = jffs2_get_ino_cache(c, fd->ino);
4000a154: 000a0513 mv a0,s4 <== NOT EXECUTED
4000a158: 8e0fb0ef jal ra,40005238 <jffs2_get_ino_cache> <== NOT EXECUTED
if (!child_ic) {
4000a15c: 22050e63 beqz a0,4000a398 <jffs2_do_mount_fs+0x518> <== NOT EXECUTED
child_ic->pino_nlink++;
4000a160: 01452783 lw a5,20(a0) <== NOT EXECUTED
fd->ic = child_ic;
4000a164: 00a42023 sw a0,0(s0) <== NOT EXECUTED
child_ic->pino_nlink++;
4000a168: 00178793 addi a5,a5,1 <== NOT EXECUTED
4000a16c: 00f52a23 sw a5,20(a0) <== NOT EXECUTED
if (fd->type == DT_DIR) {
4000a170: 01444703 lbu a4,20(s0) <== NOT EXECUTED
4000a174: fd3718e3 bne a4,s3,4000a144 <jffs2_do_mount_fs+0x2c4> <== NOT EXECUTED
child_ic->flags |= INO_FLAGS_IS_DIR;
4000a178: 00954703 lbu a4,9(a0) <== NOT EXECUTED
4000a17c: 00276713 ori a4,a4,2 <== NOT EXECUTED
4000a180: 00e504a3 sb a4,9(a0) <== NOT EXECUTED
if (child_ic->pino_nlink > 1)
4000a184: fcfb70e3 bgeu s6,a5,4000a144 <jffs2_do_mount_fs+0x2c4> <== NOT EXECUTED
*dir_hardlinks = 1;
4000a188: 00100a93 li s5,1 <== NOT EXECUTED
4000a18c: fb9ff06f j 4000a144 <jffs2_do_mount_fs+0x2c4> <== NOT EXECUTED
for (; *i < c->inocache_hashsize; (*i)++) {
4000a190: 0c0a2783 lw a5,192(s4) <== NOT EXECUTED
(*i)++;
4000a194: 00140693 addi a3,s0,1 <== NOT EXECUTED
for (; *i < c->inocache_hashsize; (*i)++) {
4000a198: eaf6d2e3 bge a3,a5,4000a03c <jffs2_do_mount_fs+0x1bc> <== NOT EXECUTED
4000a19c: 0c4a2703 lw a4,196(s4) <== NOT EXECUTED
4000a1a0: 00241613 slli a2,s0,0x2 <== NOT EXECUTED
if (c->inocache_list[*i])
4000a1a4: 00068413 mv s0,a3 <== NOT EXECUTED
4000a1a8: 00c70733 add a4,a4,a2 <== NOT EXECUTED
4000a1ac: 0100006f j 4000a1bc <jffs2_do_mount_fs+0x33c> <== NOT EXECUTED
for (; *i < c->inocache_hashsize; (*i)++) {
4000a1b0: 00140413 addi s0,s0,1 <== NOT EXECUTED
4000a1b4: 00470713 addi a4,a4,4 <== NOT EXECUTED
4000a1b8: e8f402e3 beq s0,a5,4000a03c <jffs2_do_mount_fs+0x1bc> <== NOT EXECUTED
if (c->inocache_list[*i])
4000a1bc: 00472483 lw s1,4(a4) <== NOT EXECUTED
4000a1c0: fe0488e3 beqz s1,4000a1b0 <jffs2_do_mount_fs+0x330> <== NOT EXECUTED
if (ic->pino_nlink)
4000a1c4: 0144a783 lw a5,20(s1) <== NOT EXECUTED
4000a1c8: 00079a63 bnez a5,4000a1dc <jffs2_do_mount_fs+0x35c> <== NOT EXECUTED
jffs2_build_remove_unlinked_inode(c, ic, &dead_fds);
4000a1cc: 00c10613 addi a2,sp,12 <== NOT EXECUTED
4000a1d0: 00048593 mv a1,s1 <== NOT EXECUTED
4000a1d4: 000a0513 mv a0,s4 <== NOT EXECUTED
4000a1d8: bb1ff0ef jal ra,40009d88 <jffs2_build_remove_unlinked_inode> <== NOT EXECUTED
if (ic->next)
4000a1dc: 0104a483 lw s1,16(s1) <== NOT EXECUTED
4000a1e0: fe0492e3 bnez s1,4000a1c4 <jffs2_do_mount_fs+0x344> <== NOT EXECUTED
4000a1e4: fadff06f j 4000a190 <jffs2_do_mount_fs+0x310> <== NOT EXECUTED
for_each_inode(i, c, ic) {
4000a1e8: ec0694e3 bnez a3,4000a0b0 <jffs2_do_mount_fs+0x230> <== NOT EXECUTED
for (; *i < c->inocache_hashsize; (*i)++) {
4000a1ec: 00000993 li s3,0
4000a1f0: 02f05263 blez a5,4000a214 <jffs2_do_mount_fs+0x394> <== NEVER TAKEN
4000a1f4: 0c4a2703 lw a4,196(s4)
if (c->inocache_list[*i])
4000a1f8: 00000993 li s3,0
4000a1fc: 0100006f j 4000a20c <jffs2_do_mount_fs+0x38c>
for (; *i < c->inocache_hashsize; (*i)++) {
4000a200: 00198993 addi s3,s3,1
4000a204: 00470713 addi a4,a4,4
4000a208: 00f98663 beq s3,a5,4000a214 <jffs2_do_mount_fs+0x394>
if (c->inocache_list[*i])
4000a20c: 00072483 lw s1,0(a4)
4000a210: fe0488e3 beqz s1,4000a200 <jffs2_do_mount_fs+0x380> <== ALWAYS TAKEN
if (fd->type == DT_DIR) {
4000a214: 00400913 li s2,4
JFFS2_ERROR("child dir \"%s\" (ino #%u) of dir ino #%u is also hard linked from dir ino #%u\n",
4000a218: 4001fb37 lui s6,0x4001f
4000a21c: 4001fbb7 lui s7,0x4001f
for_each_inode(i, c, ic) {
4000a220: 10049063 bnez s1,4000a320 <jffs2_do_mount_fs+0x4a0> <== NEVER TAKEN
c->flags &= ~JFFS2_SB_FLAG_BUILDING;
4000a224: 00ca2783 lw a5,12(s4)
jffs2_rotate_lists(c);
4000a228: 000a0513 mv a0,s4
c->flags &= ~JFFS2_SB_FLAG_BUILDING;
4000a22c: ffb7f793 andi a5,a5,-5
4000a230: 00fa2623 sw a5,12(s4)
jffs2_rotate_lists(c);
4000a234: 501020ef jal ra,4000cf34 <jffs2_rotate_lists>
size = c->flash_size / 50; /* 2% of flash size */
4000a238: 018a2703 lw a4,24(s4)
4000a23c: 03200693 li a3,50
size += c->nr_blocks * 100; /* And 100 bytes per eraseblock */
4000a240: 050a2783 lw a5,80(s4)
size = c->flash_size / 50; /* 2% of flash size */
4000a244: 02d75633 divu a2,a4,a3
size += c->nr_blocks * 100; /* And 100 bytes per eraseblock */
4000a248: 06400513 li a0,100
size += c->sector_size - 1; /* ... and round up */
4000a24c: 034a2583 lw a1,52(s4)
c->resv_blocks_deletion = 2;
4000a250: 00200813 li a6,2
4000a254: 050a02a3 sb a6,69(s4)
size += c->sector_size - 1; /* ... and round up */
4000a258: fff58693 addi a3,a1,-1
c->resv_blocks_gcmerge = c->resv_blocks_deletion + 1;
4000a25c: 00300813 li a6,3
4000a260: 050a0423 sb a6,72(s4)
c->resv_blocks_gcbad = 0;//c->resv_blocks_deletion + 2;
4000a264: 040a03a3 sb zero,71(s4)
size += c->nr_blocks * 100; /* And 100 bytes per eraseblock */
4000a268: 02f507b3 mul a5,a0,a5
4000a26c: 00c686b3 add a3,a3,a2
size += c->sector_size - 1; /* ... and round up */
4000a270: 00d787b3 add a5,a5,a3
c->resv_blocks_write = c->resv_blocks_deletion + (size / c->sector_size);
4000a274: 02b7d7b3 divu a5,a5,a1
c->nospc_dirty_size = c->sector_size + (c->flash_size / 100);
4000a278: 02a75733 divu a4,a4,a0
c->resv_blocks_write = c->resv_blocks_deletion + (size / c->sector_size);
4000a27c: 0ff7f793 andi a5,a5,255
c->resv_blocks_gctrigger = c->resv_blocks_write + 1;
4000a280: 00378613 addi a2,a5,3
4000a284: 0ff67613 andi a2,a2,255
c->vdirty_blocks_gctrigger *= 10;
4000a288: 00261693 slli a3,a2,0x2
c->resv_blocks_write = c->resv_blocks_deletion + (size / c->sector_size);
4000a28c: 00278793 addi a5,a5,2
c->vdirty_blocks_gctrigger *= 10;
4000a290: 00d606b3 add a3,a2,a3
4000a294: 00169693 slli a3,a3,0x1
c->resv_blocks_write = c->resv_blocks_deletion + (size / c->sector_size);
4000a298: 04fa0223 sb a5,68(s4)
c->resv_blocks_gctrigger = c->resv_blocks_write + 1;
4000a29c: 04ca0323 sb a2,70(s4)
c->vdirty_blocks_gctrigger *= 10;
4000a2a0: 04da04a3 sb a3,73(s4)
c->nospc_dirty_size = c->sector_size + (c->flash_size / 100);
4000a2a4: 00b707b3 add a5,a4,a1
4000a2a8: 04fa2623 sw a5,76(s4)
out_free:
kvfree(c->blocks);
return ret;
}
4000a2ac: 03c12083 lw ra,60(sp)
4000a2b0: 03812403 lw s0,56(sp)
4000a2b4: 03412483 lw s1,52(sp)
4000a2b8: 03012903 lw s2,48(sp)
4000a2bc: 02c12983 lw s3,44(sp)
4000a2c0: 02812a03 lw s4,40(sp)
4000a2c4: 02412a83 lw s5,36(sp)
4000a2c8: 02012b03 lw s6,32(sp)
4000a2cc: 01c12b83 lw s7,28(sp)
4000a2d0: 000c0513 mv a0,s8
4000a2d4: 01812c03 lw s8,24(sp)
4000a2d8: 04010113 addi sp,sp,64
4000a2dc: 00008067 ret
ic->scan_dents = NULL;
4000a2e0: 0004a023 sw zero,0(s1) <== NOT EXECUTED
if (ic->next)
4000a2e4: 0104a483 lw s1,16(s1) <== NOT EXECUTED
4000a2e8: 02049c63 bnez s1,4000a320 <jffs2_do_mount_fs+0x4a0> <== NOT EXECUTED
for (; *i < c->inocache_hashsize; (*i)++) {
4000a2ec: 0c0a2703 lw a4,192(s4) <== NOT EXECUTED
(*i)++;
4000a2f0: 00198693 addi a3,s3,1 <== NOT EXECUTED
for (; *i < c->inocache_hashsize; (*i)++) {
4000a2f4: f2e6d8e3 bge a3,a4,4000a224 <jffs2_do_mount_fs+0x3a4> <== NOT EXECUTED
4000a2f8: 0c4a2783 lw a5,196(s4) <== NOT EXECUTED
4000a2fc: 00299613 slli a2,s3,0x2 <== NOT EXECUTED
if (c->inocache_list[*i])
4000a300: 00068993 mv s3,a3 <== NOT EXECUTED
4000a304: 00c787b3 add a5,a5,a2 <== NOT EXECUTED
4000a308: 0100006f j 4000a318 <jffs2_do_mount_fs+0x498> <== NOT EXECUTED
for (; *i < c->inocache_hashsize; (*i)++) {
4000a30c: 00198993 addi s3,s3,1 <== NOT EXECUTED
4000a310: 00478793 addi a5,a5,4 <== NOT EXECUTED
4000a314: f0e988e3 beq s3,a4,4000a224 <jffs2_do_mount_fs+0x3a4> <== NOT EXECUTED
if (c->inocache_list[*i])
4000a318: 0047a483 lw s1,4(a5) <== NOT EXECUTED
4000a31c: fe0488e3 beqz s1,4000a30c <jffs2_do_mount_fs+0x48c> <== NOT EXECUTED
while(ic->scan_dents) {
4000a320: 0004a403 lw s0,0(s1) <== NOT EXECUTED
4000a324: fa040ee3 beqz s0,4000a2e0 <jffs2_do_mount_fs+0x460> <== NOT EXECUTED
ic->scan_dents = fd->next;
4000a328: 00442783 lw a5,4(s0) <== NOT EXECUTED
4000a32c: 00f4a023 sw a5,0(s1) <== NOT EXECUTED
if (fd->type == DT_DIR) {
4000a330: 01444703 lbu a4,20(s0) <== NOT EXECUTED
4000a334: 03271663 bne a4,s2,4000a360 <jffs2_do_mount_fs+0x4e0> <== NOT EXECUTED
if (!fd->ic) {
4000a338: 00042683 lw a3,0(s0) <== NOT EXECUTED
4000a33c: 04068a63 beqz a3,4000a390 <jffs2_do_mount_fs+0x510> <== NOT EXECUTED
BUG_ON(!(fd->ic->flags & INO_FLAGS_IS_DIR));
4000a340: 0096c783 lbu a5,9(a3) <== NOT EXECUTED
4000a344: 0027f793 andi a5,a5,2 <== NOT EXECUTED
4000a348: 10078663 beqz a5,4000a454 <jffs2_do_mount_fs+0x5d4> <== NOT EXECUTED
JFFS2_ERROR("child dir \"%s\" (ino #%u) of dir ino #%u is also hard linked from dir ino #%u\n",
4000a34c: 00c4a703 lw a4,12(s1) <== NOT EXECUTED
if (dir_hardlinks && fd->ic->pino_nlink) {
4000a350: 000a8663 beqz s5,4000a35c <jffs2_do_mount_fs+0x4dc> <== NOT EXECUTED
4000a354: 0146a783 lw a5,20(a3) <== NOT EXECUTED
4000a358: 00079c63 bnez a5,4000a370 <jffs2_do_mount_fs+0x4f0> <== NOT EXECUTED
fd->ic->pino_nlink = ic->ino;
4000a35c: 00e6aa23 sw a4,20(a3) <== NOT EXECUTED
jffs2_free_full_dirent(fd);
4000a360: 00040513 mv a0,s0 <== NOT EXECUTED
4000a364: d14fa0ef jal ra,40004878 <jffs2_free_full_dirent> <== NOT EXECUTED
while(ic->scan_dents) {
4000a368: 0004a403 lw s0,0(s1) <== NOT EXECUTED
4000a36c: fb9ff06f j 4000a324 <jffs2_do_mount_fs+0x4a4> <== NOT EXECUTED
JFFS2_ERROR("child dir \"%s\" (ino #%u) of dir ino #%u is also hard linked from dir ino #%u\n",
4000a370: 00c42683 lw a3,12(s0) <== NOT EXECUTED
4000a374: 01540613 addi a2,s0,21 <== NOT EXECUTED
4000a378: 280b0593 addi a1,s6,640 # 4001f280 <__func__.0> <== NOT EXECUTED
4000a37c: 1f0b8513 addi a0,s7,496 # 4001f1f0 <__func__.1+0x14> <== NOT EXECUTED
4000a380: ab9ff0ef jal ra,40009e38 <jffs2_printk.constprop.0> <== NOT EXECUTED
fd->ic->pino_nlink = ic->ino;
4000a384: 00042683 lw a3,0(s0) <== NOT EXECUTED
4000a388: 00c4a703 lw a4,12(s1) <== NOT EXECUTED
4000a38c: fd1ff06f j 4000a35c <jffs2_do_mount_fs+0x4dc> <== NOT EXECUTED
4000a390: 00078413 mv s0,a5 <== NOT EXECUTED
while(ic->scan_dents) {
4000a394: f91ff06f j 4000a324 <jffs2_do_mount_fs+0x4a4> <== NOT EXECUTED
jffs2_mark_node_obsolete(c, fd->raw);
4000a398: 00042583 lw a1,0(s0) <== NOT EXECUTED
4000a39c: 000a0513 mv a0,s4 <== NOT EXECUTED
4000a3a0: efcfb0ef jal ra,40005a9c <jffs2_mark_node_obsolete> <== NOT EXECUTED
fd->ic = NULL;
4000a3a4: 00042023 sw zero,0(s0) <== NOT EXECUTED
continue;
4000a3a8: d9dff06f j 4000a144 <jffs2_do_mount_fs+0x2c4> <== NOT EXECUTED
for (; *i < c->inocache_hashsize; (*i)++) {
4000a3ac: 0c0a2703 lw a4,192(s4) <== NOT EXECUTED
for_each_inode(i, c, ic) {
4000a3b0: 00000493 li s1,0 <== NOT EXECUTED
return NULL;
4000a3b4: 00000413 li s0,0 <== NOT EXECUTED
for (; *i < c->inocache_hashsize; (*i)++) {
4000a3b8: 08e05a63 blez a4,4000a44c <jffs2_do_mount_fs+0x5cc> <== NOT EXECUTED
4000a3bc: 0c4a2783 lw a5,196(s4) <== NOT EXECUTED
for_each_inode(i, c, ic) {
4000a3c0: 00000493 li s1,0 <== NOT EXECUTED
4000a3c4: 0100006f j 4000a3d4 <jffs2_do_mount_fs+0x554> <== NOT EXECUTED
for (; *i < c->inocache_hashsize; (*i)++) {
4000a3c8: 00148493 addi s1,s1,1 <== NOT EXECUTED
4000a3cc: 00478793 addi a5,a5,4 <== NOT EXECUTED
4000a3d0: 06e48e63 beq s1,a4,4000a44c <jffs2_do_mount_fs+0x5cc> <== NOT EXECUTED
if (c->inocache_list[*i])
4000a3d4: 0007a403 lw s0,0(a5) <== NOT EXECUTED
4000a3d8: fe0408e3 beqz s0,4000a3c8 <jffs2_do_mount_fs+0x548> <== NOT EXECUTED
4000a3dc: 0100006f j 4000a3ec <jffs2_do_mount_fs+0x56c> <== NOT EXECUTED
ic->scan_dents = fd->next;
4000a3e0: 00452783 lw a5,4(a0) <== NOT EXECUTED
4000a3e4: 00f42023 sw a5,0(s0) <== NOT EXECUTED
jffs2_free_full_dirent(fd);
4000a3e8: c90fa0ef jal ra,40004878 <jffs2_free_full_dirent> <== NOT EXECUTED
while(ic->scan_dents) {
4000a3ec: 00042503 lw a0,0(s0) <== NOT EXECUTED
4000a3f0: fe0518e3 bnez a0,4000a3e0 <jffs2_do_mount_fs+0x560> <== NOT EXECUTED
if (ic->next)
4000a3f4: 01042403 lw s0,16(s0) <== NOT EXECUTED
4000a3f8: fe041ae3 bnez s0,4000a3ec <jffs2_do_mount_fs+0x56c> <== NOT EXECUTED
for (; *i < c->inocache_hashsize; (*i)++) {
4000a3fc: 0c0a2703 lw a4,192(s4) <== NOT EXECUTED
(*i)++;
4000a400: 00148693 addi a3,s1,1 <== NOT EXECUTED
for (; *i < c->inocache_hashsize; (*i)++) {
4000a404: 02e6d463 bge a3,a4,4000a42c <jffs2_do_mount_fs+0x5ac> <== NOT EXECUTED
4000a408: 0c4a2783 lw a5,196(s4) <== NOT EXECUTED
4000a40c: 00249613 slli a2,s1,0x2 <== NOT EXECUTED
if (c->inocache_list[*i])
4000a410: 00068493 mv s1,a3 <== NOT EXECUTED
4000a414: 00c787b3 add a5,a5,a2 <== NOT EXECUTED
4000a418: 0047a403 lw s0,4(a5) <== NOT EXECUTED
4000a41c: fc0418e3 bnez s0,4000a3ec <jffs2_do_mount_fs+0x56c> <== NOT EXECUTED
for (; *i < c->inocache_hashsize; (*i)++) {
4000a420: 00148493 addi s1,s1,1 <== NOT EXECUTED
4000a424: 00478793 addi a5,a5,4 <== NOT EXECUTED
4000a428: fe9718e3 bne a4,s1,4000a418 <jffs2_do_mount_fs+0x598> <== NOT EXECUTED
jffs2_free_ino_caches(c);
4000a42c: 000a0513 mv a0,s4 <== NOT EXECUTED
4000a430: f11fa0ef jal ra,40005340 <jffs2_free_ino_caches> <== NOT EXECUTED
jffs2_free_raw_node_refs(c);
4000a434: 000a0513 mv a0,s4 <== NOT EXECUTED
4000a438: f8dfa0ef jal ra,400053c4 <jffs2_free_raw_node_refs> <== NOT EXECUTED
kvfree(c->blocks);
4000a43c: 054a2503 lw a0,84(s4) <== NOT EXECUTED
return ret;
4000a440: ffb00c13 li s8,-5 <== NOT EXECUTED
kvfree(c->blocks);
4000a444: 290030ef jal ra,4000d6d4 <free> <== NOT EXECUTED
return ret;
4000a448: e65ff06f j 4000a2ac <jffs2_do_mount_fs+0x42c> <== NOT EXECUTED
for_each_inode(i, c, ic) {
4000a44c: fe0400e3 beqz s0,4000a42c <jffs2_do_mount_fs+0x5ac> <== NOT EXECUTED
4000a450: f9dff06f j 4000a3ec <jffs2_do_mount_fs+0x56c> <== NOT EXECUTED
BUG_ON(!(fd->ic->flags & INO_FLAGS_IS_DIR));
4000a454: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
4000a458: 4001f637 lui a2,0x4001f <== NOT EXECUTED
4000a45c: 4001f537 lui a0,0x4001f <== NOT EXECUTED
4000a460: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
4000a464: 28060613 addi a2,a2,640 # 4001f280 <__func__.0> <== NOT EXECUTED
4000a468: 0c400593 li a1,196 <== NOT EXECUTED
4000a46c: 25450513 addi a0,a0,596 # 4001f254 <__func__.1+0x78> <== NOT EXECUTED
4000a470: 631020ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
for_each_inode(i, c, ic) {
4000a474: 00000413 li s0,0 <== NOT EXECUTED
4000a478: bc1ff06f j 4000a038 <jffs2_do_mount_fs+0x1b8> <== NOT EXECUTED
for_each_inode(i, c, ic) {
4000a47c: 00000913 li s2,0 <== NOT EXECUTED
return NULL;
4000a480: 00000493 li s1,0 <== NOT EXECUTED
4000a484: b81ff06f j 4000a004 <jffs2_do_mount_fs+0x184> <== NOT EXECUTED
return -ENOMEM;
4000a488: ff400c13 li s8,-12 <== NOT EXECUTED
4000a48c: e21ff06f j 4000a2ac <jffs2_do_mount_fs+0x42c> <== NOT EXECUTED
4000883c <jffs2_do_new_inode>:
#include "compr.h"
int jffs2_do_new_inode(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
uint32_t mode, struct jffs2_raw_inode *ri)
{
4000883c: fe010113 addi sp,sp,-32
40008840: 00812c23 sw s0,24(sp)
40008844: 01212823 sw s2,16(sp)
40008848: 01312623 sw s3,12(sp)
4000884c: 01412423 sw s4,8(sp)
40008850: 00112e23 sw ra,28(sp)
40008854: 00912a23 sw s1,20(sp)
40008858: 01512223 sw s5,4(sp)
4000885c: 01612023 sw s6,0(sp)
40008860: 00050a13 mv s4,a0
40008864: 00058913 mv s2,a1
40008868: 00060993 mv s3,a2
4000886c: 00068413 mv s0,a3
struct jffs2_inode_cache *ic;
ic = jffs2_alloc_inode_cache();
40008870: 930fc0ef jal ra,400049a0 <jffs2_alloc_inode_cache>
if (!ic) {
40008874: 10050e63 beqz a0,40008990 <jffs2_do_new_inode+0x154> <== NEVER TAKEN
return -ENOMEM;
}
memset(ic, 0, sizeof(*ic));
40008878: 00050493 mv s1,a0
4000887c: 01800613 li a2,24
40008880: 00000593 li a1,0
40008884: 095130ef jal ra,4001c118 <memset>
f->inocache = ic;
f->inocache->pino_nlink = 1; /* Will be overwritten shortly for directories */
40008888: 00100a93 li s5,1
f->inocache = ic;
4000888c: 00992a23 sw s1,20(s2)
f->inocache->nodes = (struct jffs2_raw_node_ref *)f->inocache;
f->inocache->state = INO_STATE_PRESENT;
40008890: 00200b13 li s6,2
jffs2_add_ino_cache(c, f->inocache);
40008894: 00048593 mv a1,s1
40008898: 000a0513 mv a0,s4
f->inocache->pino_nlink = 1; /* Will be overwritten shortly for directories */
4000889c: 0154aa23 sw s5,20(s1)
f->inocache->nodes = (struct jffs2_raw_node_ref *)f->inocache;
400088a0: 0094a223 sw s1,4(s1)
f->inocache->state = INO_STATE_PRESENT;
400088a4: 01649523 sh s6,10(s1)
jffs2_add_ino_cache(c, f->inocache);
400088a8: 9d9fc0ef jal ra,40005280 <jffs2_add_ino_cache>
jffs2_dbg(1, "%s(): Assigned ino# %d\n", __func__, f->inocache->ino);
ri->ino = cpu_to_je32(f->inocache->ino);
400088ac: 01492783 lw a5,20(s2)
ri->magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
ri->nodetype = cpu_to_je16(JFFS2_NODETYPE_INODE);
ri->totlen = cpu_to_je32(PAD(sizeof(*ri)));
ri->hdr_crc = cpu_to_je32(crc32(0, ri, sizeof(struct jffs2_unknown_node)-4));
400088b0: 00040593 mv a1,s0
400088b4: 00000513 li a0,0
ri->ino = cpu_to_je32(f->inocache->ino);
400088b8: 00c7c603 lbu a2,12(a5)
400088bc: 00d7c683 lbu a3,13(a5)
400088c0: 00e7c703 lbu a4,14(a5)
400088c4: 00f7c783 lbu a5,15(a5)
400088c8: 00c40623 sb a2,12(s0)
400088cc: 00d406a3 sb a3,13(s0)
400088d0: 00f407a3 sb a5,15(s0)
ri->magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
400088d4: f8500793 li a5,-123
400088d8: 00f40023 sb a5,0(s0)
400088dc: 01900793 li a5,25
400088e0: 00f400a3 sb a5,1(s0)
ri->nodetype = cpu_to_je16(JFFS2_NODETYPE_INODE);
400088e4: fe000793 li a5,-32
400088e8: 00f401a3 sb a5,3(s0)
ri->totlen = cpu_to_je32(PAD(sizeof(*ri)));
400088ec: 04400793 li a5,68
ri->ino = cpu_to_je32(f->inocache->ino);
400088f0: 00e40723 sb a4,14(s0)
ri->totlen = cpu_to_je32(PAD(sizeof(*ri)));
400088f4: 00f40223 sb a5,4(s0)
ri->hdr_crc = cpu_to_je32(crc32(0, ri, sizeof(struct jffs2_unknown_node)-4));
400088f8: 00800613 li a2,8
ri->nodetype = cpu_to_je16(JFFS2_NODETYPE_INODE);
400088fc: 01640123 sb s6,2(s0)
ri->totlen = cpu_to_je32(PAD(sizeof(*ri)));
40008900: 000402a3 sb zero,5(s0)
40008904: 00040323 sb zero,6(s0)
40008908: 000403a3 sb zero,7(s0)
ri->hdr_crc = cpu_to_je32(crc32(0, ri, sizeof(struct jffs2_unknown_node)-4));
4000890c: 385010ef jal ra,4000a490 <cyg_crc32_accumulate>
return osmode & (S_IFMT | S_IRWXU | S_IRWXG | S_IRWXO);
40008910: 0000f7b7 lui a5,0xf
40008914: 1ff78793 addi a5,a5,511 # f1ff <bsp_section_rodata_size+0xa12b>
40008918: 00f9f7b3 and a5,s3,a5
4000891c: 00855593 srli a1,a0,0x8
40008920: 01055613 srli a2,a0,0x10
40008924: 01855693 srli a3,a0,0x18
ri->mode = cpu_to_jemode(mode);
40008928: 0087d713 srli a4,a5,0x8
4000892c: 0107d793 srli a5,a5,0x10
ri->hdr_crc = cpu_to_je32(crc32(0, ri, sizeof(struct jffs2_unknown_node)-4));
40008930: 00a40423 sb a0,8(s0)
40008934: 00b404a3 sb a1,9(s0)
40008938: 00c40523 sb a2,10(s0)
4000893c: 00d405a3 sb a3,11(s0)
ri->mode = cpu_to_jemode(mode);
40008940: 01340a23 sb s3,20(s0)
40008944: 00e40aa3 sb a4,21(s0)
40008948: 00f40b23 sb a5,22(s0)
4000894c: 00040ba3 sb zero,23(s0)
f->highest_version = 1;
40008950: 01592023 sw s5,0(s2)
ri->version = cpu_to_je32(f->highest_version);
40008954: 01540823 sb s5,16(s0)
40008958: 000408a3 sb zero,17(s0)
4000895c: 00040923 sb zero,18(s0)
40008960: 000409a3 sb zero,19(s0)
return 0;
40008964: 00000513 li a0,0
}
40008968: 01c12083 lw ra,28(sp)
4000896c: 01812403 lw s0,24(sp)
40008970: 01412483 lw s1,20(sp)
40008974: 01012903 lw s2,16(sp)
40008978: 00c12983 lw s3,12(sp)
4000897c: 00812a03 lw s4,8(sp)
40008980: 00412a83 lw s5,4(sp)
40008984: 00012b03 lw s6,0(sp)
40008988: 02010113 addi sp,sp,32
4000898c: 00008067 ret
return -ENOMEM;
40008990: ff400513 li a0,-12 <== NOT EXECUTED
40008994: fd5ff06f j 40008968 <jffs2_do_new_inode+0x12c> <== NOT EXECUTED
400084cc <jffs2_do_read_inode>:
/* Scan the list of all nodes present for this ino, build map of versions, etc. */
int jffs2_do_read_inode(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
uint32_t ino, struct jffs2_raw_inode *latest_node)
{
400084cc: fe010113 addi sp,sp,-32
400084d0: 01212823 sw s2,16(sp)
400084d4: 4001f937 lui s2,0x4001f
400084d8: 00812c23 sw s0,24(sp)
400084dc: 00912a23 sw s1,20(sp)
400084e0: 01312623 sw s3,12(sp)
400084e4: 01412423 sw s4,8(sp)
400084e8: 01512223 sw s5,4(sp)
400084ec: 00112e23 sw ra,28(sp)
400084f0: 00050a93 mv s5,a0
400084f4: 00058413 mv s0,a1
400084f8: 00060493 mv s1,a2
400084fc: 00068993 mv s3,a3
40008500: 00500a13 li s4,5
40008504: ef490913 addi s2,s2,-268 # 4001eef4 <__func__.0+0xc04>
dbg_readinode("read inode #%u\n", ino);
retry_inocache:
spin_lock(&c->inocache_lock);
f->inocache = jffs2_get_ino_cache(c, ino);
40008508: 00048593 mv a1,s1
4000850c: 000a8513 mv a0,s5
40008510: d29fc0ef jal ra,40005238 <jffs2_get_ino_cache>
40008514: 00a42a23 sw a0,20(s0)
if (f->inocache) {
40008518: 06050863 beqz a0,40008588 <jffs2_do_read_inode+0xbc>
/* Check its state. We may need to wait before we can use it */
switch(f->inocache->state) {
4000851c: 00a55683 lhu a3,10(a0)
40008520: 0eda6a63 bltu s4,a3,40008614 <jffs2_do_read_inode+0x148>
40008524: 00269793 slli a5,a3,0x2
40008528: 012787b3 add a5,a5,s2
4000852c: 0007a783 lw a5,0(a5)
40008530: 00078067 jr a5
case INO_STATE_UNCHECKED:
case INO_STATE_CHECKEDABSENT:
f->inocache->state = INO_STATE_READING;
40008534: 00500793 li a5,5
40008538: 00f51523 sh a5,10(a0)
if (!f->inocache) {
JFFS2_ERROR("requested to read a nonexistent ino %u\n", ino);
return -ENOENT;
}
return jffs2_do_read_inode_internal(c, f, latest_node);
4000853c: 00040593 mv a1,s0
}
40008540: 01812403 lw s0,24(sp)
40008544: 01c12083 lw ra,28(sp)
40008548: 01412483 lw s1,20(sp)
4000854c: 01012903 lw s2,16(sp)
40008550: 00812a03 lw s4,8(sp)
return jffs2_do_read_inode_internal(c, f, latest_node);
40008554: 00098613 mv a2,s3
40008558: 000a8513 mv a0,s5
}
4000855c: 00c12983 lw s3,12(sp)
40008560: 00412a83 lw s5,4(sp)
40008564: 02010113 addi sp,sp,32
return jffs2_do_read_inode_internal(c, f, latest_node);
40008568: 8b9fe06f j 40006e20 <jffs2_do_read_inode_internal>
JFFS2_ERROR("Eep. Trying to read_inode #%u when it's already in state %d!\n", ino, f->inocache->state);
4000856c: 4001f5b7 lui a1,0x4001f <== NOT EXECUTED
40008570: 4001f537 lui a0,0x4001f <== NOT EXECUTED
40008574: 00048613 mv a2,s1 <== NOT EXECUTED
40008578: f3458593 addi a1,a1,-204 # 4001ef34 <__func__.10> <== NOT EXECUTED
4000857c: e2050513 addi a0,a0,-480 # 4001ee20 <__func__.0+0xb30> <== NOT EXECUTED
40008580: e20fe0ef jal ra,40006ba0 <jffs2_printk> <== NOT EXECUTED
f->inocache = NULL;
40008584: 00042a23 sw zero,20(s0) <== NOT EXECUTED
if (!f->inocache && ino == 1) {
40008588: 00100793 li a5,1
4000858c: 04f48263 beq s1,a5,400085d0 <jffs2_do_read_inode+0x104>
JFFS2_ERROR("requested to read a nonexistent ino %u\n", ino);
40008590: 4001f5b7 lui a1,0x4001f <== NOT EXECUTED
40008594: 4001f537 lui a0,0x4001f <== NOT EXECUTED
40008598: 00048613 mv a2,s1 <== NOT EXECUTED
4000859c: f3458593 addi a1,a1,-204 # 4001ef34 <__func__.10> <== NOT EXECUTED
400085a0: eb450513 addi a0,a0,-332 # 4001eeb4 <__func__.0+0xbc4> <== NOT EXECUTED
400085a4: dfcfe0ef jal ra,40006ba0 <jffs2_printk> <== NOT EXECUTED
return -ENOENT;
400085a8: ffe00513 li a0,-2 <== NOT EXECUTED
}
400085ac: 01c12083 lw ra,28(sp) <== NOT EXECUTED
400085b0: 01812403 lw s0,24(sp) <== NOT EXECUTED
400085b4: 01412483 lw s1,20(sp) <== NOT EXECUTED
400085b8: 01012903 lw s2,16(sp) <== NOT EXECUTED
400085bc: 00c12983 lw s3,12(sp) <== NOT EXECUTED
400085c0: 00812a03 lw s4,8(sp) <== NOT EXECUTED
400085c4: 00412a83 lw s5,4(sp) <== NOT EXECUTED
400085c8: 02010113 addi sp,sp,32 <== NOT EXECUTED
400085cc: 00008067 ret <== NOT EXECUTED
f->inocache = jffs2_alloc_inode_cache();
400085d0: bd0fc0ef jal ra,400049a0 <jffs2_alloc_inode_cache>
400085d4: 00a42a23 sw a0,20(s0)
if (!f->inocache) {
400085d8: 04050e63 beqz a0,40008634 <jffs2_do_read_inode+0x168> <== NEVER TAKEN
memset(f->inocache, 0, sizeof(struct jffs2_inode_cache));
400085dc: 01800613 li a2,24
400085e0: 00000593 li a1,0
400085e4: 335130ef jal ra,4001c118 <memset>
f->inocache->ino = f->inocache->pino_nlink = 1;
400085e8: 01442583 lw a1,20(s0)
f->inocache->state = INO_STATE_READING;
400085ec: 00500793 li a5,5
jffs2_add_ino_cache(c, f->inocache);
400085f0: 000a8513 mv a0,s5
f->inocache->state = INO_STATE_READING;
400085f4: 00f59523 sh a5,10(a1)
f->inocache->ino = f->inocache->pino_nlink = 1;
400085f8: 0095aa23 sw s1,20(a1)
400085fc: 0095a623 sw s1,12(a1)
f->inocache->nodes = (struct jffs2_raw_node_ref *)f->inocache;
40008600: 00b5a223 sw a1,4(a1)
jffs2_add_ino_cache(c, f->inocache);
40008604: c7dfc0ef jal ra,40005280 <jffs2_add_ino_cache>
if (!f->inocache) {
40008608: 01442783 lw a5,20(s0)
4000860c: f20798e3 bnez a5,4000853c <jffs2_do_read_inode+0x70> <== ALWAYS TAKEN
40008610: f81ff06f j 40008590 <jffs2_do_read_inode+0xc4> <== NOT EXECUTED
BUG();
40008614: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
40008618: 4001f637 lui a2,0x4001f <== NOT EXECUTED
4000861c: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40008620: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
40008624: f3460613 addi a2,a2,-204 # 4001ef34 <__func__.10> <== NOT EXECUTED
40008628: 55a00593 li a1,1370 <== NOT EXECUTED
4000862c: 43850513 addi a0,a0,1080 # 4001e438 <__func__.0+0x148> <== NOT EXECUTED
40008630: 471040ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
JFFS2_ERROR("cannot allocate inocache for root inode\n");
40008634: 4001f5b7 lui a1,0x4001f <== NOT EXECUTED
40008638: 4001f537 lui a0,0x4001f <== NOT EXECUTED
4000863c: f3458593 addi a1,a1,-204 # 4001ef34 <__func__.10> <== NOT EXECUTED
40008640: e7450513 addi a0,a0,-396 # 4001ee74 <__func__.0+0xb84> <== NOT EXECUTED
40008644: d5cfe0ef jal ra,40006ba0 <jffs2_printk> <== NOT EXECUTED
return -ENOMEM;
40008648: ff400513 li a0,-12 <== NOT EXECUTED
4000864c: f61ff06f j 400085ac <jffs2_do_read_inode+0xe0> <== NOT EXECUTED
400099a8 <jffs2_do_unlink>:
int jffs2_do_unlink(struct jffs2_sb_info *c, struct jffs2_inode_info *dir_f,
const char *name, int namelen, struct jffs2_inode_info *dead_f,
uint32_t time)
{
400099a8: fe010113 addi sp,sp,-32
400099ac: 01212823 sw s2,16(sp)
400099b0: 01312623 sw s3,12(sp)
400099b4: 01412423 sw s4,8(sp)
400099b8: 01512223 sw s5,4(sp)
400099bc: 00112e23 sw ra,28(sp)
400099c0: 00812c23 sw s0,24(sp)
400099c4: 00912a23 sw s1,20(sp)
400099c8: 00068913 mv s2,a3
400099cc: 00050a13 mv s4,a0
400099d0: 00060993 mv s3,a2
400099d4: 00070a93 mv s5,a4
while (len--) {
400099d8: 12068e63 beqz a3,40009b14 <jffs2_do_unlink+0x16c> <== NEVER TAKEN
400099dc: 00d60733 add a4,a2,a3
400099e0: 00060793 mv a5,a2
uint32_t hash = 0;
400099e4: 00000413 li s0,0
hash ^= *(name++);
400099e8: 0007c803 lbu a6,0(a5)
hash = (hash << 4) | (hash >> 28);
400099ec: 00441893 slli a7,s0,0x4
400099f0: 01c45413 srli s0,s0,0x1c
400099f4: 01146433 or s0,s0,a7
hash ^= *(name++);
400099f8: 00178793 addi a5,a5,1
400099fc: 00884433 xor s0,a6,s0
while (len--) {
40009a00: fee794e3 bne a5,a4,400099e8 <jffs2_do_unlink+0x40>
jffs2_add_fd_to_list(c, fd, &dir_f->dents);
mutex_unlock(&dir_f->sem);
} else {
uint32_t nhash = full_name_hash(NULL, name, namelen);
fd = dir_f->dents;
40009a04: 00c5a483 lw s1,12(a1)
/* We don't actually want to reserve any space, but we do
want to be holding the alloc_sem when we write to flash */
mutex_lock(&c->alloc_sem);
mutex_lock(&dir_f->sem);
for (fd = dir_f->dents; fd; fd = fd->next) {
40009a08: 00049863 bnez s1,40009a18 <jffs2_do_unlink+0x70> <== ALWAYS TAKEN
40009a0c: 0480006f j 40009a54 <jffs2_do_unlink+0xac> <== NOT EXECUTED
40009a10: 0044a483 lw s1,4(s1)
40009a14: 04048063 beqz s1,40009a54 <jffs2_do_unlink+0xac> <== NEVER TAKEN
if (fd->nhash == nhash &&
40009a18: 0104a783 lw a5,16(s1)
40009a1c: fe879ae3 bne a5,s0,40009a10 <jffs2_do_unlink+0x68>
!memcmp(fd->name, name, namelen) &&
40009a20: 01548513 addi a0,s1,21
40009a24: 00090613 mv a2,s2
40009a28: 00098593 mv a1,s3
40009a2c: 54c120ef jal ra,4001bf78 <memcmp>
!fd->name[namelen]) {
40009a30: 012487b3 add a5,s1,s2
if (fd->nhash == nhash &&
40009a34: fc051ee3 bnez a0,40009a10 <jffs2_do_unlink+0x68> <== NEVER TAKEN
!memcmp(fd->name, name, namelen) &&
40009a38: 0157c783 lbu a5,21(a5)
40009a3c: fc079ae3 bnez a5,40009a10 <jffs2_do_unlink+0x68> <== NEVER TAKEN
jffs2_dbg(1, "Marking old dirent node (ino #%u) @%08x obsolete\n",
fd->ino, ref_offset(fd->raw));
jffs2_mark_node_obsolete(c, fd->raw);
40009a40: 0004a583 lw a1,0(s1)
40009a44: 000a0513 mv a0,s4
40009a48: 854fc0ef jal ra,40005a9c <jffs2_mark_node_obsolete>
/* We don't want to remove it from the list immediately,
because that screws up getdents()/seek() semantics even
more than they're screwed already. Turn it into a
node-less deletion dirent instead -- a placeholder */
fd->raw = NULL;
40009a4c: 0004a023 sw zero,0(s1)
fd->ino = 0;
40009a50: 0004a623 sw zero,12(s1)
}
/* dead_f is NULL if this was a rename not a real unlink */
/* Also catch the !f->inocache case, where there was a dirent
pointing to an inode which didn't exist. */
if (dead_f && dead_f->inocache) {
40009a54: 020a8663 beqz s5,40009a80 <jffs2_do_unlink+0xd8> <== NEVER TAKEN
40009a58: 014aa783 lw a5,20(s5)
40009a5c: 02078263 beqz a5,40009a80 <jffs2_do_unlink+0xd8> <== NEVER TAKEN
mutex_lock(&dead_f->sem);
if (S_ISDIR(OFNI_EDONI_2SFFJ(dead_f)->i_mode)) {
40009a60: fc0aa603 lw a2,-64(s5)
40009a64: 0000f737 lui a4,0xf
40009a68: 000046b7 lui a3,0x4
40009a6c: 00c77733 and a4,a4,a2
40009a70: 04d70063 beq a4,a3,40009ab0 <jffs2_do_unlink+0x108>
jffs2_mark_node_obsolete(c, fd->raw);
jffs2_free_full_dirent(fd);
}
dead_f->inocache->pino_nlink = 0;
} else
dead_f->inocache->pino_nlink--;
40009a74: 0147a703 lw a4,20(a5)
40009a78: fff70713 addi a4,a4,-1 # efff <bsp_section_rodata_size+0x9f2b>
40009a7c: 00e7aa23 sw a4,20(a5)
/* NB: Caller must set inode nlink if appropriate */
mutex_unlock(&dead_f->sem);
}
jffs2_complete_reservation(c);
40009a80: 000a0513 mv a0,s4
40009a84: 804fc0ef jal ra,40005a88 <jffs2_complete_reservation>
return 0;
}
40009a88: 01c12083 lw ra,28(sp)
40009a8c: 01812403 lw s0,24(sp)
40009a90: 01412483 lw s1,20(sp)
40009a94: 01012903 lw s2,16(sp)
40009a98: 00c12983 lw s3,12(sp)
40009a9c: 00812a03 lw s4,8(sp)
40009aa0: 00412a83 lw s5,4(sp)
40009aa4: 00000513 li a0,0
40009aa8: 02010113 addi sp,sp,32
40009aac: 00008067 ret
while (dead_f->dents) {
40009ab0: 00caa403 lw s0,12(s5)
40009ab4: 04040c63 beqz s0,40009b0c <jffs2_do_unlink+0x164> <== ALWAYS TAKEN
pr_warn("Deleting inode #%u with active dentry \"%s\"->ino #%u\n",
40009ab8: 4001f4b7 lui s1,0x4001f <== NOT EXECUTED
40009abc: 0240006f j 40009ae0 <jffs2_do_unlink+0x138> <== NOT EXECUTED
if (fd->raw)
40009ac0: 00042583 lw a1,0(s0) <== NOT EXECUTED
jffs2_mark_node_obsolete(c, fd->raw);
40009ac4: 000a0513 mv a0,s4 <== NOT EXECUTED
if (fd->raw)
40009ac8: 00058463 beqz a1,40009ad0 <jffs2_do_unlink+0x128> <== NOT EXECUTED
jffs2_mark_node_obsolete(c, fd->raw);
40009acc: fd1fb0ef jal ra,40005a9c <jffs2_mark_node_obsolete> <== NOT EXECUTED
jffs2_free_full_dirent(fd);
40009ad0: 00040513 mv a0,s0 <== NOT EXECUTED
40009ad4: da5fa0ef jal ra,40004878 <jffs2_free_full_dirent> <== NOT EXECUTED
while (dead_f->dents) {
40009ad8: 00caa403 lw s0,12(s5) <== NOT EXECUTED
40009adc: 02040663 beqz s0,40009b08 <jffs2_do_unlink+0x160> <== NOT EXECUTED
dead_f->dents = fd->next;
40009ae0: 00442783 lw a5,4(s0) <== NOT EXECUTED
if (fd->ino) {
40009ae4: 00c42683 lw a3,12(s0) <== NOT EXECUTED
dead_f->dents = fd->next;
40009ae8: 00faa623 sw a5,12(s5) <== NOT EXECUTED
if (fd->ino) {
40009aec: fc068ae3 beqz a3,40009ac0 <jffs2_do_unlink+0x118> <== NOT EXECUTED
pr_warn("Deleting inode #%u with active dentry \"%s\"->ino #%u\n",
40009af0: 014aa783 lw a5,20(s5) <== NOT EXECUTED
40009af4: 01540613 addi a2,s0,21 <== NOT EXECUTED
40009af8: 18848513 addi a0,s1,392 # 4001f188 <__func__.9+0x1d0> <== NOT EXECUTED
40009afc: 00c7a583 lw a1,12(a5) <== NOT EXECUTED
40009b00: cfdfe0ef jal ra,400087fc <jffs2_printk> <== NOT EXECUTED
40009b04: fbdff06f j 40009ac0 <jffs2_do_unlink+0x118> <== NOT EXECUTED
dead_f->inocache->pino_nlink = 0;
40009b08: 014aa783 lw a5,20(s5) <== NOT EXECUTED
40009b0c: 0007aa23 sw zero,20(a5)
40009b10: f71ff06f j 40009a80 <jffs2_do_unlink+0xd8>
uint32_t hash = 0;
40009b14: 00000413 li s0,0 <== NOT EXECUTED
40009b18: eedff06f j 40009a04 <jffs2_do_unlink+0x5c> <== NOT EXECUTED
4000b400 <jffs2_erase_pending_blocks>:
{
4000b400: fa010113 addi sp,sp,-96
4000b404: 04812c23 sw s0,88(sp)
4000b408: 05212823 sw s2,80(sp)
4000b40c: 05312623 sw s3,76(sp)
4000b410: 05412423 sw s4,72(sp)
4000b414: 03b12623 sw s11,44(sp)
4000b418: 04112e23 sw ra,92(sp)
4000b41c: 04912a23 sw s1,84(sp)
4000b420: 05512223 sw s5,68(sp)
4000b424: 05612023 sw s6,64(sp)
4000b428: 03712e23 sw s7,60(sp)
4000b42c: 03812c23 sw s8,56(sp)
4000b430: 03912a23 sw s9,52(sp)
4000b434: 03a12823 sw s10,48(sp)
4000b438: 00050d93 mv s11,a0
4000b43c: 00058413 mv s0,a1
while (!list_empty(&c->erase_complete_list) ||
4000b440: 0a050913 addi s2,a0,160
int work_done = 0;
4000b444: 00000993 li s3,0
for (i=0; i<readlen; i += sizeof(unsigned long)) {
/* It's OK. We know it's properly aligned */
unsigned long *datum = ebuf + i;
if (*datum + 1) {
*bad_offset += i;
pr_warn("Newly-erased block contained word 0x%lx at offset 0x%08x\n",
4000b448: 40020a37 lui s4,0x40020
return ( list->next == list );
4000b44c: 0a0dac83 lw s9,160(s11)
while (!list_empty(&c->erase_complete_list) ||
4000b450: 1f2c8863 beq s9,s2,4000b640 <jffs2_erase_pending_blocks+0x240>
ent->prev->next = ent->next;
4000b454: 004ca603 lw a2,4(s9)
4000b458: 000ca683 lw a3,0(s9)
list_move(&jeb->list, &c->erase_checking_list);
4000b45c: 090d8793 addi a5,s11,144
ebuf = kmalloc(PAGE_SIZE, GFP_KERNEL);
4000b460: 00001537 lui a0,0x1
4000b464: 00d62023 sw a3,0(a2)
struct list_head *next = afterthisent->next;
4000b468: 090da703 lw a4,144(s11)
ent->next->prev = ent->prev;
4000b46c: 00c6a223 sw a2,4(a3)
newent->prev = afterthisent;
4000b470: 00fca223 sw a5,4(s9)
newent->next = next;
4000b474: 00eca023 sw a4,0(s9)
afterthisent->next = newent;
4000b478: 099da823 sw s9,144(s11)
next->prev = newent;
4000b47c: 01972223 sw s9,4(a4)
#define MTD_FAIL_ADDR_UNKNOWN -1LL
static inline int do_mtd_point(size_t *retlen, void **ebuf)
{
*retlen = 0;
4000b480: 00012a23 sw zero,20(sp)
4000b484: 5f8020ef jal ra,4000da7c <malloc>
4000b488: 00050c13 mv s8,a0
pr_warn("Failed to allocate page buffer for verifying erase at 0x%08x. Refiling\n",
4000b48c: 00ccab83 lw s7,12(s9)
if (!ebuf) {
4000b490: 2c050e63 beqz a0,4000b76c <jffs2_erase_pending_blocks+0x36c> <== NEVER TAKEN
for (ofs = jeb->offset; ofs < jeb->offset + c->sector_size; ) {
4000b494: 034da603 lw a2,52(s11)
4000b498: 01410d13 addi s10,sp,20
uint32_t readlen = min((uint32_t)PAGE_SIZE, jeb->offset + c->sector_size - ofs);
4000b49c: 000014b7 lui s1,0x1
for (ofs = jeb->offset; ofs < jeb->offset + c->sector_size; ) {
4000b4a0: 00cb8633 add a2,s7,a2
if (*datum + 1) {
4000b4a4: fff00a93 li s5,-1
for (ofs = jeb->offset; ofs < jeb->offset + c->sector_size; ) {
4000b4a8: 10cbfc63 bgeu s7,a2,4000b5c0 <jffs2_erase_pending_blocks+0x1c0>
uint32_t readlen = min((uint32_t)PAGE_SIZE, jeb->offset + c->sector_size - ofs);
4000b4ac: 41760b33 sub s6,a2,s7
4000b4b0: 0164f463 bgeu s1,s6,4000b4b8 <jffs2_erase_pending_blocks+0xb8>
4000b4b4: 00001b37 lui s6,0x1
ret = jffs2_flash_read(c, ofs, readlen, &retlen, ebuf);
4000b4b8: 000c0713 mv a4,s8
4000b4bc: 000d0693 mv a3,s10
4000b4c0: 000b0613 mv a2,s6
4000b4c4: 000b8593 mv a1,s7
4000b4c8: 000d8513 mv a0,s11
4000b4cc: 4ac000ef jal ra,4000b978 <jffs2_flash_read>
if (ret) {
4000b4d0: 44051863 bnez a0,4000b920 <jffs2_erase_pending_blocks+0x520> <== NEVER TAKEN
if (retlen != readlen) {
4000b4d4: 01412683 lw a3,20(sp)
4000b4d8: 46db1463 bne s6,a3,4000b940 <jffs2_erase_pending_blocks+0x540>
4000b4dc: 00000793 li a5,0
4000b4e0: 00c0006f j 4000b4ec <jffs2_erase_pending_blocks+0xec>
for (i=0; i<readlen; i += sizeof(unsigned long)) {
4000b4e4: 00478793 addi a5,a5,4
4000b4e8: 0d67f263 bgeu a5,s6,4000b5ac <jffs2_erase_pending_blocks+0x1ac>
if (*datum + 1) {
4000b4ec: 00fc06b3 add a3,s8,a5
4000b4f0: 0006a683 lw a3,0(a3)
4000b4f4: ff5688e3 beq a3,s5,4000b4e4 <jffs2_erase_pending_blocks+0xe4>
pr_warn("Newly-erased block contained word 0x%lx at offset 0x%08x\n",
4000b4f8: 00fb8633 add a2,s7,a5 <== NOT EXECUTED
4000b4fc: 00068593 mv a1,a3 <== NOT EXECUTED
4000b500: a74a0513 addi a0,s4,-1420 # 4001fa74 <__func__.0+0x218> <== NOT EXECUTED
4000b504: d71ff0ef jal ra,4000b274 <jffs2_printk> <== NOT EXECUTED
ofs += readlen;
cond_resched();
}
ret = 0;
fail:
kfree(ebuf);
4000b508: 000c0513 mv a0,s8 <== NOT EXECUTED
4000b50c: 1c8020ef jal ra,4000d6d4 <free> <== NOT EXECUTED
c->erasing_size -= c->sector_size;
4000b510: 034da583 lw a1,52(s11) <== NOT EXECUTED
4000b514: 02cda703 lw a4,44(s11) <== NOT EXECUTED
c->bad_size += c->sector_size;
4000b518: 030da783 lw a5,48(s11) <== NOT EXECUTED
ent->prev->next = ent->next;
4000b51c: 000ca683 lw a3,0(s9) <== NOT EXECUTED
4000b520: 004ca603 lw a2,4(s9) <== NOT EXECUTED
c->erasing_size -= c->sector_size;
4000b524: 40b70733 sub a4,a4,a1 <== NOT EXECUTED
c->bad_size += c->sector_size;
4000b528: 00b787b3 add a5,a5,a1 <== NOT EXECUTED
c->erasing_size -= c->sector_size;
4000b52c: 02eda623 sw a4,44(s11) <== NOT EXECUTED
c->bad_size += c->sector_size;
4000b530: 02fda823 sw a5,48(s11) <== NOT EXECUTED
4000b534: 00d62023 sw a3,0(a2) <== NOT EXECUTED
struct list_head *next = afterthisent->next;
4000b538: 0b0da703 lw a4,176(s11) <== NOT EXECUTED
c->nr_erasing_blocks--;
4000b53c: 040da783 lw a5,64(s11) <== NOT EXECUTED
ent->next->prev = ent->prev;
4000b540: 00c6a223 sw a2,4(a3) <== NOT EXECUTED
list_move(&jeb->list, &c->bad_list);
4000b544: 0b0d8693 addi a3,s11,176 <== NOT EXECUTED
newent->next = next;
4000b548: 00eca023 sw a4,0(s9) <== NOT EXECUTED
newent->prev = afterthisent;
4000b54c: 00dca223 sw a3,4(s9) <== NOT EXECUTED
afterthisent->next = newent;
4000b550: 0b9da823 sw s9,176(s11) <== NOT EXECUTED
next->prev = newent;
4000b554: 01972223 sw s9,4(a4) <== NOT EXECUTED
c->nr_erasing_blocks--;
4000b558: fff78793 addi a5,a5,-1 <== NOT EXECUTED
4000b55c: 04fda023 sw a5,64(s11) <== NOT EXECUTED
if (!--count) {
4000b560: fff40413 addi s0,s0,-1
work_done++;
4000b564: 00198993 addi s3,s3,1
if (!--count) {
4000b568: ee0412e3 bnez s0,4000b44c <jffs2_erase_pending_blocks+0x4c>
}
4000b56c: 05c12083 lw ra,92(sp)
4000b570: 05812403 lw s0,88(sp)
4000b574: 05412483 lw s1,84(sp)
4000b578: 05012903 lw s2,80(sp)
4000b57c: 04812a03 lw s4,72(sp)
4000b580: 04412a83 lw s5,68(sp)
4000b584: 04012b03 lw s6,64(sp)
4000b588: 03c12b83 lw s7,60(sp)
4000b58c: 03812c03 lw s8,56(sp)
4000b590: 03412c83 lw s9,52(sp)
4000b594: 03012d03 lw s10,48(sp)
4000b598: 02c12d83 lw s11,44(sp)
4000b59c: 00098513 mv a0,s3
4000b5a0: 04c12983 lw s3,76(sp)
4000b5a4: 06010113 addi sp,sp,96
4000b5a8: 00008067 ret
for (ofs = jeb->offset; ofs < jeb->offset + c->sector_size; ) {
4000b5ac: 00cca783 lw a5,12(s9)
4000b5b0: 034da683 lw a3,52(s11)
ofs += readlen;
4000b5b4: 016b8bb3 add s7,s7,s6
for (ofs = jeb->offset; ofs < jeb->offset + c->sector_size; ) {
4000b5b8: 00d78633 add a2,a5,a3
4000b5bc: eecbe8e3 bltu s7,a2,4000b4ac <jffs2_erase_pending_blocks+0xac>
kfree(ebuf);
4000b5c0: 000c0513 mv a0,s8
4000b5c4: 110020ef jal ra,4000d6d4 <free>
/* Write the erase complete marker */
jffs2_dbg(1, "Writing erased marker to block at 0x%08x\n", jeb->offset);
bad_offset = jeb->offset;
/* Cleanmarker in oob area or no cleanmarker at all ? */
if (jffs2_cleanmarker_oob(c) || c->cleanmarker_size == 0) {
4000b5c8: 014da783 lw a5,20(s11)
4000b5cc: 26079c63 bnez a5,4000b844 <jffs2_erase_pending_blocks+0x444> <== ALWAYS TAKEN
goto filebad;
}
}
/* Everything else got zeroed before the erase */
jeb->free_size = c->sector_size;
4000b5d0: 034da683 lw a3,52(s11) <== NOT EXECUTED
mutex_lock(&c->erase_free_sem);
spin_lock(&c->erase_completion_lock);
c->erasing_size -= c->sector_size;
4000b5d4: 02cda703 lw a4,44(s11) <== NOT EXECUTED
c->free_size += c->sector_size;
4000b5d8: 028da783 lw a5,40(s11) <== NOT EXECUTED
jeb->free_size = c->sector_size;
4000b5dc: 02dca023 sw a3,32(s9) <== NOT EXECUTED
c->erasing_size -= c->sector_size;
4000b5e0: 40d70733 sub a4,a4,a3 <== NOT EXECUTED
c->free_size += c->sector_size;
4000b5e4: 00d787b3 add a5,a5,a3 <== NOT EXECUTED
c->erasing_size -= c->sector_size;
4000b5e8: 02eda623 sw a4,44(s11) <== NOT EXECUTED
c->free_size += c->sector_size;
4000b5ec: 02fda423 sw a5,40(s11) <== NOT EXECUTED
ent->prev->next = ent->next;
4000b5f0: 004ca603 lw a2,4(s9)
4000b5f4: 000ca683 lw a3,0(s9)
/* Account for cleanmarker now, if it's in-band */
if (c->cleanmarker_size && !jffs2_cleanmarker_oob(c))
jffs2_link_node_ref(c, jeb, jeb->offset | REF_NORMAL, c->cleanmarker_size, NULL);
list_move_tail(&jeb->list, &c->free_list);
c->nr_erasing_blocks--;
4000b5f8: 040da703 lw a4,64(s11)
c->nr_free_blocks++;
4000b5fc: 03cda783 lw a5,60(s11)
4000b600: 00d62023 sw a3,0(a2)
ent->next->prev = ent->prev;
4000b604: 00c6a223 sw a2,4(a3)
struct list_head *prev = beforethisent->prev;
4000b608: 0acda683 lw a3,172(s11)
list_move_tail(&jeb->list, &c->free_list);
4000b60c: 0a8d8613 addi a2,s11,168
newent->next = beforethisent;
4000b610: 00cca023 sw a2,0(s9)
newent->prev = prev;
4000b614: 00dca223 sw a3,4(s9)
beforethisent->prev = newent;
4000b618: 0b9da623 sw s9,172(s11)
prev->next = newent;
4000b61c: 0196a023 sw s9,0(a3)
c->nr_erasing_blocks--;
4000b620: fff70713 addi a4,a4,-1
c->nr_free_blocks++;
4000b624: 00178793 addi a5,a5,1
c->nr_erasing_blocks--;
4000b628: 04eda023 sw a4,64(s11)
c->nr_free_blocks++;
4000b62c: 02fdae23 sw a5,60(s11)
jffs2_dbg_acct_sanity_check_nolock(c, jeb);
4000b630: 000c8593 mv a1,s9
4000b634: 000d8513 mv a0,s11
4000b638: 814ff0ef jal ra,4000a64c <__jffs2_dbg_acct_sanity_check_nolock>
jffs2_dbg_acct_paranoia_check_nolock(c, jeb);
spin_unlock(&c->erase_completion_lock);
mutex_unlock(&c->erase_free_sem);
wake_up(&c->erase_wait);
4000b63c: f25ff06f j 4000b560 <jffs2_erase_pending_blocks+0x160>
return ( list->next == list );
4000b640: 098dac83 lw s9,152(s11)
!list_empty(&c->erase_pending_list)) {
4000b644: 098d8493 addi s1,s11,152
while (!list_empty(&c->erase_complete_list) ||
4000b648: f39482e3 beq s1,s9,4000b56c <jffs2_erase_pending_blocks+0x16c>
ent->prev->next = ent->next;
4000b64c: 004ca303 lw t1,4(s9)
4000b650: 000ca883 lw a7,0(s9)
c->wasted_size -= jeb->wasted_size;
4000b654: 01ccaf83 lw t6,28(s9)
c->free_size -= jeb->free_size;
4000b658: 020caf03 lw t5,32(s9)
c->used_size -= jeb->used_size;
4000b65c: 014cae83 lw t4,20(s9)
c->dirty_size -= jeb->dirty_size;
4000b660: 018cae03 lw t3,24(s9)
c->erasing_size += c->sector_size;
4000b664: 02cda503 lw a0,44(s11)
c->wasted_size -= jeb->wasted_size;
4000b668: 024da583 lw a1,36(s11)
c->free_size -= jeb->free_size;
4000b66c: 028da603 lw a2,40(s11)
c->used_size -= jeb->used_size;
4000b670: 01cda683 lw a3,28(s11)
c->dirty_size -= jeb->dirty_size;
4000b674: 020da703 lw a4,32(s11)
c->erasing_size += c->sector_size;
4000b678: 034da283 lw t0,52(s11)
4000b67c: 01132023 sw a7,0(t1)
ent->next->prev = ent->prev;
4000b680: 0068a223 sw t1,4(a7)
4000b684: 00550533 add a0,a0,t0
c->wasted_size -= jeb->wasted_size;
4000b688: 41f585b3 sub a1,a1,t6
c->used_size -= jeb->used_size;
4000b68c: 41d686b3 sub a3,a3,t4
c->dirty_size -= jeb->dirty_size;
4000b690: 41c70733 sub a4,a4,t3
c->free_size -= jeb->free_size;
4000b694: 41e60633 sub a2,a2,t5
c->erasing_size += c->sector_size;
4000b698: 02ada623 sw a0,44(s11)
c->wasted_size -= jeb->wasted_size;
4000b69c: 02bda223 sw a1,36(s11)
c->used_size -= jeb->used_size;
4000b6a0: 00ddae23 sw a3,28(s11)
c->dirty_size -= jeb->dirty_size;
4000b6a4: 02eda023 sw a4,32(s11)
c->free_size -= jeb->free_size;
4000b6a8: 02cda423 sw a2,40(s11)
jffs2_free_jeb_node_refs(c, jeb);
4000b6ac: 000c8593 mv a1,s9
4000b6b0: 000d8513 mv a0,s11
jeb->wasted_size = jeb->used_size = jeb->dirty_size = jeb->free_size = 0;
4000b6b4: 020ca023 sw zero,32(s9)
4000b6b8: 000cac23 sw zero,24(s9)
4000b6bc: 000caa23 sw zero,20(s9)
4000b6c0: 000cae23 sw zero,28(s9)
jffs2_free_jeb_node_refs(c, jeb);
4000b6c4: bf1ff0ef jal ra,4000b2b4 <jffs2_free_jeb_node_refs>
struct list_head *next = afterthisent->next;
4000b6c8: 088da703 lw a4,136(s11)
list_add(&jeb->list, &c->erasing_list);
4000b6cc: 088d8693 addi a3,s11,136
newent->prev = afterthisent;
4000b6d0: 00dca223 sw a3,4(s9)
newent->next = next;
4000b6d4: 00eca023 sw a4,0(s9)
afterthisent->next = newent;
4000b6d8: 099da423 sw s9,136(s11)
next->prev = newent;
4000b6dc: 01972223 sw s9,4(a4)
ret = jffs2_flash_erase(c, jeb);
4000b6e0: 000c8593 mv a1,s9
4000b6e4: 000d8513 mv a0,s11
4000b6e8: 4f4000ef jal ra,4000bbdc <jffs2_flash_erase>
if (!ret) {
4000b6ec: 10050863 beqz a0,4000b7fc <jffs2_erase_pending_blocks+0x3fc> <== ALWAYS TAKEN
if (ret == -ENOMEM || ret == -EAGAIN) {
4000b6f0: 00c50713 addi a4,a0,12 # 100c <_ISR_Stack_size+0xc> <== NOT EXECUTED
4000b6f4: 00100693 li a3,1 <== NOT EXECUTED
4000b6f8: 0ae6fe63 bgeu a3,a4,4000b7b4 <jffs2_erase_pending_blocks+0x3b4> <== NOT EXECUTED
if (ret == -EROFS)
4000b6fc: fe200713 li a4,-30 <== NOT EXECUTED
bad_offset = jeb->offset;
4000b700: 00cca583 lw a1,12(s9) <== NOT EXECUTED
if (ret == -EROFS)
4000b704: 12e50863 beq a0,a4,4000b834 <jffs2_erase_pending_blocks+0x434> <== NOT EXECUTED
pr_warn("Erase at 0x%08x failed immediately: errno %d\n",
4000b708: 400207b7 lui a5,0x40020 <== NOT EXECUTED
4000b70c: 00050613 mv a2,a0 <== NOT EXECUTED
4000b710: b9078513 addi a0,a5,-1136 # 4001fb90 <__func__.0+0x334> <== NOT EXECUTED
4000b714: b61ff0ef jal ra,4000b274 <jffs2_printk> <== NOT EXECUTED
c->erasing_size -= c->sector_size;
4000b718: 034da503 lw a0,52(s11) <== NOT EXECUTED
4000b71c: 02cda683 lw a3,44(s11) <== NOT EXECUTED
c->bad_size += c->sector_size;
4000b720: 030da703 lw a4,48(s11) <== NOT EXECUTED
ent->prev->next = ent->next;
4000b724: 000ca603 lw a2,0(s9) <== NOT EXECUTED
4000b728: 004ca583 lw a1,4(s9) <== NOT EXECUTED
c->erasing_size -= c->sector_size;
4000b72c: 40a686b3 sub a3,a3,a0 <== NOT EXECUTED
c->bad_size += c->sector_size;
4000b730: 00a70733 add a4,a4,a0 <== NOT EXECUTED
c->erasing_size -= c->sector_size;
4000b734: 02dda623 sw a3,44(s11) <== NOT EXECUTED
c->bad_size += c->sector_size;
4000b738: 02eda823 sw a4,48(s11) <== NOT EXECUTED
4000b73c: 00c5a023 sw a2,0(a1) <== NOT EXECUTED
struct list_head *next = afterthisent->next;
4000b740: 0b0da683 lw a3,176(s11) <== NOT EXECUTED
c->nr_erasing_blocks--;
4000b744: 040da703 lw a4,64(s11) <== NOT EXECUTED
ent->next->prev = ent->prev;
4000b748: 00b62223 sw a1,4(a2) <== NOT EXECUTED
list_move(&jeb->list, &c->bad_list);
4000b74c: 0b0d8613 addi a2,s11,176 <== NOT EXECUTED
newent->next = next;
4000b750: 00dca023 sw a3,0(s9) <== NOT EXECUTED
newent->prev = afterthisent;
4000b754: 00cca223 sw a2,4(s9) <== NOT EXECUTED
afterthisent->next = newent;
4000b758: 0b9da823 sw s9,176(s11) <== NOT EXECUTED
next->prev = newent;
4000b75c: 0196a223 sw s9,4(a3) <== NOT EXECUTED
c->nr_erasing_blocks--;
4000b760: fff70793 addi a5,a4,-1 <== NOT EXECUTED
4000b764: 04fda023 sw a5,64(s11) <== NOT EXECUTED
#define init_waitqueue_head(wait) do{} while (0)
#define add_wait_queue(wait,new_wait) do{} while (0)
#define remove_wait_queue(wait,old_wait) do{} while (0)
#define DECLARE_WAITQUEUE(wait,current) do{} while (0)
static inline void wake_up(wait_queue_head_t *erase_wait) { }
4000b768: ce5ff06f j 4000b44c <jffs2_erase_pending_blocks+0x4c> <== NOT EXECUTED
pr_warn("Failed to allocate page buffer for verifying erase at 0x%08x. Refiling\n",
4000b76c: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000b770: 000b8593 mv a1,s7 <== NOT EXECUTED
4000b774: 98450513 addi a0,a0,-1660 # 4001f984 <__func__.0+0x128> <== NOT EXECUTED
4000b778: afdff0ef jal ra,4000b274 <jffs2_printk> <== NOT EXECUTED
rtems_jffs2_flash_control *fc = sb->s_flash_control;
4000b77c: 0e4da503 lw a0,228(s11) <== NOT EXECUTED
if (fc->trigger_garbage_collection != NULL) {
4000b780: 02052783 lw a5,32(a0) <== NOT EXECUTED
4000b784: 00078463 beqz a5,4000b78c <jffs2_erase_pending_blocks+0x38c> <== NOT EXECUTED
(*fc->trigger_garbage_collection)(fc);
4000b788: 000780e7 jalr a5 <== NOT EXECUTED
ent->prev->next = ent->next;
4000b78c: 004ca683 lw a3,4(s9) <== NOT EXECUTED
4000b790: 000ca703 lw a4,0(s9) <== NOT EXECUTED
4000b794: 00e6a023 sw a4,0(a3) <== NOT EXECUTED
struct list_head *next = afterthisent->next;
4000b798: 0a0da783 lw a5,160(s11) <== NOT EXECUTED
ent->next->prev = ent->prev;
4000b79c: 00d72223 sw a3,4(a4) <== NOT EXECUTED
newent->prev = afterthisent;
4000b7a0: 012ca223 sw s2,4(s9) <== NOT EXECUTED
newent->next = next;
4000b7a4: 00fca023 sw a5,0(s9) <== NOT EXECUTED
afterthisent->next = newent;
4000b7a8: 0b9da023 sw s9,160(s11) <== NOT EXECUTED
next->prev = newent;
4000b7ac: 0197a223 sw s9,4(a5) <== NOT EXECUTED
mutex_lock(&c->erase_free_sem);
spin_lock(&c->erase_completion_lock);
jffs2_garbage_collect_trigger(c);
list_move(&jeb->list, &c->erase_complete_list);
spin_unlock(&c->erase_completion_lock);
mutex_unlock(&c->erase_free_sem);
4000b7b0: db1ff06f j 4000b560 <jffs2_erase_pending_blocks+0x160> <== NOT EXECUTED
ent->prev->next = ent->next;
4000b7b4: 000ca683 lw a3,0(s9) <== NOT EXECUTED
4000b7b8: 004ca503 lw a0,4(s9) <== NOT EXECUTED
c->erasing_size -= c->sector_size;
4000b7bc: 034da703 lw a4,52(s11) <== NOT EXECUTED
4000b7c0: 02cda603 lw a2,44(s11) <== NOT EXECUTED
4000b7c4: 00d52023 sw a3,0(a0) <== NOT EXECUTED
struct list_head *next = afterthisent->next;
4000b7c8: 098da583 lw a1,152(s11) <== NOT EXECUTED
ent->next->prev = ent->prev;
4000b7cc: 00a6a223 sw a0,4(a3) <== NOT EXECUTED
c->dirty_size += c->sector_size;
4000b7d0: 020da683 lw a3,32(s11) <== NOT EXECUTED
newent->next = next;
4000b7d4: 00bca023 sw a1,0(s9) <== NOT EXECUTED
newent->prev = afterthisent;
4000b7d8: 009ca223 sw s1,4(s9) <== NOT EXECUTED
afterthisent->next = newent;
4000b7dc: 099dac23 sw s9,152(s11) <== NOT EXECUTED
next->prev = newent;
4000b7e0: 0195a223 sw s9,4(a1) <== NOT EXECUTED
c->erasing_size -= c->sector_size;
4000b7e4: 40e60633 sub a2,a2,a4 <== NOT EXECUTED
c->dirty_size += c->sector_size;
4000b7e8: 00e686b3 add a3,a3,a4 <== NOT EXECUTED
c->erasing_size -= c->sector_size;
4000b7ec: 02cda623 sw a2,44(s11) <== NOT EXECUTED
c->dirty_size += c->sector_size;
4000b7f0: 02dda023 sw a3,32(s11) <== NOT EXECUTED
jeb->dirty_size = c->sector_size;
4000b7f4: 00ecac23 sw a4,24(s9) <== NOT EXECUTED
return;
4000b7f8: c55ff06f j 4000b44c <jffs2_erase_pending_blocks+0x4c> <== NOT EXECUTED
ent->prev->next = ent->next;
4000b7fc: 004ca683 lw a3,4(s9)
4000b800: 000ca703 lw a4,0(s9)
rtems_jffs2_flash_control *fc = sb->s_flash_control;
4000b804: 0e4da503 lw a0,228(s11)
4000b808: 00e6a023 sw a4,0(a3)
ent->next->prev = ent->prev;
4000b80c: 00d72223 sw a3,4(a4)
struct list_head *prev = beforethisent->prev;
4000b810: 0a4da703 lw a4,164(s11)
if (fc->trigger_garbage_collection != NULL) {
4000b814: 02052683 lw a3,32(a0)
newent->next = beforethisent;
4000b818: 012ca023 sw s2,0(s9)
newent->prev = prev;
4000b81c: 00eca223 sw a4,4(s9)
beforethisent->prev = newent;
4000b820: 0b9da223 sw s9,164(s11)
prev->next = newent;
4000b824: 01972023 sw s9,0(a4)
4000b828: c20682e3 beqz a3,4000b44c <jffs2_erase_pending_blocks+0x4c> <== ALWAYS TAKEN
(*fc->trigger_garbage_collection)(fc);
4000b82c: 000680e7 jalr a3 <== NOT EXECUTED
4000b830: c1dff06f j 4000b44c <jffs2_erase_pending_blocks+0x4c> <== NOT EXECUTED
pr_warn("Erase at 0x%08x failed immediately: -EROFS. Is the sector locked?\n",
4000b834: 400207b7 lui a5,0x40020 <== NOT EXECUTED
4000b838: b4078513 addi a0,a5,-1216 # 4001fb40 <__func__.0+0x2e4> <== NOT EXECUTED
4000b83c: a39ff0ef jal ra,4000b274 <jffs2_printk> <== NOT EXECUTED
4000b840: ed9ff06f j 4000b718 <jffs2_erase_pending_blocks+0x318> <== NOT EXECUTED
struct jffs2_unknown_node marker = {
4000b844: 00002737 lui a4,0x2
4000b848: 000026b7 lui a3,0x2
4000b84c: 00370713 addi a4,a4,3 # 2003 <bsp_section_rtemsstack_size+0x3>
4000b850: 98568693 addi a3,a3,-1659 # 1985 <_ISR_Stack_size+0x985>
jffs2_prealloc_raw_node_refs(c, jeb, 1);
4000b854: 00100613 li a2,1
4000b858: 000c8593 mv a1,s9
4000b85c: 000d8513 mv a0,s11
struct jffs2_unknown_node marker = {
4000b860: 00d11a23 sh a3,20(sp)
4000b864: 00e11b23 sh a4,22(sp)
4000b868: 00f12c23 sw a5,24(sp)
marker.hdr_crc = cpu_to_je32(crc32(0, &marker, sizeof(struct jffs2_unknown_node)-4));
4000b86c: 01410d13 addi s10,sp,20
struct jffs2_unknown_node marker = {
4000b870: 00012e23 sw zero,28(sp)
jffs2_prealloc_raw_node_refs(c, jeb, 1);
4000b874: 838f90ef jal ra,400048ac <jffs2_prealloc_raw_node_refs>
marker.hdr_crc = cpu_to_je32(crc32(0, &marker, sizeof(struct jffs2_unknown_node)-4));
4000b878: 00800613 li a2,8
4000b87c: 000d0593 mv a1,s10
4000b880: 00000513 li a0,0
4000b884: c0dfe0ef jal ra,4000a490 <cyg_crc32_accumulate>
ret = jffs2_flash_direct_writev(c, vecs, 1, jeb->offset, &retlen);
4000b888: 00cca683 lw a3,12(s9)
marker.hdr_crc = cpu_to_je32(crc32(0, &marker, sizeof(struct jffs2_unknown_node)-4));
4000b88c: 00050313 mv t1,a0
vecs[0].iov_len = sizeof(marker);
4000b890: 00c00493 li s1,12
ret = jffs2_flash_direct_writev(c, vecs, 1, jeb->offset, &retlen);
4000b894: 00810793 addi a5,sp,8
4000b898: 00000713 li a4,0
4000b89c: 00100613 li a2,1
4000b8a0: 00c10593 addi a1,sp,12
4000b8a4: 000d8513 mv a0,s11
marker.hdr_crc = cpu_to_je32(crc32(0, &marker, sizeof(struct jffs2_unknown_node)-4));
4000b8a8: 00612e23 sw t1,28(sp)
vecs[0].iov_base = (unsigned char *) ▮
4000b8ac: 01a12623 sw s10,12(sp)
vecs[0].iov_len = sizeof(marker);
4000b8b0: 00912823 sw s1,16(sp)
ret = jffs2_flash_direct_writev(c, vecs, 1, jeb->offset, &retlen);
4000b8b4: 0f4000ef jal ra,4000b9a8 <jffs2_flash_direct_writev>
if (ret || retlen != sizeof(marker)) {
4000b8b8: 0a051463 bnez a0,4000b960 <jffs2_erase_pending_blocks+0x560> <== NEVER TAKEN
4000b8bc: 00812683 lw a3,8(sp)
4000b8c0: 00968e63 beq a3,s1,4000b8dc <jffs2_erase_pending_blocks+0x4dc>
pr_warn("Short write to newly-erased block at 0x%08x: Wanted %zd, got %zd\n",
4000b8c4: 00cca583 lw a1,12(s9) <== NOT EXECUTED
4000b8c8: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000b8cc: 00c00613 li a2,12 <== NOT EXECUTED
4000b8d0: af450513 addi a0,a0,-1292 # 4001faf4 <__func__.0+0x298> <== NOT EXECUTED
4000b8d4: 9a1ff0ef jal ra,4000b274 <jffs2_printk> <== NOT EXECUTED
goto filebad;
4000b8d8: c39ff06f j 4000b510 <jffs2_erase_pending_blocks+0x110> <== NOT EXECUTED
jeb->free_size = c->sector_size;
4000b8dc: 034da603 lw a2,52(s11)
c->erasing_size -= c->sector_size;
4000b8e0: 02cda703 lw a4,44(s11)
c->free_size += c->sector_size;
4000b8e4: 028da783 lw a5,40(s11)
if (c->cleanmarker_size && !jffs2_cleanmarker_oob(c))
4000b8e8: 014da683 lw a3,20(s11)
c->erasing_size -= c->sector_size;
4000b8ec: 40c70733 sub a4,a4,a2
jeb->free_size = c->sector_size;
4000b8f0: 02cca023 sw a2,32(s9)
c->free_size += c->sector_size;
4000b8f4: 00c787b3 add a5,a5,a2
c->erasing_size -= c->sector_size;
4000b8f8: 02eda623 sw a4,44(s11)
c->free_size += c->sector_size;
4000b8fc: 02fda423 sw a5,40(s11)
if (c->cleanmarker_size && !jffs2_cleanmarker_oob(c))
4000b900: ce0688e3 beqz a3,4000b5f0 <jffs2_erase_pending_blocks+0x1f0> <== NEVER TAKEN
jffs2_link_node_ref(c, jeb, jeb->offset | REF_NORMAL, c->cleanmarker_size, NULL);
4000b904: 00cca603 lw a2,12(s9)
4000b908: 00000713 li a4,0
4000b90c: 000c8593 mv a1,s9
4000b910: 00366613 ori a2,a2,3
4000b914: 000d8513 mv a0,s11
4000b918: c51f90ef jal ra,40005568 <jffs2_link_node_ref>
4000b91c: cd5ff06f j 4000b5f0 <jffs2_erase_pending_blocks+0x1f0>
pr_warn("Read of newly-erased block at 0x%08x failed: %d. Putting on bad_list\n",
4000b920: 400207b7 lui a5,0x40020 <== NOT EXECUTED
4000b924: 00050613 mv a2,a0 <== NOT EXECUTED
4000b928: 000b8593 mv a1,s7 <== NOT EXECUTED
4000b92c: 9d878513 addi a0,a5,-1576 # 4001f9d8 <__func__.0+0x17c> <== NOT EXECUTED
4000b930: 945ff0ef jal ra,4000b274 <jffs2_printk> <== NOT EXECUTED
kfree(ebuf);
4000b934: 000c0513 mv a0,s8 <== NOT EXECUTED
4000b938: 59d010ef jal ra,4000d6d4 <free> <== NOT EXECUTED
return ret;
4000b93c: bd5ff06f j 4000b510 <jffs2_erase_pending_blocks+0x110> <== NOT EXECUTED
pr_warn("Short read from newly-erased block at 0x%08x. Wanted %d, got %zd\n",
4000b940: 400207b7 lui a5,0x40020 <== NOT EXECUTED
4000b944: 000b0613 mv a2,s6 <== NOT EXECUTED
4000b948: 000b8593 mv a1,s7 <== NOT EXECUTED
4000b94c: a2878513 addi a0,a5,-1496 # 4001fa28 <__func__.0+0x1cc> <== NOT EXECUTED
4000b950: 925ff0ef jal ra,4000b274 <jffs2_printk> <== NOT EXECUTED
kfree(ebuf);
4000b954: 000c0513 mv a0,s8 <== NOT EXECUTED
4000b958: 57d010ef jal ra,4000d6d4 <free> <== NOT EXECUTED
return ret;
4000b95c: bb5ff06f j 4000b510 <jffs2_erase_pending_blocks+0x110> <== NOT EXECUTED
pr_warn("Write clean marker to block at 0x%08x failed: %d\n",
4000b960: 00cca583 lw a1,12(s9) <== NOT EXECUTED
4000b964: 400207b7 lui a5,0x40020 <== NOT EXECUTED
4000b968: 00050613 mv a2,a0 <== NOT EXECUTED
4000b96c: ab878513 addi a0,a5,-1352 # 4001fab8 <__func__.0+0x25c> <== NOT EXECUTED
4000b970: 905ff0ef jal ra,4000b274 <jffs2_printk> <== NOT EXECUTED
4000b974: b9dff06f j 4000b510 <jffs2_erase_pending_blocks+0x110> <== NOT EXECUTED
4000b9a8 <jffs2_flash_direct_writev>:
}
int
jffs2_flash_direct_writev(struct jffs2_sb_info *c, const struct iovec *vecs,
unsigned long count, loff_t to, size_t * retlen)
{
4000b9a8: ec010113 addi sp,sp,-320
4000b9ac: 11912a23 sw s9,276(sp)
4000b9b0: 12112e23 sw ra,316(sp)
4000b9b4: 12812c23 sw s0,312(sp)
4000b9b8: 12912a23 sw s1,308(sp)
4000b9bc: 13212823 sw s2,304(sp)
4000b9c0: 13312623 sw s3,300(sp)
4000b9c4: 13412423 sw s4,296(sp)
4000b9c8: 13512223 sw s5,292(sp)
4000b9cc: 13612023 sw s6,288(sp)
4000b9d0: 11712e23 sw s7,284(sp)
4000b9d4: 11812c23 sw s8,280(sp)
4000b9d8: 11a12823 sw s10,272(sp)
4000b9dc: 11b12623 sw s11,268(sp)
4000b9e0: 00078c93 mv s9,a5
unsigned long i;
size_t totlen = 0, thislen;
int ret = 0;
for (i = 0; i < count; i++) {
4000b9e4: 1e060263 beqz a2,4000bbc8 <jffs2_flash_direct_writev+0x220> <== NEVER TAKEN
4000b9e8: 00060d93 mv s11,a2
4000b9ec: 00050b13 mv s6,a0
4000b9f0: 00058c13 mv s8,a1
4000b9f4: 00068d13 mv s10,a3
4000b9f8: 00458493 addi s1,a1,4
size_t totlen = 0, thislen;
4000b9fc: 00000a93 li s5,0
for (i = 0; i < count; i++) {
4000ba00: 00000993 li s3,0
if (((vecs[i].iov_len & (sizeof (int) - 1))) ||
(((unsigned long) vecs[i].
iov_base & (sizeof (unsigned long) - 1)))) {
// are there iov's after this one? Or is it so much we'd need
// to do multiple writes anyway?
if ((i + 1) < count || vecs[i].iov_len > 256) {
4000ba04: 10000b93 li s7,256
4000ba08: 04c0006f j 4000ba54 <jffs2_flash_direct_writev+0xac>
(((unsigned long) vecs[i].
4000ba0c: ffc4a703 lw a4,-4(s1) # ffc <bsp_section_start_size+0xfb8>
return (*fc->write)(fc, write_buffer_offset, read_buffer, size);
4000ba10: 000d0593 mv a1,s10
4000ba14: 00040693 mv a3,s0
iov_base & (sizeof (unsigned long) - 1)))) {
4000ba18: 00377813 andi a6,a4,3
if (((vecs[i].iov_len & (sizeof (int) - 1))) ||
4000ba1c: 04081c63 bnez a6,4000ba74 <jffs2_flash_direct_writev+0xcc>
rtems_jffs2_flash_control *fc = sb->s_flash_control;
4000ba20: 0e4b2503 lw a0,228(s6) # 10e4 <_ISR_Stack_size+0xe4>
return (*fc->write)(fc, write_buffer_offset, read_buffer, size);
4000ba24: 00070613 mv a2,a4
4000ba28: 00c52783 lw a5,12(a0)
4000ba2c: 000780e7 jalr a5
4000ba30: 00050a13 mv s4,a0
for (i = 0; i < count; i++) {
4000ba34: 00198993 addi s3,s3,1
} // else
} else
ret =
jffs2_flash_write(c, to, vecs[i].iov_len, &thislen,
vecs[i].iov_base);
totlen += thislen;
4000ba38: 008a8ab3 add s5,s5,s0
if (ret || thislen != vecs[i].iov_len)
4000ba3c: 060a1e63 bnez s4,4000bab8 <jffs2_flash_direct_writev+0x110> <== NEVER TAKEN
4000ba40: 0004a703 lw a4,0(s1)
break;
to += vecs[i].iov_len;
4000ba44: 008d0d33 add s10,s10,s0
for (i = 0; i < count; i++) {
4000ba48: 00848493 addi s1,s1,8
if (ret || thislen != vecs[i].iov_len)
4000ba4c: 06871663 bne a4,s0,4000bab8 <jffs2_flash_direct_writev+0x110>
for (i = 0; i < count; i++) {
4000ba50: 073d8463 beq s11,s3,4000bab8 <jffs2_flash_direct_writev+0x110>
if (((vecs[i].iov_len & (sizeof (int) - 1))) ||
4000ba54: 0004a403 lw s0,0(s1)
memcpy(buf, vecs[i].iov_base, lentowrite);
4000ba58: 00010513 mv a0,sp
if ((i + 1) < count || vecs[i].iov_len > 256) {
4000ba5c: 00198793 addi a5,s3,1
lentowrite += sizeof (int) - 1;
4000ba60: 00340913 addi s2,s0,3
lentowrite &= ~(sizeof (int) - 1);
4000ba64: ffc97913 andi s2,s2,-4
if (((vecs[i].iov_len & (sizeof (int) - 1))) ||
4000ba68: 00347713 andi a4,s0,3
memcpy(buf, vecs[i].iov_base, lentowrite);
4000ba6c: 00090613 mv a2,s2
if (((vecs[i].iov_len & (sizeof (int) - 1))) ||
4000ba70: f8070ee3 beqz a4,4000ba0c <jffs2_flash_direct_writev+0x64>
if ((i + 1) < count || vecs[i].iov_len > 256) {
4000ba74: 09b7e663 bltu a5,s11,4000bb00 <jffs2_flash_direct_writev+0x158>
4000ba78: 088be463 bltu s7,s0,4000bb00 <jffs2_flash_direct_writev+0x158>
memcpy(buf, vecs[i].iov_base, lentowrite);
4000ba7c: ffc4a583 lw a1,-4(s1)
4000ba80: 570100ef jal ra,4001bff0 <memcpy>
rtems_jffs2_flash_control *fc = sb->s_flash_control;
4000ba84: 0e4b2503 lw a0,228(s6)
return (*fc->write)(fc, write_buffer_offset, read_buffer, size);
4000ba88: 000d0593 mv a1,s10
4000ba8c: 00090693 mv a3,s2
4000ba90: 00c52703 lw a4,12(a0)
4000ba94: 00010613 mv a2,sp
4000ba98: 000700e7 jalr a4
4000ba9c: 0004a403 lw s0,0(s1)
4000baa0: 00050a13 mv s4,a0
if (thislen > vecs[i].iov_len)
4000baa4: f88978e3 bgeu s2,s0,4000ba34 <jffs2_flash_direct_writev+0x8c>
4000baa8: 00090413 mv s0,s2 <== NOT EXECUTED
for (i = 0; i < count; i++) {
4000baac: 00198993 addi s3,s3,1 <== NOT EXECUTED
totlen += thislen;
4000bab0: 008a8ab3 add s5,s5,s0 <== NOT EXECUTED
if (ret || thislen != vecs[i].iov_len)
4000bab4: f80a06e3 beqz s4,4000ba40 <jffs2_flash_direct_writev+0x98> <== NOT EXECUTED
}
writev_out:
if (retlen)
4000bab8: 000c8463 beqz s9,4000bac0 <jffs2_flash_direct_writev+0x118> <== NEVER TAKEN
*retlen = totlen;
4000babc: 015ca023 sw s5,0(s9)
return ret;
}
4000bac0: 13c12083 lw ra,316(sp)
4000bac4: 13812403 lw s0,312(sp)
4000bac8: 13412483 lw s1,308(sp)
4000bacc: 13012903 lw s2,304(sp)
4000bad0: 12c12983 lw s3,300(sp)
4000bad4: 12412a83 lw s5,292(sp)
4000bad8: 12012b03 lw s6,288(sp)
4000badc: 11c12b83 lw s7,284(sp)
4000bae0: 11812c03 lw s8,280(sp)
4000bae4: 11412c83 lw s9,276(sp)
4000bae8: 11012d03 lw s10,272(sp)
4000baec: 10c12d83 lw s11,268(sp)
4000baf0: 000a0513 mv a0,s4
4000baf4: 12812a03 lw s4,296(sp)
4000baf8: 14010113 addi sp,sp,320
4000bafc: 00008067 ret
for (j = i; j < count; j++)
4000bb00: 0bb9f863 bgeu s3,s11,4000bbb0 <jffs2_flash_direct_writev+0x208>
4000bb04: 00399993 slli s3,s3,0x3
4000bb08: 013c09b3 add s3,s8,s3
4000bb0c: 00098713 mv a4,s3
4000bb10: 00040693 mv a3,s0
4000bb14: 00000a13 li s4,0
4000bb18: 00c0006f j 4000bb24 <jffs2_flash_direct_writev+0x17c>
totvecsize += vecs[j].iov_len;
4000bb1c: 00472683 lw a3,4(a4) <== NOT EXECUTED
4000bb20: 00178793 addi a5,a5,1 <== NOT EXECUTED
4000bb24: 00da0a33 add s4,s4,a3
for (j = i; j < count; j++)
4000bb28: 00870713 addi a4,a4,8
4000bb2c: fefd98e3 bne s11,a5,4000bb1c <jffs2_flash_direct_writev+0x174>
sizetomalloc = totvecsize + sizeof (int) - 1;
4000bb30: 003a0913 addi s2,s4,3
sizetomalloc &= ~(sizeof (int) - 1);
4000bb34: ffc97913 andi s2,s2,-4
cbuf = (char *) malloc(sizetomalloc);
4000bb38: 00090513 mv a0,s2
4000bb3c: 741010ef jal ra,4000da7c <malloc>
4000bb40: 00050493 mv s1,a0
if (!cbuf) {
4000bb44: 08050863 beqz a0,4000bbd4 <jffs2_flash_direct_writev+0x22c> <== NEVER TAKEN
4000bb48: 003d9793 slli a5,s11,0x3
4000bb4c: 00fc0c33 add s8,s8,a5
4000bb50: 00050793 mv a5,a0
4000bb54: 0080006f j 4000bb5c <jffs2_flash_direct_writev+0x1b4>
memcpy(cbufptr, vecs[j].iov_base,
4000bb58: 0049a403 lw s0,4(s3) <== NOT EXECUTED
4000bb5c: 0009a583 lw a1,0(s3)
4000bb60: 00078513 mv a0,a5
4000bb64: 00040613 mv a2,s0
4000bb68: 488100ef jal ra,4001bff0 <memcpy>
for (j = i; j < count; j++) {
4000bb6c: 00898993 addi s3,s3,8
cbufptr += vecs[j].iov_len;
4000bb70: 008507b3 add a5,a0,s0
for (j = i; j < count; j++) {
4000bb74: ff3c12e3 bne s8,s3,4000bb58 <jffs2_flash_direct_writev+0x1b0>
totlen += thislen;
4000bb78: 03496863 bltu s2,s4,4000bba8 <jffs2_flash_direct_writev+0x200>
4000bb7c: 014a8ab3 add s5,s5,s4
rtems_jffs2_flash_control *fc = sb->s_flash_control;
4000bb80: 0e4b2503 lw a0,228(s6)
return (*fc->write)(fc, write_buffer_offset, read_buffer, size);
4000bb84: 00090693 mv a3,s2
4000bb88: 00048613 mv a2,s1
4000bb8c: 00c52783 lw a5,12(a0)
4000bb90: 000d0593 mv a1,s10
4000bb94: 000780e7 jalr a5
4000bb98: 00050a13 mv s4,a0
free(cbuf);
4000bb9c: 00048513 mv a0,s1
4000bba0: 335010ef jal ra,4000d6d4 <free>
goto writev_out;
4000bba4: f15ff06f j 4000bab8 <jffs2_flash_direct_writev+0x110>
totlen += thislen;
4000bba8: 00090a13 mv s4,s2 <== NOT EXECUTED
4000bbac: fd1ff06f j 4000bb7c <jffs2_flash_direct_writev+0x1d4> <== NOT EXECUTED
cbuf = (char *) malloc(sizetomalloc);
4000bbb0: 00000513 li a0,0 <== NOT EXECUTED
4000bbb4: 6c9010ef jal ra,4000da7c <malloc> <== NOT EXECUTED
4000bbb8: 00050493 mv s1,a0 <== NOT EXECUTED
if (!cbuf) {
4000bbbc: 00050c63 beqz a0,4000bbd4 <jffs2_flash_direct_writev+0x22c> <== NOT EXECUTED
cbuf = (char *) malloc(sizetomalloc);
4000bbc0: 00000913 li s2,0 <== NOT EXECUTED
4000bbc4: fbdff06f j 4000bb80 <jffs2_flash_direct_writev+0x1d8> <== NOT EXECUTED
size_t totlen = 0, thislen;
4000bbc8: 00000a93 li s5,0 <== NOT EXECUTED
for (i = 0; i < count; i++) {
4000bbcc: 00000a13 li s4,0 <== NOT EXECUTED
4000bbd0: ee9ff06f j 4000bab8 <jffs2_flash_direct_writev+0x110> <== NOT EXECUTED
ret = -ENOMEM;
4000bbd4: ff400a13 li s4,-12 <== NOT EXECUTED
4000bbd8: ee1ff06f j 4000bab8 <jffs2_flash_direct_writev+0x110> <== NOT EXECUTED
4000b990 <jffs2_flash_write>:
int jffs2_flash_write(struct jffs2_sb_info * c,
cyg_uint32 write_buffer_offset, const size_t size,
size_t * return_size, unsigned char *read_buffer)
{
const struct super_block *sb = OFNI_BS_2SFFJ(c);
rtems_jffs2_flash_control *fc = sb->s_flash_control;
4000b990: 0e452503 lw a0,228(a0) <== NOT EXECUTED
*return_size = size;
return (*fc->write)(fc, write_buffer_offset, read_buffer, size);
4000b994: 00c52803 lw a6,12(a0) <== NOT EXECUTED
*return_size = size;
4000b998: 00c6a023 sw a2,0(a3) <== NOT EXECUTED
return (*fc->write)(fc, write_buffer_offset, read_buffer, size);
4000b99c: 00060693 mv a3,a2 <== NOT EXECUTED
4000b9a0: 00070613 mv a2,a4 <== NOT EXECUTED
4000b9a4: 00080067 jr a6 <== NOT EXECUTED
40005340 <jffs2_free_ino_caches>:
for (i=0; i < c->inocache_hashsize; i++) {
40005340: 0c052683 lw a3,192(a0)
40005344: 06d05e63 blez a3,400053c0 <jffs2_free_ino_caches+0x80> <== NEVER TAKEN
this = c->inocache_list[i];
40005348: 0c452703 lw a4,196(a0)
{
4000534c: fe010113 addi sp,sp,-32
40005350: 00912a23 sw s1,20(sp)
40005354: 01312623 sw s3,12(sp)
40005358: 00112e23 sw ra,28(sp)
4000535c: 00812c23 sw s0,24(sp)
40005360: 01212823 sw s2,16(sp)
40005364: 00050993 mv s3,a0
for (i=0; i < c->inocache_hashsize; i++) {
40005368: 00000493 li s1,0
this = c->inocache_list[i];
4000536c: 00249913 slli s2,s1,0x2
40005370: 012707b3 add a5,a4,s2
40005374: 0007a403 lw s0,0(a5)
while (this) {
40005378: 02040063 beqz s0,40005398 <jffs2_free_ino_caches+0x58>
next = this->next;
4000537c: 00040513 mv a0,s0
40005380: 01042403 lw s0,16(s0)
jffs2_free_inode_cache(this);
40005384: e24ff0ef jal ra,400049a8 <jffs2_free_inode_cache>
while (this) {
40005388: fe041ae3 bnez s0,4000537c <jffs2_free_ino_caches+0x3c> <== NEVER TAKEN
c->inocache_list[i] = NULL;
4000538c: 0c49a703 lw a4,196(s3)
40005390: 0c09a683 lw a3,192(s3)
40005394: 012707b3 add a5,a4,s2
40005398: 0007a023 sw zero,0(a5)
for (i=0; i < c->inocache_hashsize; i++) {
4000539c: 00148493 addi s1,s1,1
400053a0: fcd4c6e3 blt s1,a3,4000536c <jffs2_free_ino_caches+0x2c>
}
400053a4: 01c12083 lw ra,28(sp)
400053a8: 01812403 lw s0,24(sp)
400053ac: 01412483 lw s1,20(sp)
400053b0: 01012903 lw s2,16(sp)
400053b4: 00c12983 lw s3,12(sp)
400053b8: 02010113 addi sp,sp,32
400053bc: 00008067 ret
400053c0: 00008067 ret <== NOT EXECUTED
4000b2b4 <jffs2_free_jeb_node_refs>:
jffs2_del_ino_cache(c, ic);
}
}
void jffs2_free_jeb_node_refs(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb)
{
4000b2b4: fd010113 addi sp,sp,-48
4000b2b8: 02812423 sw s0,40(sp)
struct jffs2_raw_node_ref *block, *ref;
jffs2_dbg(1, "Freeing all node refs for eraseblock offset 0x%08x\n",
jeb->offset);
block = ref = jeb->first_node;
4000b2bc: 0285a403 lw s0,40(a1)
{
4000b2c0: 01412c23 sw s4,24(sp)
4000b2c4: 02112623 sw ra,44(sp)
4000b2c8: 02912223 sw s1,36(sp)
4000b2cc: 03212023 sw s2,32(sp)
4000b2d0: 01312e23 sw s3,28(sp)
4000b2d4: 01512a23 sw s5,20(sp)
4000b2d8: 01612823 sw s6,16(sp)
4000b2dc: 01712623 sw s7,12(sp)
4000b2e0: 00058a13 mv s4,a1
while (ref) {
4000b2e4: 0a040063 beqz s0,4000b384 <jffs2_free_jeb_node_refs+0xd0>
4000b2e8: 00050b13 mv s6,a0
4000b2ec: 00040b93 mv s7,s0
if (ref->flash_offset == REF_LINK_NODE) {
4000b2f0: fff00993 li s3,-1
ref = ref->next_in_ino;
jffs2_free_refblock(block);
block = ref;
continue;
}
if (ref->flash_offset != REF_EMPTY_NODE && ref->next_in_ino)
4000b2f4: ffe00a93 li s5,-2
JFFS2_WARNING("inode_cache/xattr_datum/xattr_ref"
4000b2f8: 40020937 lui s2,0x40020
4000b2fc: 400204b7 lui s1,0x40020
if (ref->flash_offset == REF_LINK_NODE) {
4000b300: 00442783 lw a5,4(s0)
4000b304: 07378863 beq a5,s3,4000b374 <jffs2_free_jeb_node_refs+0xc0>
if (ref->flash_offset != REF_EMPTY_NODE && ref->next_in_ino)
4000b308: 07578063 beq a5,s5,4000b368 <jffs2_free_jeb_node_refs+0xb4>
4000b30c: 00042783 lw a5,0(s0)
4000b310: 04078c63 beqz a5,4000b368 <jffs2_free_jeb_node_refs+0xb4> <== ALWAYS TAKEN
if (SECTOR_ADDR((*prev)->flash_offset) == jeb->offset) {
4000b314: 034b2803 lw a6,52(s6) <== NOT EXECUTED
4000b318: 00ca2883 lw a7,12(s4) <== NOT EXECUTED
prev = &ref->next_in_ino;
4000b31c: 00040613 mv a2,s0 <== NOT EXECUTED
if (SECTOR_ADDR((*prev)->flash_offset) == jeb->offset) {
4000b320: 41000833 neg a6,a6 <== NOT EXECUTED
struct jffs2_inode_cache *ic = NULL;
4000b324: 00000593 li a1,0 <== NOT EXECUTED
if (!(*prev)->next_in_ino) {
4000b328: 0007a683 lw a3,0(a5) <== NOT EXECUTED
4000b32c: 02068063 beqz a3,4000b34c <jffs2_free_jeb_node_refs+0x98> <== NOT EXECUTED
if (SECTOR_ADDR((*prev)->flash_offset) == jeb->offset) {
4000b330: 0047a703 lw a4,4(a5) <== NOT EXECUTED
4000b334: 00e87733 and a4,a6,a4 <== NOT EXECUTED
4000b338: 09170063 beq a4,a7,4000b3b8 <jffs2_free_jeb_node_refs+0x104> <== NOT EXECUTED
prev = &((*prev)->next_in_ino);
4000b33c: 00078613 mv a2,a5 <== NOT EXECUTED
4000b340: 00068793 mv a5,a3 <== NOT EXECUTED
if (!(*prev)->next_in_ino) {
4000b344: 0007a683 lw a3,0(a5) <== NOT EXECUTED
4000b348: fe0694e3 bnez a3,4000b330 <jffs2_free_jeb_node_refs+0x7c> <== NOT EXECUTED
prev = &ic->nodes;
4000b34c: 00478613 addi a2,a5,4 <== NOT EXECUTED
continue;
4000b350: 00078593 mv a1,a5 <== NOT EXECUTED
4000b354: 0047a783 lw a5,4(a5) <== NOT EXECUTED
4000b358: fd1ff06f j 4000b328 <jffs2_free_jeb_node_refs+0x74> <== NOT EXECUTED
if (!ic) {
4000b35c: 08058463 beqz a1,4000b3e4 <jffs2_free_jeb_node_refs+0x130> <== NOT EXECUTED
if (ic->nodes == (void *)ic && ic->pino_nlink == 0)
4000b360: 0045a783 lw a5,4(a1) <== NOT EXECUTED
4000b364: 06b78463 beq a5,a1,4000b3cc <jffs2_free_jeb_node_refs+0x118> <== NOT EXECUTED
jffs2_remove_node_refs_from_ino_list(c, ref, jeb);
/* else it was a non-inode node or already removed, so don't bother */
ref++;
4000b368: 00840413 addi s0,s0,8
if (ref->flash_offset == REF_LINK_NODE) {
4000b36c: 00442783 lw a5,4(s0)
4000b370: f9379ce3 bne a5,s3,4000b308 <jffs2_free_jeb_node_refs+0x54>
ref = ref->next_in_ino;
4000b374: 00042403 lw s0,0(s0)
jffs2_free_refblock(block);
4000b378: 000b8513 mv a0,s7
4000b37c: e14f90ef jal ra,40004990 <jffs2_free_refblock>
while (ref) {
4000b380: 06041c63 bnez s0,4000b3f8 <jffs2_free_jeb_node_refs+0x144>
}
jeb->first_node = jeb->last_node = NULL;
}
4000b384: 02c12083 lw ra,44(sp)
4000b388: 02812403 lw s0,40(sp)
jeb->first_node = jeb->last_node = NULL;
4000b38c: 020a2623 sw zero,44(s4)
4000b390: 020a2423 sw zero,40(s4)
}
4000b394: 02412483 lw s1,36(sp)
4000b398: 02012903 lw s2,32(sp)
4000b39c: 01c12983 lw s3,28(sp)
4000b3a0: 01812a03 lw s4,24(sp)
4000b3a4: 01412a83 lw s5,20(sp)
4000b3a8: 01012b03 lw s6,16(sp)
4000b3ac: 00c12b83 lw s7,12(sp)
4000b3b0: 03010113 addi sp,sp,48
4000b3b4: 00008067 ret
*prev = this->next_in_ino;
4000b3b8: 00d62023 sw a3,0(a2) <== NOT EXECUTED
this->next_in_ino = NULL;
4000b3bc: 0007a023 sw zero,0(a5) <== NOT EXECUTED
if (this == ref)
4000b3c0: f8878ee3 beq a5,s0,4000b35c <jffs2_free_jeb_node_refs+0xa8> <== NOT EXECUTED
if (!(*prev)->next_in_ino) {
4000b3c4: 00062783 lw a5,0(a2) <== NOT EXECUTED
4000b3c8: f61ff06f j 4000b328 <jffs2_free_jeb_node_refs+0x74> <== NOT EXECUTED
if (ic->nodes == (void *)ic && ic->pino_nlink == 0)
4000b3cc: 0145a783 lw a5,20(a1) <== NOT EXECUTED
4000b3d0: f8079ce3 bnez a5,4000b368 <jffs2_free_jeb_node_refs+0xb4> <== NOT EXECUTED
jffs2_del_ino_cache(c, ic);
4000b3d4: 000b0513 mv a0,s6 <== NOT EXECUTED
4000b3d8: f01f90ef jal ra,400052d8 <jffs2_del_ino_cache> <== NOT EXECUTED
ref++;
4000b3dc: 00840413 addi s0,s0,8 <== NOT EXECUTED
while (ref) {
4000b3e0: f8dff06f j 4000b36c <jffs2_free_jeb_node_refs+0xb8> <== NOT EXECUTED
JFFS2_WARNING("inode_cache/xattr_datum/xattr_ref"
4000b3e4: bc890593 addi a1,s2,-1080 # 4001fbc8 <__func__.0> <== NOT EXECUTED
4000b3e8: 92848513 addi a0,s1,-1752 # 4001f928 <__func__.0+0xcc> <== NOT EXECUTED
4000b3ec: e89ff0ef jal ra,4000b274 <jffs2_printk> <== NOT EXECUTED
ref++;
4000b3f0: 00840413 addi s0,s0,8 <== NOT EXECUTED
while (ref) {
4000b3f4: f79ff06f j 4000b36c <jffs2_free_jeb_node_refs+0xb8> <== NOT EXECUTED
4000b3f8: 00040b93 mv s7,s0
4000b3fc: f05ff06f j 4000b300 <jffs2_free_jeb_node_refs+0x4c>
400053c4 <jffs2_free_raw_node_refs>:
for (i=0; i<c->nr_blocks; i++) {
400053c4: 05052683 lw a3,80(a0)
400053c8: 0a068a63 beqz a3,4000547c <jffs2_free_raw_node_refs+0xb8> <== NEVER TAKEN
{
400053cc: fe010113 addi sp,sp,-32
400053d0: 00812c23 sw s0,24(sp)
400053d4: 00912a23 sw s1,20(sp)
400053d8: 01212823 sw s2,16(sp)
400053dc: 01412423 sw s4,8(sp)
this = c->blocks[i].first_node;
400053e0: 05452783 lw a5,84(a0)
{
400053e4: 00112e23 sw ra,28(sp)
400053e8: 01312623 sw s3,12(sp)
400053ec: 00050413 mv s0,a0
this = c->blocks[i].first_node;
400053f0: 00000493 li s1,0
for (i=0; i<c->nr_blocks; i++) {
400053f4: 00000a13 li s4,0
if (this[REFS_PER_BLOCK].flash_offset == REF_LINK_NODE)
400053f8: fff00913 li s2,-1
400053fc: 0280006f j 40005424 <jffs2_free_raw_node_refs+0x60>
jffs2_free_refblock(this);
40005400: d90ff0ef jal ra,40004990 <jffs2_free_refblock> <== NOT EXECUTED
c->blocks[i].first_node = c->blocks[i].last_node = NULL;
40005404: 05442783 lw a5,84(s0) <== NOT EXECUTED
40005408: 05042683 lw a3,80(s0) <== NOT EXECUTED
4000540c: 00978733 add a4,a5,s1 <== NOT EXECUTED
40005410: 02072623 sw zero,44(a4)
40005414: 02072423 sw zero,40(a4)
for (i=0; i<c->nr_blocks; i++) {
40005418: 001a0a13 addi s4,s4,1
4000541c: 03448493 addi s1,s1,52
40005420: 02da7663 bgeu s4,a3,4000544c <jffs2_free_raw_node_refs+0x88>
this = c->blocks[i].first_node;
40005424: 00978733 add a4,a5,s1
40005428: 02872503 lw a0,40(a4)
while (this) {
4000542c: fe0502e3 beqz a0,40005410 <jffs2_free_raw_node_refs+0x4c> <== NEVER TAKEN
if (this[REFS_PER_BLOCK].flash_offset == REF_LINK_NODE)
40005430: 0f452783 lw a5,244(a0)
40005434: fd2796e3 bne a5,s2,40005400 <jffs2_free_raw_node_refs+0x3c>
next = this[REFS_PER_BLOCK].next_in_ino;
40005438: 0f052983 lw s3,240(a0)
jffs2_free_refblock(this);
4000543c: d54ff0ef jal ra,40004990 <jffs2_free_refblock>
while (this) {
40005440: 02098663 beqz s3,4000546c <jffs2_free_raw_node_refs+0xa8>
40005444: 00098513 mv a0,s3
40005448: fe9ff06f j 40005430 <jffs2_free_raw_node_refs+0x6c>
}
4000544c: 01c12083 lw ra,28(sp)
40005450: 01812403 lw s0,24(sp)
40005454: 01412483 lw s1,20(sp)
40005458: 01012903 lw s2,16(sp)
4000545c: 00c12983 lw s3,12(sp)
40005460: 00812a03 lw s4,8(sp)
40005464: 02010113 addi sp,sp,32
40005468: 00008067 ret
c->blocks[i].first_node = c->blocks[i].last_node = NULL;
4000546c: 05442783 lw a5,84(s0)
40005470: 05042683 lw a3,80(s0)
40005474: 00978733 add a4,a5,s1
40005478: f99ff06f j 40005410 <jffs2_free_raw_node_refs+0x4c>
4000547c: 00008067 ret <== NOT EXECUTED
40003564 <jffs2_garbage_collect_pass>:
{
40003564: f5010113 addi sp,sp,-176
40003568: 09a12023 sw s10,128(sp)
if (!c->unchecked_size)
4000356c: 03852d03 lw s10,56(a0)
{
40003570: 0a912223 sw s1,164(sp)
40003574: 0a112623 sw ra,172(sp)
40003578: 0a812423 sw s0,168(sp)
4000357c: 0b212023 sw s2,160(sp)
40003580: 09312e23 sw s3,156(sp)
40003584: 09412c23 sw s4,152(sp)
40003588: 09512a23 sw s5,148(sp)
4000358c: 09612823 sw s6,144(sp)
40003590: 09712623 sw s7,140(sp)
40003594: 09812423 sw s8,136(sp)
40003598: 09912223 sw s9,132(sp)
4000359c: 07b12e23 sw s11,124(sp)
400035a0: 00050493 mv s1,a0
if (ic->state != INO_STATE_CHECKEDABSENT &&
400035a4: 00100693 li a3,1
if (!c->unchecked_size)
400035a8: 140d0a63 beqz s10,400036fc <jffs2_garbage_collect_pass+0x198> <== ALWAYS TAKEN
want_ino = c->check_ino;
400035ac: 0084a703 lw a4,8(s1) <== NOT EXECUTED
for (bucket = c->check_ino % c->inocache_hashsize ; bucket < c->inocache_hashsize; bucket++) {
400035b0: 0c04a883 lw a7,192(s1) <== NOT EXECUTED
400035b4: 03177333 remu t1,a4,a7 <== NOT EXECUTED
400035b8: 05135663 bge t1,a7,40003604 <jffs2_garbage_collect_pass+0xa0> <== NOT EXECUTED
400035bc: 0c44a503 lw a0,196(s1) <== NOT EXECUTED
400035c0: 00231793 slli a5,t1,0x2 <== NOT EXECUTED
400035c4: 00f50533 add a0,a0,a5 <== NOT EXECUTED
for (ic = c->inocache_list[bucket]; ic; ic = ic->next) {
400035c8: 00052403 lw s0,0(a0) <== NOT EXECUTED
400035cc: 02040463 beqz s0,400035f4 <jffs2_garbage_collect_pass+0x90> <== NOT EXECUTED
if (ic->ino < want_ino)
400035d0: 00c42583 lw a1,12(s0) <== NOT EXECUTED
400035d4: 00e5ec63 bltu a1,a4,400035ec <jffs2_garbage_collect_pass+0x88> <== NOT EXECUTED
if (ic->state != INO_STATE_CHECKEDABSENT &&
400035d8: 00a45603 lhu a2,10(s0) <== NOT EXECUTED
400035dc: ffe60793 addi a5,a2,-2 <== NOT EXECUTED
400035e0: 01079793 slli a5,a5,0x10 <== NOT EXECUTED
400035e4: 0107d793 srli a5,a5,0x10 <== NOT EXECUTED
400035e8: 08f6e663 bltu a3,a5,40003674 <jffs2_garbage_collect_pass+0x110> <== NOT EXECUTED
for (ic = c->inocache_list[bucket]; ic; ic = ic->next) {
400035ec: 01042403 lw s0,16(s0) <== NOT EXECUTED
400035f0: fe0410e3 bnez s0,400035d0 <jffs2_garbage_collect_pass+0x6c> <== NOT EXECUTED
for (bucket = c->check_ino % c->inocache_hashsize ; bucket < c->inocache_hashsize; bucket++) {
400035f4: 00130313 addi t1,t1,1 <== NOT EXECUTED
400035f8: 00450513 addi a0,a0,4 <== NOT EXECUTED
want_ino = 0;
400035fc: 00000713 li a4,0 <== NOT EXECUTED
for (bucket = c->check_ino % c->inocache_hashsize ; bucket < c->inocache_hashsize; bucket++) {
40003600: fc6894e3 bne a7,t1,400035c8 <jffs2_garbage_collect_pass+0x64> <== NOT EXECUTED
c->check_ino = ((c->highest_ino + c->inocache_hashsize + 1) &
40003604: 0044a783 lw a5,4(s1) <== NOT EXECUTED
~c->inocache_hashsize) - 1;
40003608: fff8c713 not a4,a7 <== NOT EXECUTED
pr_crit("Checked all inodes but still 0x%x bytes of unchecked space?\n",
4000360c: 4001d537 lui a0,0x4001d <== NOT EXECUTED
c->check_ino = ((c->highest_ino + c->inocache_hashsize + 1) &
40003610: 00178793 addi a5,a5,1 <== NOT EXECUTED
40003614: 011787b3 add a5,a5,a7 <== NOT EXECUTED
40003618: 00e7f7b3 and a5,a5,a4 <== NOT EXECUTED
~c->inocache_hashsize) - 1;
4000361c: fff78793 addi a5,a5,-1 <== NOT EXECUTED
c->check_ino = ((c->highest_ino + c->inocache_hashsize + 1) &
40003620: 00f4a423 sw a5,8(s1) <== NOT EXECUTED
pr_crit("Checked all inodes but still 0x%x bytes of unchecked space?\n",
40003624: 000d0593 mv a1,s10 <== NOT EXECUTED
40003628: 4e850513 addi a0,a0,1256 # 4001d4e8 <rtems_jffs2_ops+0x360> <== NOT EXECUTED
4000362c: b09ff0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
return -ENOSPC;
40003630: fe400d93 li s11,-28 <== NOT EXECUTED
}
40003634: 0ac12083 lw ra,172(sp)
40003638: 0a812403 lw s0,168(sp)
4000363c: 0a412483 lw s1,164(sp)
40003640: 0a012903 lw s2,160(sp)
40003644: 09c12983 lw s3,156(sp)
40003648: 09812a03 lw s4,152(sp)
4000364c: 09412a83 lw s5,148(sp)
40003650: 09012b03 lw s6,144(sp)
40003654: 08c12b83 lw s7,140(sp)
40003658: 08812c03 lw s8,136(sp)
4000365c: 08412c83 lw s9,132(sp)
40003660: 08012d03 lw s10,128(sp)
40003664: 000d8513 mv a0,s11
40003668: 07c12d83 lw s11,124(sp)
4000366c: 0b010113 addi sp,sp,176
40003670: 00008067 ret
if (!ic->pino_nlink) {
40003674: 01442783 lw a5,20(s0) <== NOT EXECUTED
c->check_ino = ic->ino + c->inocache_hashsize;
40003678: 00b888b3 add a7,a7,a1 <== NOT EXECUTED
4000367c: 0114a423 sw a7,8(s1) <== NOT EXECUTED
if (!ic->pino_nlink) {
40003680: f20784e3 beqz a5,400035a8 <jffs2_garbage_collect_pass+0x44> <== NOT EXECUTED
switch(ic->state) {
40003684: 00400793 li a5,4 <== NOT EXECUTED
40003688: 40f60c63 beq a2,a5,40003aa0 <jffs2_garbage_collect_pass+0x53c> <== NOT EXECUTED
4000368c: 02c7ec63 bltu a5,a2,400036c4 <jffs2_garbage_collect_pass+0x160> <== NOT EXECUTED
40003690: 40061863 bnez a2,40003aa0 <jffs2_garbage_collect_pass+0x53c> <== NOT EXECUTED
ic->state = INO_STATE_CHECKING;
40003694: 00100793 li a5,1 <== NOT EXECUTED
40003698: 00f41523 sh a5,10(s0) <== NOT EXECUTED
ret = jffs2_do_crccheck_inode(c, ic);
4000369c: 00040593 mv a1,s0 <== NOT EXECUTED
400036a0: 00048513 mv a0,s1 <== NOT EXECUTED
400036a4: 0d4050ef jal ra,40008778 <jffs2_do_crccheck_inode> <== NOT EXECUTED
400036a8: 00050d93 mv s11,a0 <== NOT EXECUTED
if (ret)
400036ac: 02051663 bnez a0,400036d8 <jffs2_garbage_collect_pass+0x174> <== NOT EXECUTED
jffs2_set_inocache_state(c, ic, INO_STATE_CHECKEDABSENT);
400036b0: 00300613 li a2,3 <== NOT EXECUTED
400036b4: 00040593 mv a1,s0 <== NOT EXECUTED
400036b8: 00048513 mv a0,s1 <== NOT EXECUTED
400036bc: 375010ef jal ra,40005230 <jffs2_set_inocache_state> <== NOT EXECUTED
return ret;
400036c0: f75ff06f j 40003634 <jffs2_garbage_collect_pass+0xd0> <== NOT EXECUTED
switch(ic->state) {
400036c4: 00500793 li a5,5 <== NOT EXECUTED
400036c8: 3af61863 bne a2,a5,40003a78 <jffs2_garbage_collect_pass+0x514> <== NOT EXECUTED
c->check_ino = ic->ino;
400036cc: 00b4a423 sw a1,8(s1) <== NOT EXECUTED
return 0;
400036d0: 00000d93 li s11,0 <== NOT EXECUTED
400036d4: f61ff06f j 40003634 <jffs2_garbage_collect_pass+0xd0> <== NOT EXECUTED
pr_warn("Returned error for crccheck of ino #%u. Expect badness...\n",
400036d8: 00c42583 lw a1,12(s0) <== NOT EXECUTED
400036dc: 4001d537 lui a0,0x4001d <== NOT EXECUTED
400036e0: 59850513 addi a0,a0,1432 # 4001d598 <rtems_jffs2_ops+0x410> <== NOT EXECUTED
400036e4: a51ff0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
jffs2_set_inocache_state(c, ic, INO_STATE_CHECKEDABSENT);
400036e8: 00300613 li a2,3 <== NOT EXECUTED
400036ec: 00040593 mv a1,s0 <== NOT EXECUTED
400036f0: 00048513 mv a0,s1 <== NOT EXECUTED
400036f4: 33d010ef jal ra,40005230 <jffs2_set_inocache_state> <== NOT EXECUTED
return ret;
400036f8: f3dff06f j 40003634 <jffs2_garbage_collect_pass+0xd0> <== NOT EXECUTED
if (!list_empty(&c->erase_complete_list) ||
400036fc: 0a04a703 lw a4,160(s1)
40003700: 0a048793 addi a5,s1,160
40003704: 08f70e63 beq a4,a5,400037a0 <jffs2_garbage_collect_pass+0x23c>
if (jffs2_erase_pending_blocks(c, 1))
40003708: 00100593 li a1,1
4000370c: 00048513 mv a0,s1
40003710: 4f1070ef jal ra,4000b400 <jffs2_erase_pending_blocks>
40003714: 0a051663 bnez a0,400037c0 <jffs2_garbage_collect_pass+0x25c> <== ALWAYS TAKEN
jeb = c->gcblock;
40003718: 05c4a903 lw s2,92(s1)
if (!jeb)
4000371c: 0e090c63 beqz s2,40003814 <jffs2_garbage_collect_pass+0x2b0>
if (!jeb->used_size) {
40003720: 01492783 lw a5,20(s2)
40003724: 0a078263 beqz a5,400037c8 <jffs2_garbage_collect_pass+0x264> <== NEVER TAKEN
raw = jeb->gc_node;
40003728: 03092983 lw s3,48(s2)
while(ref_obsolete(raw)) {
4000372c: 00100613 li a2,1
static inline struct jffs2_raw_node_ref *ref_next(struct jffs2_raw_node_ref *ref)
{
ref++;
/* Link to another block of refs */
if (ref->flash_offset == REF_LINK_NODE) {
40003730: fff00693 li a3,-1
40003734: 0049a783 lw a5,4(s3)
if (!ref)
return ref;
}
/* End of chain */
if (ref->flash_offset == REF_EMPTY_NODE)
40003738: ffe00713 li a4,-2
4000373c: 0037f793 andi a5,a5,3
40003740: 1ec79c63 bne a5,a2,40003938 <jffs2_garbage_collect_pass+0x3d4>
if (ref->flash_offset == REF_LINK_NODE) {
40003744: 00c9a783 lw a5,12(s3)
40003748: 06d78463 beq a5,a3,400037b0 <jffs2_garbage_collect_pass+0x24c>
ref++;
4000374c: 00898993 addi s3,s3,8
if (ref->flash_offset == REF_EMPTY_NODE)
40003750: fee796e3 bne a5,a4,4000373c <jffs2_garbage_collect_pass+0x1d8>
pr_warn("eep. End of raw list while still supposedly nodes to GC\n");
40003754: 4001d537 lui a0,0x4001d <== NOT EXECUTED
40003758: 61c50513 addi a0,a0,1564 # 4001d61c <rtems_jffs2_ops+0x494> <== NOT EXECUTED
4000375c: 9d9ff0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
pr_warn("erase block at 0x%08x. free_size 0x%08x, dirty_size 0x%08x, used_size 0x%08x\n",
40003760: 01892683 lw a3,24(s2) <== NOT EXECUTED
40003764: 02092603 lw a2,32(s2) <== NOT EXECUTED
40003768: 00c92583 lw a1,12(s2) <== NOT EXECUTED
4000376c: 01492703 lw a4,20(s2) <== NOT EXECUTED
40003770: 4001d537 lui a0,0x4001d <== NOT EXECUTED
40003774: 66050513 addi a0,a0,1632 # 4001d660 <rtems_jffs2_ops+0x4d8> <== NOT EXECUTED
40003778: 9bdff0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
BUG();
4000377c: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
40003780: 4001e637 lui a2,0x4001e <== NOT EXECUTED
40003784: 4001d537 lui a0,0x4001d <== NOT EXECUTED
jeb->gc_node = raw;
40003788: 02092823 sw zero,48(s2) <== NOT EXECUTED
BUG();
4000378c: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
40003790: d6460613 addi a2,a2,-668 # 4001dd64 <__func__.4> <== NOT EXECUTED
40003794: 13300593 li a1,307 <== NOT EXECUTED
40003798: 56c50513 addi a0,a0,1388 # 4001d56c <rtems_jffs2_ops+0x3e4> <== NOT EXECUTED
4000379c: 305090ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
if (!list_empty(&c->erase_complete_list) ||
400037a0: 0984a703 lw a4,152(s1)
!list_empty(&c->erase_pending_list)) {
400037a4: 09848793 addi a5,s1,152
if (!list_empty(&c->erase_complete_list) ||
400037a8: f6f710e3 bne a4,a5,40003708 <jffs2_garbage_collect_pass+0x1a4>
400037ac: f6dff06f j 40003718 <jffs2_garbage_collect_pass+0x1b4>
ref = ref->next_in_ino;
400037b0: 0089a983 lw s3,8(s3)
if (!ref)
400037b4: fa0980e3 beqz s3,40003754 <jffs2_garbage_collect_pass+0x1f0> <== NEVER TAKEN
if (ref->flash_offset == REF_EMPTY_NODE)
400037b8: 0049a783 lw a5,4(s3)
400037bc: f95ff06f j 40003750 <jffs2_garbage_collect_pass+0x1ec>
return 0;
400037c0: 00000d93 li s11,0
400037c4: e71ff06f j 40003634 <jffs2_garbage_collect_pass+0xd0>
if (c->gcblock && !c->gcblock->used_size) {
400037c8: 05c4a783 lw a5,92(s1) <== NOT EXECUTED
int ret = 0, inum, nlink;
400037cc: 00000d93 li s11,0 <== NOT EXECUTED
if (c->gcblock && !c->gcblock->used_size) {
400037d0: 0147a703 lw a4,20(a5)
400037d4: e60710e3 bnez a4,40003634 <jffs2_garbage_collect_pass+0xd0> <== ALWAYS TAKEN
/* Insert an entry _before_ the specified entry */
static __inline__ void
list_add_tail( struct list_head *newent, struct list_head *beforethisent )
{
struct list_head *prev = beforethisent->prev;
400037d8: 09c4a603 lw a2,156(s1) <== NOT EXECUTED
rtems_jffs2_flash_control *fc = sb->s_flash_control;
400037dc: 0e44a503 lw a0,228(s1) <== NOT EXECUTED
c->nr_erasing_blocks++;
400037e0: 0404a703 lw a4,64(s1) <== NOT EXECUTED
list_add_tail(&c->gcblock->list, &c->erase_pending_list);
400037e4: 09848693 addi a3,s1,152 <== NOT EXECUTED
newent->prev = prev;
newent->next = beforethisent;
400037e8: 00d7a023 sw a3,0(a5) <== NOT EXECUTED
newent->prev = prev;
400037ec: 00c7a223 sw a2,4(a5) <== NOT EXECUTED
if (fc->trigger_garbage_collection != NULL) {
400037f0: 02052683 lw a3,32(a0) <== NOT EXECUTED
beforethisent->prev = newent;
400037f4: 08f4ae23 sw a5,156(s1) <== NOT EXECUTED
prev->next = newent;
400037f8: 00f62023 sw a5,0(a2) <== NOT EXECUTED
c->nr_erasing_blocks++;
400037fc: 00170793 addi a5,a4,1 <== NOT EXECUTED
c->gcblock = NULL;
40003800: 0404ae23 sw zero,92(s1) <== NOT EXECUTED
c->nr_erasing_blocks++;
40003804: 04f4a023 sw a5,64(s1) <== NOT EXECUTED
40003808: e20686e3 beqz a3,40003634 <jffs2_garbage_collect_pass+0xd0> <== NOT EXECUTED
(*fc->trigger_garbage_collection)(fc);
4000380c: 000680e7 jalr a3 <== NOT EXECUTED
40003810: e25ff06f j 40003634 <jffs2_garbage_collect_pass+0xd0> <== NOT EXECUTED
40003814: 8e41a703 lw a4,-1820(gp) # 40042fbc <_Watchdog_Ticks_since_boot>
/* Is this list empty? */
static __inline__ int
list_empty( struct list_head *list )
{
return ( list->next == list );
40003818: 0b84af83 lw t6,184(s1)
if (!list_empty(&c->bad_used_list) && c->nr_free_blocks > c->resv_blocks_gcbad) {
4000381c: 0b848893 addi a7,s1,184
int n = jiffies % 128;
40003820: 07f77713 andi a4,a4,127
} else if (n < 50 && !list_empty(&c->erasable_list)) {
40003824: 03100f13 li t5,49
} else if (n < 126 && !list_empty(&c->dirty_list)) {
40003828: 07048513 addi a0,s1,112
} else if (!list_empty(&c->clean_list)) {
4000382c: 06048593 addi a1,s1,96
} else if (n < 110 && !list_empty(&c->very_dirty_list)) {
40003830: 06848613 addi a2,s1,104
40003834: 06d00e93 li t4,109
} else if (n < 126 && !list_empty(&c->dirty_list)) {
40003838: 07d00e13 li t3,125
} else if (n < 50 && !list_empty(&c->erasable_list)) {
4000383c: 07848693 addi a3,s1,120
} else if (!list_empty(&c->erasable_pending_wbuf_list)) {
40003840: 08048313 addi t1,s1,128
if (!list_empty(&c->bad_used_list) && c->nr_free_blocks > c->resv_blocks_gcbad) {
40003844: 011f8863 beq t6,a7,40003854 <jffs2_garbage_collect_pass+0x2f0>
40003848: 0474c783 lbu a5,71(s1) <== NOT EXECUTED
4000384c: 03c4a283 lw t0,60(s1) <== NOT EXECUTED
40003850: 2457e463 bltu a5,t0,40003a98 <jffs2_garbage_collect_pass+0x534> <== NOT EXECUTED
} else if (n < 50 && !list_empty(&c->erasable_list)) {
40003854: 06ef4663 blt t5,a4,400038c0 <jffs2_garbage_collect_pass+0x35c>
40003858: 0784a283 lw t0,120(s1)
4000385c: 00068793 mv a5,a3
40003860: 08569063 bne a3,t0,400038e0 <jffs2_garbage_collect_pass+0x37c>
} else if (n < 110 && !list_empty(&c->very_dirty_list)) {
40003864: 0684a283 lw t0,104(s1)
40003868: 00060793 mv a5,a2
4000386c: 06561a63 bne a2,t0,400038e0 <jffs2_garbage_collect_pass+0x37c>
} else if (n < 126 && !list_empty(&c->dirty_list)) {
40003870: 0704a283 lw t0,112(s1)
40003874: 00050793 mv a5,a0
40003878: 06551463 bne a0,t0,400038e0 <jffs2_garbage_collect_pass+0x37c>
} else if (!list_empty(&c->clean_list)) {
4000387c: 0604a283 lw t0,96(s1)
40003880: 00058793 mv a5,a1
40003884: 04b29e63 bne t0,a1,400038e0 <jffs2_garbage_collect_pass+0x37c>
} else if (!list_empty(&c->very_dirty_list)) {
40003888: 0684a283 lw t0,104(s1)
4000388c: 00060793 mv a5,a2
40003890: 04561863 bne a2,t0,400038e0 <jffs2_garbage_collect_pass+0x37c>
} else if (!list_empty(&c->erasable_list)) {
40003894: 0784a283 lw t0,120(s1)
40003898: 00068793 mv a5,a3
4000389c: 04569263 bne a3,t0,400038e0 <jffs2_garbage_collect_pass+0x37c>
} else if (!list_empty(&c->erasable_pending_wbuf_list)) {
400038a0: 0804a783 lw a5,128(s1)
400038a4: fa6790e3 bne a5,t1,40003844 <jffs2_garbage_collect_pass+0x2e0>
if (c->nr_erasing_blocks) {
400038a8: 0404a883 lw a7,64(s1)
return -EIO;
400038ac: 011038b3 snez a7,a7
400038b0: 411008b3 neg a7,a7
400038b4: ffa8fd93 andi s11,a7,-6
400038b8: ffbd8d93 addi s11,s11,-5
400038bc: d79ff06f j 40003634 <jffs2_garbage_collect_pass+0xd0>
} else if (n < 110 && !list_empty(&c->very_dirty_list)) {
400038c0: faeed2e3 bge t4,a4,40003864 <jffs2_garbage_collect_pass+0x300> <== NOT EXECUTED
} else if (n < 126 && !list_empty(&c->dirty_list)) {
400038c4: faee56e3 bge t3,a4,40003870 <jffs2_garbage_collect_pass+0x30c> <== NOT EXECUTED
} else if (!list_empty(&c->clean_list)) {
400038c8: 0604a283 lw t0,96(s1) <== NOT EXECUTED
400038cc: 00058793 mv a5,a1 <== NOT EXECUTED
400038d0: 00559863 bne a1,t0,400038e0 <jffs2_garbage_collect_pass+0x37c> <== NOT EXECUTED
} else if (!list_empty(&c->dirty_list)) {
400038d4: 0704a283 lw t0,112(s1) <== NOT EXECUTED
400038d8: 00050793 mv a5,a0 <== NOT EXECUTED
400038dc: fa5506e3 beq a0,t0,40003888 <jffs2_garbage_collect_pass+0x324> <== NOT EXECUTED
ret = list_entry(nextlist->next, struct jffs2_eraseblock, list);
400038e0: 0007a903 lw s2,0(a5)
ent->prev->next = ent->next;
400038e4: 00492683 lw a3,4(s2)
400038e8: 00092703 lw a4,0(s2)
ret->gc_node = ret->first_node;
400038ec: 02892783 lw a5,40(s2)
400038f0: 00e6a023 sw a4,0(a3)
ent->next->prev = ent->prev;
400038f4: 00d72223 sw a3,4(a4)
c->gcblock = ret;
400038f8: 0524ae23 sw s2,92(s1)
ret->gc_node = ret->first_node;
400038fc: 02f92823 sw a5,48(s2)
if (!ret->gc_node) {
40003900: 1c078663 beqz a5,40003acc <jffs2_garbage_collect_pass+0x568> <== NEVER TAKEN
if (ret->wasted_size) {
40003904: 01c92783 lw a5,28(s2)
40003908: e0078ce3 beqz a5,40003720 <jffs2_garbage_collect_pass+0x1bc> <== ALWAYS TAKEN
ret->dirty_size += ret->wasted_size;
4000390c: 01892603 lw a2,24(s2) <== NOT EXECUTED
c->wasted_size -= ret->wasted_size;
40003910: 0244a683 lw a3,36(s1) <== NOT EXECUTED
c->dirty_size += ret->wasted_size;
40003914: 0204a703 lw a4,32(s1) <== NOT EXECUTED
ret->dirty_size += ret->wasted_size;
40003918: 00f60633 add a2,a2,a5 <== NOT EXECUTED
4000391c: 00c92c23 sw a2,24(s2) <== NOT EXECUTED
c->wasted_size -= ret->wasted_size;
40003920: 40f686b3 sub a3,a3,a5 <== NOT EXECUTED
c->dirty_size += ret->wasted_size;
40003924: 00f707b3 add a5,a4,a5 <== NOT EXECUTED
c->wasted_size -= ret->wasted_size;
40003928: 02d4a223 sw a3,36(s1) <== NOT EXECUTED
c->dirty_size += ret->wasted_size;
4000392c: 02f4a023 sw a5,32(s1) <== NOT EXECUTED
ret->wasted_size = 0;
40003930: 00092e23 sw zero,28(s2) <== NOT EXECUTED
40003934: dedff06f j 40003720 <jffs2_garbage_collect_pass+0x1bc> <== NOT EXECUTED
gcblock_dirty = jeb->dirty_size;
40003938: 01892703 lw a4,24(s2)
if (!raw->next_in_ino) {
4000393c: 0009aa03 lw s4,0(s3)
jeb->gc_node = raw;
40003940: 03392823 sw s3,48(s2)
gcblock_dirty = jeb->dirty_size;
40003944: 00e12423 sw a4,8(sp)
if (!raw->next_in_ino) {
40003948: 0c0a0863 beqz s4,40003a18 <jffs2_garbage_collect_pass+0x4b4> <== NEVER TAKEN
4000394c: 000a0a93 mv s5,s4
return ref;
}
static inline struct jffs2_inode_cache *jffs2_raw_ref_to_ic(struct jffs2_raw_node_ref *raw)
{
while(raw->next_in_ino)
40003950: 000a2a03 lw s4,0(s4)
40003954: fe0a1ce3 bnez s4,4000394c <jffs2_garbage_collect_pass+0x3e8> <== NEVER TAKEN
switch(ic->state) {
40003958: 00aad403 lhu s0,10(s5)
4000395c: 00400713 li a4,4
40003960: 08e40263 beq s0,a4,400039e4 <jffs2_garbage_collect_pass+0x480>
40003964: 06876863 bltu a4,s0,400039d4 <jffs2_garbage_collect_pass+0x470>
40003968: 00100693 li a3,1
4000396c: 0686fc63 bgeu a3,s0,400039e4 <jffs2_garbage_collect_pass+0x480>
40003970: 00300693 li a3,3
40003974: 00d41663 bne s0,a3,40003980 <jffs2_garbage_collect_pass+0x41c>
if (ref_flags(raw) == REF_PRISTINE)
40003978: 00200693 li a3,2
4000397c: 0ad78c63 beq a5,a3,40003a34 <jffs2_garbage_collect_pass+0x4d0>
f = jffs2_gc_fetch_inode(c, inum, !nlink);
40003980: 014aa603 lw a2,20(s5)
40003984: 00caa583 lw a1,12(s5)
40003988: 00048513 mv a0,s1
4000398c: 00163613 seqz a2,a2
40003990: f24ff0ef jal ra,400030b4 <jffs2_gc_fetch_inode>
if (IS_ERR(f)) {
40003994: c1800793 li a5,-1000
f = jffs2_gc_fetch_inode(c, inum, !nlink);
40003998: 00050413 mv s0,a0
if (IS_ERR(f)) {
4000399c: 3ea7eae3 bltu a5,a0,40004590 <jffs2_garbage_collect_pass+0x102c>
if (!f) {
400039a0: 3e0504e3 beqz a0,40004588 <jffs2_garbage_collect_pass+0x1024> <== NEVER TAKEN
if (c->gcblock != jeb) {
400039a4: 05c4a783 lw a5,92(s1)
int ret = 0;
400039a8: 00000d93 li s11,0
if (c->gcblock != jeb) {
400039ac: 16f90e63 beq s2,a5,40003b28 <jffs2_garbage_collect_pass+0x5c4>
jffs2_gc_release_inode(c, f);
400039b0: 00040593 mv a1,s0
400039b4: 00048513 mv a0,s1
400039b8: ef4ff0ef jal ra,400030ac <jffs2_gc_release_inode>
if (jeb->dirty_size == gcblock_dirty && !ref_obsolete(jeb->gc_node)) {
400039bc: 01892783 lw a5,24(s2)
400039c0: 00812703 lw a4,8(sp)
400039c4: 12e78c63 beq a5,a4,40003afc <jffs2_garbage_collect_pass+0x598>
if (c->gcblock && !c->gcblock->used_size) {
400039c8: 05c4a783 lw a5,92(s1)
400039cc: c60784e3 beqz a5,40003634 <jffs2_garbage_collect_pass+0xd0>
400039d0: e01ff06f j 400037d0 <jffs2_garbage_collect_pass+0x26c>
switch(ic->state) {
400039d4: 00500793 li a5,5 <== NOT EXECUTED
400039d8: 00000d93 li s11,0 <== NOT EXECUTED
400039dc: c4f40ce3 beq s0,a5,40003634 <jffs2_garbage_collect_pass+0xd0> <== NOT EXECUTED
400039e0: fa1ff06f j 40003980 <jffs2_garbage_collect_pass+0x41c> <== NOT EXECUTED
pr_crit("Inode #%u already in state %d in jffs2_garbage_collect_pass()!\n",
400039e4: 00caa583 lw a1,12(s5) <== NOT EXECUTED
400039e8: 4001d537 lui a0,0x4001d <== NOT EXECUTED
400039ec: 00040613 mv a2,s0 <== NOT EXECUTED
400039f0: 6b850513 addi a0,a0,1720 # 4001d6b8 <rtems_jffs2_ops+0x530> <== NOT EXECUTED
400039f4: f40ff0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
BUG();
400039f8: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
400039fc: 4001e637 lui a2,0x4001e <== NOT EXECUTED
40003a00: 4001d537 lui a0,0x4001d <== NOT EXECUTED
40003a04: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
40003a08: d6460613 addi a2,a2,-668 # 4001dd64 <__func__.4> <== NOT EXECUTED
40003a0c: 18d00593 li a1,397 <== NOT EXECUTED
40003a10: 56c50513 addi a0,a0,1388 # 4001d56c <rtems_jffs2_ops+0x3e4> <== NOT EXECUTED
40003a14: 08d090ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
if (ref_flags(raw) == REF_PRISTINE) {
40003a18: 00200713 li a4,2 <== NOT EXECUTED
40003a1c: 04e78263 beq a5,a4,40003a60 <jffs2_garbage_collect_pass+0x4fc> <== NOT EXECUTED
jffs2_mark_node_obsolete(c, raw);
40003a20: 00098593 mv a1,s3 <== NOT EXECUTED
40003a24: 00048513 mv a0,s1 <== NOT EXECUTED
40003a28: 074020ef jal ra,40005a9c <jffs2_mark_node_obsolete> <== NOT EXECUTED
int ret = 0, inum, nlink;
40003a2c: 00000d93 li s11,0 <== NOT EXECUTED
40003a30: f99ff06f j 400039c8 <jffs2_garbage_collect_pass+0x464> <== NOT EXECUTED
ic->state = INO_STATE_GC;
40003a34: 00ea9523 sh a4,10(s5)
ret = jffs2_garbage_collect_pristine(c, ic, raw);
40003a38: 00098613 mv a2,s3
40003a3c: 000a8593 mv a1,s5
40003a40: 00048513 mv a0,s1
40003a44: f30ff0ef jal ra,40003174 <jffs2_garbage_collect_pristine>
if (ret != -EBADFD) {
40003a48: ffff87b7 lui a5,0xffff8
ic->state = INO_STATE_CHECKEDABSENT;
40003a4c: 008a9523 sh s0,10(s5)
if (ret != -EBADFD) {
40003a50: 00178793 addi a5,a5,1 # ffff8001 <RamEnd+0xbeff8001>
ret = jffs2_garbage_collect_pristine(c, ic, raw);
40003a54: 00050d93 mv s11,a0
if (ret != -EBADFD) {
40003a58: f6f512e3 bne a0,a5,400039bc <jffs2_garbage_collect_pass+0x458>
40003a5c: f25ff06f j 40003980 <jffs2_garbage_collect_pass+0x41c> <== NOT EXECUTED
jffs2_garbage_collect_pristine(c, NULL, raw);
40003a60: 00098613 mv a2,s3 <== NOT EXECUTED
40003a64: 00000593 li a1,0 <== NOT EXECUTED
40003a68: 00048513 mv a0,s1 <== NOT EXECUTED
40003a6c: f08ff0ef jal ra,40003174 <jffs2_garbage_collect_pristine> <== NOT EXECUTED
int ret = 0, inum, nlink;
40003a70: 00000d93 li s11,0 <== NOT EXECUTED
40003a74: f55ff06f j 400039c8 <jffs2_garbage_collect_pass+0x464> <== NOT EXECUTED
BUG();
40003a78: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
40003a7c: 4001e637 lui a2,0x4001e <== NOT EXECUTED
40003a80: 4001d537 lui a0,0x4001d <== NOT EXECUTED
40003a84: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
40003a88: d6460613 addi a2,a2,-668 # 4001dd64 <__func__.4> <== NOT EXECUTED
40003a8c: 0e400593 li a1,228 <== NOT EXECUTED
40003a90: 56c50513 addi a0,a0,1388 # 4001d56c <rtems_jffs2_ops+0x3e4> <== NOT EXECUTED
40003a94: 00d090ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
40003a98: 00088793 mv a5,a7 <== NOT EXECUTED
40003a9c: e45ff06f j 400038e0 <jffs2_garbage_collect_pass+0x37c> <== NOT EXECUTED
pr_warn("Inode #%u is in state %d during CRC check phase!\n",
40003aa0: 4001d537 lui a0,0x4001d <== NOT EXECUTED
40003aa4: 53050513 addi a0,a0,1328 # 4001d530 <rtems_jffs2_ops+0x3a8> <== NOT EXECUTED
40003aa8: e8cff0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
BUG();
40003aac: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
40003ab0: 4001e637 lui a2,0x4001e <== NOT EXECUTED
40003ab4: 4001d537 lui a0,0x4001d <== NOT EXECUTED
40003ab8: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
40003abc: d6460613 addi a2,a2,-668 # 4001dd64 <__func__.4> <== NOT EXECUTED
40003ac0: 0d300593 li a1,211 <== NOT EXECUTED
40003ac4: 56c50513 addi a0,a0,1388 # 4001d56c <rtems_jffs2_ops+0x3e4> <== NOT EXECUTED
40003ac8: 7d8090ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
pr_warn("Eep. ret->gc_node for block at 0x%08x is NULL\n",
40003acc: 00c92583 lw a1,12(s2) <== NOT EXECUTED
40003ad0: 4001d537 lui a0,0x4001d <== NOT EXECUTED
40003ad4: 5e050513 addi a0,a0,1504 # 4001d5e0 <rtems_jffs2_ops+0x458> <== NOT EXECUTED
40003ad8: e5cff0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
BUG();
40003adc: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
40003ae0: 4001e637 lui a2,0x4001e <== NOT EXECUTED
40003ae4: 4001d537 lui a0,0x4001d <== NOT EXECUTED
40003ae8: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
40003aec: d5060613 addi a2,a2,-688 # 4001dd50 <__func__.3> <== NOT EXECUTED
40003af0: 06a00593 li a1,106 <== NOT EXECUTED
40003af4: 56c50513 addi a0,a0,1388 # 4001d56c <rtems_jffs2_ops+0x3e4> <== NOT EXECUTED
40003af8: 7a8090ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
if (jeb->dirty_size == gcblock_dirty && !ref_obsolete(jeb->gc_node)) {
40003afc: 03092703 lw a4,48(s2) <== NOT EXECUTED
40003b00: 00100793 li a5,1 <== NOT EXECUTED
40003b04: 00472583 lw a1,4(a4) <== NOT EXECUTED
40003b08: 0035f713 andi a4,a1,3 <== NOT EXECUTED
40003b0c: eaf70ee3 beq a4,a5,400039c8 <jffs2_garbage_collect_pass+0x464> <== NOT EXECUTED
pr_err("Error garbage collecting node at %08x!\n",
40003b10: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40003b14: ffc5f593 andi a1,a1,-4 <== NOT EXECUTED
40003b18: c8850513 addi a0,a0,-888 # 4001dc88 <rtems_jffs2_ops+0xb00> <== NOT EXECUTED
40003b1c: e18ff0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
ret = -ENOSPC;
40003b20: fe400d93 li s11,-28 <== NOT EXECUTED
40003b24: ea5ff06f j 400039c8 <jffs2_garbage_collect_pass+0x464> <== NOT EXECUTED
if (ref_obsolete(raw)) {
40003b28: 0049a783 lw a5,4(s3)
40003b2c: 00100713 li a4,1
40003b30: 0037f793 andi a5,a5,3
40003b34: e6e78ee3 beq a5,a4,400039b0 <jffs2_garbage_collect_pass+0x44c>
if (f->metadata && f->metadata->raw == raw) {
40003b38: 00852a83 lw s5,8(a0)
40003b3c: 000a8663 beqz s5,40003b48 <jffs2_garbage_collect_pass+0x5e4>
40003b40: 000aa783 lw a5,0(s5)
40003b44: 24f98ae3 beq s3,a5,40004598 <jffs2_garbage_collect_pass+0x1034>
for (frag = frag_first(&f->fragtree); frag; frag = frag_next(frag)) {
40003b48: 00440b13 addi s6,s0,4
return _RBTree_Predecessor( node );
}
static inline struct rb_node *rb_first( struct rb_root *root )
{
return _RBTree_Minimum( (RBTree_Control *) root );
40003b4c: 000b0513 mv a0,s6
40003b50: 291100ef jal ra,400145e0 <_RBTree_Minimum>
40003b54: 00050b93 mv s7,a0
static inline struct jffs2_node_frag *frag_first(struct rb_root *root)
{
struct rb_node *node = rb_first(root);
if (!node)
40003b58: 04050e63 beqz a0,40003bb4 <jffs2_garbage_collect_pass+0x650>
40003b5c: 00000a93 li s5,0
40003b60: 00000c13 li s8,0
40003b64: 0140006f j 40003b78 <jffs2_garbage_collect_pass+0x614>
return _RBTree_Successor( node );
40003b68: 000b8513 mv a0,s7
40003b6c: 2b5100ef jal ra,40014620 <_RBTree_Successor>
40003b70: 00050b93 mv s7,a0
40003b74: 04050e63 beqz a0,40003bd0 <jffs2_garbage_collect_pass+0x66c> <== NEVER TAKEN
if (frag->node && frag->node->raw == raw) {
40003b78: 010ba783 lw a5,16(s7)
40003b7c: fe0786e3 beqz a5,40003b68 <jffs2_garbage_collect_pass+0x604> <== NEVER TAKEN
40003b80: 0007a703 lw a4,0(a5)
40003b84: fee992e3 bne s3,a4,40003b68 <jffs2_garbage_collect_pass+0x604>
end = frag->ofs + frag->size;
40003b88: 018ba683 lw a3,24(s7)
40003b8c: 014ba803 lw a6,20(s7)
if (!nrfrags++)
40003b90: 001c0713 addi a4,s8,1
end = frag->ofs + frag->size;
40003b94: 01068d33 add s10,a3,a6
if (!nrfrags++)
40003b98: 000c1463 bnez s8,40003ba0 <jffs2_garbage_collect_pass+0x63c> <== NEVER TAKEN
start = frag->ofs;
40003b9c: 00068a93 mv s5,a3
if (nrfrags == frag->node->frags)
40003ba0: 00c7a683 lw a3,12(a5)
40003ba4: 4ad708e3 beq a4,a3,40004854 <jffs2_garbage_collect_pass+0x12f0>
40003ba8: 00070c13 mv s8,a4 <== NOT EXECUTED
40003bac: 00078a13 mv s4,a5 <== NOT EXECUTED
40003bb0: fb9ff06f j 40003b68 <jffs2_garbage_collect_pass+0x604> <== NOT EXECUTED
for (fd = f->dents; fd; fd=fd->next) {
40003bb4: 00c42783 lw a5,12(s0)
40003bb8: 00078a13 mv s4,a5
40003bbc: 1e0a0a63 beqz s4,40003db0 <jffs2_garbage_collect_pass+0x84c> <== NEVER TAKEN
if (fd->raw == raw)
40003bc0: 000a2583 lw a1,0(s4)
40003bc4: 1cb98663 beq s3,a1,40003d90 <jffs2_garbage_collect_pass+0x82c>
for (fd = f->dents; fd; fd=fd->next) {
40003bc8: 004a2a03 lw s4,4(s4)
40003bcc: ff1ff06f j 40003bbc <jffs2_garbage_collect_pass+0x658>
if (fn) {
40003bd0: fe0a02e3 beqz s4,40003bb4 <jffs2_garbage_collect_pass+0x650> <== NOT EXECUTED
if (ref_flags(raw) == REF_PRISTINE) {
40003bd4: 0049a783 lw a5,4(s3)
40003bd8: 00200713 li a4,2
40003bdc: 0037f793 andi a5,a5,3
40003be0: 12e784e3 beq a5,a4,40004508 <jffs2_garbage_collect_pass+0xfa4>
if((start >> PAGE_SHIFT) < ((end-1) >> PAGE_SHIFT)) {
40003be4: fffd0c13 addi s8,s10,-1
40003be8: 00cad793 srli a5,s5,0xc
40003bec: 00cc5713 srli a4,s8,0xc
40003bf0: 60e7f263 bgeu a5,a4,400041f4 <jffs2_garbage_collect_pass+0xc90>
int ret;
jffs2_dbg(1, "Writing replacement hole node for ino #%u from offset 0x%x to 0x%x\n",
f->inocache->ino, start, end);
memset(&ri, 0, sizeof(ri));
40003bf4: 02c10993 addi s3,sp,44 <== NOT EXECUTED
40003bf8: 04400613 li a2,68 <== NOT EXECUTED
40003bfc: 00000593 li a1,0 <== NOT EXECUTED
40003c00: 00098513 mv a0,s3 <== NOT EXECUTED
40003c04: 514180ef jal ra,4001c118 <memset> <== NOT EXECUTED
if(fn->frags > 1) {
40003c08: 00ca2783 lw a5,12(s4) <== NOT EXECUTED
40003c0c: 00100c13 li s8,1 <== NOT EXECUTED
memset(&ri, 0, sizeof(ri));
40003c10: 04400c93 li s9,68 <== NOT EXECUTED
40003c14: 02810b93 addi s7,sp,40 <== NOT EXECUTED
if(fn->frags > 1) {
40003c18: 4efc7463 bgeu s8,a5,40004100 <jffs2_garbage_collect_pass+0xb9c> <== NOT EXECUTED
size_t readlen;
uint32_t crc;
/* It's partially obsoleted by a later write. So we have to
write it out again with the _same_ version as before */
ret = jffs2_flash_read(c, ref_offset(fn->raw), sizeof(ri), &readlen, (char *)&ri);
40003c1c: 000a2783 lw a5,0(s4) <== NOT EXECUTED
40003c20: 02810b93 addi s7,sp,40 <== NOT EXECUTED
40003c24: 04400613 li a2,68 <== NOT EXECUTED
40003c28: 0047a583 lw a1,4(a5) <== NOT EXECUTED
40003c2c: 00098713 mv a4,s3 <== NOT EXECUTED
40003c30: 000b8693 mv a3,s7 <== NOT EXECUTED
40003c34: ffc5f593 andi a1,a1,-4 <== NOT EXECUTED
40003c38: 00048513 mv a0,s1 <== NOT EXECUTED
40003c3c: 53d070ef jal ra,4000b978 <jffs2_flash_read> <== NOT EXECUTED
if (readlen != sizeof(ri) || ret) {
40003c40: 02812603 lw a2,40(sp) <== NOT EXECUTED
ret = jffs2_flash_read(c, ref_offset(fn->raw), sizeof(ri), &readlen, (char *)&ri);
40003c44: 00050593 mv a1,a0 <== NOT EXECUTED
if (readlen != sizeof(ri) || ret) {
40003c48: 59961e63 bne a2,s9,400041e4 <jffs2_garbage_collect_pass+0xc80> <== NOT EXECUTED
40003c4c: 58051c63 bnez a0,400041e4 <jffs2_garbage_collect_pass+0xc80> <== NOT EXECUTED
pr_warn("Node read failed in jffs2_garbage_collect_hole. Ret %d, retlen %zd. Data will be lost by writing new hole node\n",
ret, readlen);
goto fill;
}
if (je16_to_cpu(ri.nodetype) != JFFS2_NODETYPE_INODE) {
40003c50: 02e15683 lhu a3,46(sp) <== NOT EXECUTED
40003c54: 0000e737 lui a4,0xe <== NOT EXECUTED
40003c58: 00270713 addi a4,a4,2 # e002 <bsp_section_rodata_size+0x8f2e> <== NOT EXECUTED
40003c5c: 56e69063 bne a3,a4,400041bc <jffs2_garbage_collect_pass+0xc58> <== NOT EXECUTED
pr_warn("%s(): Node at 0x%08x had node type 0x%04x instead of JFFS2_NODETYPE_INODE(0x%04x)\n",
__func__, ref_offset(fn->raw),
je16_to_cpu(ri.nodetype), JFFS2_NODETYPE_INODE);
return -EIO;
}
if (je32_to_cpu(ri.totlen) != sizeof(ri)) {
40003c60: 03012683 lw a3,48(sp) <== NOT EXECUTED
40003c64: 52c69663 bne a3,a2,40004190 <jffs2_garbage_collect_pass+0xc2c> <== NOT EXECUTED
pr_warn("%s(): Node at 0x%08x had totlen 0x%x instead of expected 0x%zx\n",
__func__, ref_offset(fn->raw),
je32_to_cpu(ri.totlen), sizeof(ri));
return -EIO;
}
crc = crc32(0, &ri, sizeof(ri)-8);
40003c68: 03c00613 li a2,60 <== NOT EXECUTED
40003c6c: 00098593 mv a1,s3 <== NOT EXECUTED
40003c70: 021060ef jal ra,4000a490 <cyg_crc32_accumulate> <== NOT EXECUTED
if (crc != je32_to_cpu(ri.node_crc)) {
40003c74: 06c12683 lw a3,108(sp) <== NOT EXECUTED
crc = crc32(0, &ri, sizeof(ri)-8);
40003c78: 00050713 mv a4,a0 <== NOT EXECUTED
if (crc != je32_to_cpu(ri.node_crc)) {
40003c7c: 4ed51863 bne a0,a3,4000416c <jffs2_garbage_collect_pass+0xc08> <== NOT EXECUTED
/* FIXME: We could possibly deal with this by writing new holes for each frag */
pr_warn("Data in the range 0x%08x to 0x%08x of inode #%u will be lost\n",
start, end, f->inocache->ino);
goto fill;
}
if (ri.compr != JFFS2_COMPR_ZERO) {
40003c80: 06414783 lbu a5,100(sp) <== NOT EXECUTED
40003c84: 45879063 bne a5,s8,400040c4 <jffs2_garbage_collect_pass+0xb60> <== NOT EXECUTED
}
static inline struct rb_node *rb_last( struct rb_root *root )
{
return _RBTree_Maximum( (RBTree_Control *) root );
40003c88: 000b0513 mv a0,s6 <== NOT EXECUTED
40003c8c: 175100ef jal ra,40014600 <_RBTree_Maximum> <== NOT EXECUTED
static inline struct jffs2_node_frag *frag_last(struct rb_root *root)
{
struct rb_node *node = rb_last(root);
if (!node)
40003c90: 42050663 beqz a0,400040bc <jffs2_garbage_collect_pass+0xb58> <== NOT EXECUTED
frag = frag_last(&f->fragtree);
if (frag)
/* Fetch the inode length from the fragtree rather then
* from i_size since i_size may have not been updated yet */
ilen = frag->ofs + frag->size;
40003c94: 01852703 lw a4,24(a0) <== NOT EXECUTED
40003c98: 01452783 lw a5,20(a0) <== NOT EXECUTED
40003c9c: 00f707b3 add a5,a4,a5 <== NOT EXECUTED
return osmode & (S_IFMT | S_IRWXU | S_IRWXG | S_IRWXO);
40003ca0: fc042703 lw a4,-64(s0) <== NOT EXECUTED
else
ilen = JFFS2_F_I_SIZE(f);
ri.mode = cpu_to_jemode(JFFS2_F_I_MODE(f));
ri.uid = cpu_to_je16(JFFS2_F_I_UID(f));
40003ca4: fc645e83 lhu t4,-58(s0) <== NOT EXECUTED
ri.gid = cpu_to_je16(JFFS2_F_I_GID(f));
40003ca8: fc845e03 lhu t3,-56(s0) <== NOT EXECUTED
ri.isize = cpu_to_je32(ilen);
ri.atime = cpu_to_je32(JFFS2_F_I_ATIME(f));
40003cac: fd042303 lw t1,-48(s0) <== NOT EXECUTED
ri.ctime = cpu_to_je32(JFFS2_F_I_CTIME(f));
40003cb0: fe042883 lw a7,-32(s0) <== NOT EXECUTED
ri.mtime = cpu_to_je32(JFFS2_F_I_MTIME(f));
40003cb4: fd842803 lw a6,-40(s0) <== NOT EXECUTED
40003cb8: 0000f6b7 lui a3,0xf <== NOT EXECUTED
40003cbc: 1ff68693 addi a3,a3,511 # f1ff <bsp_section_rodata_size+0xa12b> <== NOT EXECUTED
40003cc0: 00d77733 and a4,a4,a3 <== NOT EXECUTED
ri.data_crc = cpu_to_je32(0);
ri.node_crc = cpu_to_je32(crc32(0, &ri, sizeof(ri)-8));
40003cc4: 03c00613 li a2,60 <== NOT EXECUTED
40003cc8: 00098593 mv a1,s3 <== NOT EXECUTED
40003ccc: 00000513 li a0,0 <== NOT EXECUTED
ri.mode = cpu_to_jemode(JFFS2_F_I_MODE(f));
40003cd0: 04e12023 sw a4,64(sp) <== NOT EXECUTED
ri.uid = cpu_to_je16(JFFS2_F_I_UID(f));
40003cd4: 05d11223 sh t4,68(sp) <== NOT EXECUTED
ri.gid = cpu_to_je16(JFFS2_F_I_GID(f));
40003cd8: 05c11323 sh t3,70(sp) <== NOT EXECUTED
ri.isize = cpu_to_je32(ilen);
40003cdc: 04f12423 sw a5,72(sp) <== NOT EXECUTED
ri.atime = cpu_to_je32(JFFS2_F_I_ATIME(f));
40003ce0: 04612623 sw t1,76(sp) <== NOT EXECUTED
ri.ctime = cpu_to_je32(JFFS2_F_I_CTIME(f));
40003ce4: 05112a23 sw a7,84(sp) <== NOT EXECUTED
ri.mtime = cpu_to_je32(JFFS2_F_I_MTIME(f));
40003ce8: 05012823 sw a6,80(sp) <== NOT EXECUTED
ri.data_crc = cpu_to_je32(0);
40003cec: 06012423 sw zero,104(sp) <== NOT EXECUTED
ri.node_crc = cpu_to_je32(crc32(0, &ri, sizeof(ri)-8));
40003cf0: 7a0060ef jal ra,4000a490 <cyg_crc32_accumulate> <== NOT EXECUTED
40003cf4: 00050793 mv a5,a0 <== NOT EXECUTED
ret = jffs2_reserve_space_gc(c, sizeof(ri), &alloclen,
40003cf8: 01200693 li a3,18 <== NOT EXECUTED
40003cfc: 000b8613 mv a2,s7 <== NOT EXECUTED
40003d00: 04400593 li a1,68 <== NOT EXECUTED
40003d04: 00048513 mv a0,s1 <== NOT EXECUTED
ri.node_crc = cpu_to_je32(crc32(0, &ri, sizeof(ri)-8));
40003d08: 06f12623 sw a5,108(sp) <== NOT EXECUTED
ret = jffs2_reserve_space_gc(c, sizeof(ri), &alloclen,
40003d0c: 50c020ef jal ra,40006218 <jffs2_reserve_space_gc> <== NOT EXECUTED
40003d10: 00050d93 mv s11,a0 <== NOT EXECUTED
JFFS2_SUMMARY_INODE_SIZE);
if (ret) {
40003d14: 38051863 bnez a0,400040a4 <jffs2_garbage_collect_pass+0xb40> <== NOT EXECUTED
pr_warn("jffs2_reserve_space_gc of %zd bytes for garbage_collect_hole failed: %d\n",
sizeof(ri), ret);
return ret;
}
new_fn = jffs2_write_dnode(c, f, &ri, NULL, 0, ALLOC_GC);
40003d18: 00200793 li a5,2 <== NOT EXECUTED
40003d1c: 00098613 mv a2,s3 <== NOT EXECUTED
40003d20: 00000713 li a4,0 <== NOT EXECUTED
40003d24: 00000693 li a3,0 <== NOT EXECUTED
40003d28: 00040593 mv a1,s0 <== NOT EXECUTED
40003d2c: 00048513 mv a0,s1 <== NOT EXECUTED
40003d30: 469040ef jal ra,40008998 <jffs2_write_dnode> <== NOT EXECUTED
if (IS_ERR(new_fn)) {
40003d34: c1800793 li a5,-1000 <== NOT EXECUTED
new_fn = jffs2_write_dnode(c, f, &ri, NULL, 0, ALLOC_GC);
40003d38: 00050993 mv s3,a0 <== NOT EXECUTED
if (IS_ERR(new_fn)) {
40003d3c: 34a7e863 bltu a5,a0,4000408c <jffs2_garbage_collect_pass+0xb28> <== NOT EXECUTED
pr_warn("Error writing new hole node: %ld\n", PTR_ERR(new_fn));
return PTR_ERR(new_fn);
}
if (je32_to_cpu(ri.version) == f->highest_version) {
40003d40: 03c12703 lw a4,60(sp) <== NOT EXECUTED
40003d44: 00042783 lw a5,0(s0) <== NOT EXECUTED
40003d48: 30f70863 beq a4,a5,40004058 <jffs2_garbage_collect_pass+0xaf4> <== NOT EXECUTED
__func__, fn->frags, je32_to_cpu(ri.version),
f->highest_version, je32_to_cpu(ri.ino));
});
/* This is a partially-overlapped hole node. Mark it REF_NORMAL not REF_PRISTINE */
mark_ref_normal(new_fn->raw);
40003d4c: 00052703 lw a4,0(a0) <== NOT EXECUTED
for (frag = jffs2_lookup_node_frag(&f->fragtree, fn->ofs);
40003d50: 004a2583 lw a1,4(s4) <== NOT EXECUTED
40003d54: 000b0513 mv a0,s6 <== NOT EXECUTED
mark_ref_normal(new_fn->raw);
40003d58: 00472783 lw a5,4(a4) <== NOT EXECUTED
40003d5c: 0037e793 ori a5,a5,3 <== NOT EXECUTED
40003d60: 00f72223 sw a5,4(a4) <== NOT EXECUTED
for (frag = jffs2_lookup_node_frag(&f->fragtree, fn->ofs);
40003d64: 71c010ef jal ra,40005480 <jffs2_lookup_node_frag> <== NOT EXECUTED
40003d68: 0a050463 beqz a0,40003e10 <jffs2_garbage_collect_pass+0x8ac> <== NOT EXECUTED
frag; frag = frag_next(frag)) {
if (frag->ofs > fn->size + fn->ofs)
40003d6c: 008a2783 lw a5,8(s4) <== NOT EXECUTED
40003d70: 004a2683 lw a3,4(s4) <== NOT EXECUTED
40003d74: 01852703 lw a4,24(a0) <== NOT EXECUTED
40003d78: 00d787b3 add a5,a5,a3 <== NOT EXECUTED
40003d7c: 08e7ea63 bltu a5,a4,40003e10 <jffs2_garbage_collect_pass+0x8ac> <== NOT EXECUTED
break;
if (frag->node == fn) {
40003d80: 01052783 lw a5,16(a0) <== NOT EXECUTED
40003d84: 07478663 beq a5,s4,40003df0 <jffs2_garbage_collect_pass+0x88c> <== NOT EXECUTED
return _RBTree_Successor( node );
40003d88: 099100ef jal ra,40014620 <_RBTree_Successor> <== NOT EXECUTED
40003d8c: fddff06f j 40003d68 <jffs2_garbage_collect_pass+0x804> <== NOT EXECUTED
if (fd && fd->ino) {
40003d90: 00ca2703 lw a4,12(s4)
40003d94: 0a071263 bnez a4,40003e38 <jffs2_garbage_collect_pass+0x8d4> <== ALWAYS TAKEN
struct jffs2_full_dirent **fdp = &f->dents;
40003d98: 00c40713 addi a4,s0,12 <== NOT EXECUTED
while (*fdp) {
40003d9c: 20078463 beqz a5,40003fa4 <jffs2_garbage_collect_pass+0xa40> <== NOT EXECUTED
if ((*fdp) == fd) {
40003da0: 1efa0263 beq s4,a5,40003f84 <jffs2_garbage_collect_pass+0xa20> <== NOT EXECUTED
fdp = &(*fdp)->next;
40003da4: 00478713 addi a4,a5,4 <== NOT EXECUTED
40003da8: 0047a783 lw a5,4(a5) <== NOT EXECUTED
40003dac: ff1ff06f j 40003d9c <jffs2_garbage_collect_pass+0x838> <== NOT EXECUTED
pr_warn("Raw node at 0x%08x wasn't in node lists for ino #%u\n",
40003db0: 01442783 lw a5,20(s0) <== NOT EXECUTED
40003db4: 0049a583 lw a1,4(s3) <== NOT EXECUTED
40003db8: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40003dbc: 00c7a603 lw a2,12(a5) <== NOT EXECUTED
40003dc0: ffc5f593 andi a1,a1,-4 <== NOT EXECUTED
40003dc4: cbc50513 addi a0,a0,-836 # 4001dcbc <rtems_jffs2_ops+0xb34> <== NOT EXECUTED
40003dc8: b6cff0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
if (ref_obsolete(raw)) {
40003dcc: 0049a783 lw a5,4(s3) <== NOT EXECUTED
40003dd0: 00100713 li a4,1 <== NOT EXECUTED
40003dd4: 0037f793 andi a5,a5,3 <== NOT EXECUTED
40003dd8: 18e79063 bne a5,a4,40003f58 <jffs2_garbage_collect_pass+0x9f4> <== NOT EXECUTED
pr_warn("But it's obsolete so we don't mind too much\n");
40003ddc: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40003de0: c5050513 addi a0,a0,-944 # 4001dc50 <rtems_jffs2_ops+0xac8> <== NOT EXECUTED
40003de4: b50ff0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
int ret = 0;
40003de8: 00000d93 li s11,0 <== NOT EXECUTED
40003dec: bc5ff06f j 400039b0 <jffs2_garbage_collect_pass+0x44c> <== NOT EXECUTED
frag->node = new_fn;
new_fn->frags++;
40003df0: 00c9a783 lw a5,12(s3) <== NOT EXECUTED
frag->node = new_fn;
40003df4: 01352823 sw s3,16(a0) <== NOT EXECUTED
new_fn->frags++;
40003df8: 00178793 addi a5,a5,1 <== NOT EXECUTED
40003dfc: 00f9a623 sw a5,12(s3) <== NOT EXECUTED
fn->frags--;
40003e00: 00ca2783 lw a5,12(s4) <== NOT EXECUTED
40003e04: fff78793 addi a5,a5,-1 <== NOT EXECUTED
40003e08: 00fa2623 sw a5,12(s4) <== NOT EXECUTED
40003e0c: f7dff06f j 40003d88 <jffs2_garbage_collect_pass+0x824> <== NOT EXECUTED
}
}
if (fn->frags) {
40003e10: 00ca2783 lw a5,12(s4) <== NOT EXECUTED
40003e14: 1e079063 bnez a5,40003ff4 <jffs2_garbage_collect_pass+0xa90> <== NOT EXECUTED
pr_warn("%s(): Old node still has frags!\n", __func__);
BUG();
}
if (!new_fn->frags) {
40003e18: 00c9a783 lw a5,12(s3) <== NOT EXECUTED
40003e1c: 1a078463 beqz a5,40003fc4 <jffs2_garbage_collect_pass+0xa60> <== NOT EXECUTED
pr_warn("%s(): New node has no frags!\n", __func__);
BUG();
}
jffs2_mark_node_obsolete(c, fn->raw);
40003e20: 000a2583 lw a1,0(s4) <== NOT EXECUTED
40003e24: 00048513 mv a0,s1 <== NOT EXECUTED
40003e28: 475010ef jal ra,40005a9c <jffs2_mark_node_obsolete> <== NOT EXECUTED
jffs2_free_full_dnode(fn);
40003e2c: 000a0513 mv a0,s4 <== NOT EXECUTED
40003e30: 255000ef jal ra,40004884 <jffs2_free_full_dnode> <== NOT EXECUTED
return 0;
40003e34: b7dff06f j 400039b0 <jffs2_garbage_collect_pass+0x44c> <== NOT EXECUTED
rd.magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
40003e38: 000027b7 lui a5,0x2
40003e3c: 98578793 addi a5,a5,-1659 # 1985 <_ISR_Stack_size+0x985>
40003e40: 02f11623 sh a5,44(sp)
rd.nsize = strlen(fd->name);
40003e44: 015a0a93 addi s5,s4,21
rd.nodetype = cpu_to_je16(JFFS2_NODETYPE_DIRENT);
40003e48: ffffe7b7 lui a5,0xffffe
40003e4c: 00178793 addi a5,a5,1 # ffffe001 <RamEnd+0xbeffe001>
rd.nsize = strlen(fd->name);
40003e50: 000a8513 mv a0,s5
rd.nodetype = cpu_to_je16(JFFS2_NODETYPE_DIRENT);
40003e54: 02f11723 sh a5,46(sp)
rd.nsize = strlen(fd->name);
40003e58: 7d4180ef jal ra,4001c62c <strlen>
rd.totlen = cpu_to_je32(sizeof(rd) + rd.nsize);
40003e5c: 0ff57713 andi a4,a0,255
rd.hdr_crc = cpu_to_je32(crc32(0, &rd, sizeof(struct jffs2_unknown_node)-4));
40003e60: 02c10993 addi s3,sp,44
rd.nsize = strlen(fd->name);
40003e64: 00050793 mv a5,a0
rd.totlen = cpu_to_je32(sizeof(rd) + rd.nsize);
40003e68: 02870713 addi a4,a4,40
rd.hdr_crc = cpu_to_je32(crc32(0, &rd, sizeof(struct jffs2_unknown_node)-4));
40003e6c: 00800613 li a2,8
40003e70: 00098593 mv a1,s3
40003e74: 00000513 li a0,0
rd.nsize = strlen(fd->name);
40003e78: 04f10423 sb a5,72(sp)
rd.totlen = cpu_to_je32(sizeof(rd) + rd.nsize);
40003e7c: 02e12823 sw a4,48(sp)
rd.hdr_crc = cpu_to_je32(crc32(0, &rd, sizeof(struct jffs2_unknown_node)-4));
40003e80: 610060ef jal ra,4000a490 <cyg_crc32_accumulate>
rd.pino = cpu_to_je32(f->inocache->ino);
40003e84: 01442703 lw a4,20(s0)
rd.version = cpu_to_je32(++f->highest_version);
40003e88: 00042783 lw a5,0(s0)
rd.ino = cpu_to_je32(fd->ino);
40003e8c: 00ca2603 lw a2,12(s4)
rd.pino = cpu_to_je32(f->inocache->ino);
40003e90: 00c72703 lw a4,12(a4)
rd.version = cpu_to_je32(++f->highest_version);
40003e94: 00178793 addi a5,a5,1
if (JFFS2_F_I_MTIME(f) == JFFS2_F_I_CTIME(f))
40003e98: fd842683 lw a3,-40(s0)
rd.pino = cpu_to_je32(f->inocache->ino);
40003e9c: 02e12c23 sw a4,56(sp)
rd.hdr_crc = cpu_to_je32(crc32(0, &rd, sizeof(struct jffs2_unknown_node)-4));
40003ea0: 02a12a23 sw a0,52(sp)
if (JFFS2_F_I_MTIME(f) == JFFS2_F_I_CTIME(f))
40003ea4: fe042703 lw a4,-32(s0)
rd.version = cpu_to_je32(++f->highest_version);
40003ea8: 00f42023 sw a5,0(s0)
40003eac: 02f12e23 sw a5,60(sp)
rd.ino = cpu_to_je32(fd->ino);
40003eb0: 04c12023 sw a2,64(sp)
if (JFFS2_F_I_MTIME(f) == JFFS2_F_I_CTIME(f))
40003eb4: fe442783 lw a5,-28(s0)
40003eb8: 0ce68063 beq a3,a4,40003f78 <jffs2_garbage_collect_pass+0xa14>
40003ebc: 00000713 li a4,0 <== NOT EXECUTED
40003ec0: 04e12223 sw a4,68(sp)
rd.type = fd->type;
40003ec4: 014a4783 lbu a5,20(s4)
rd.node_crc = cpu_to_je32(crc32(0, &rd, sizeof(rd)-8));
40003ec8: 02000613 li a2,32
40003ecc: 00098593 mv a1,s3
40003ed0: 00000513 li a0,0
rd.type = fd->type;
40003ed4: 04f104a3 sb a5,73(sp)
rd.node_crc = cpu_to_je32(crc32(0, &rd, sizeof(rd)-8));
40003ed8: 5b8060ef jal ra,4000a490 <cyg_crc32_accumulate>
rd.name_crc = cpu_to_je32(crc32(0, fd->name, rd.nsize));
40003edc: 04814603 lbu a2,72(sp)
rd.node_crc = cpu_to_je32(crc32(0, &rd, sizeof(rd)-8));
40003ee0: 00050793 mv a5,a0
rd.name_crc = cpu_to_je32(crc32(0, fd->name, rd.nsize));
40003ee4: 000a8593 mv a1,s5
40003ee8: 00000513 li a0,0
rd.node_crc = cpu_to_je32(crc32(0, &rd, sizeof(rd)-8));
40003eec: 04f12623 sw a5,76(sp)
rd.name_crc = cpu_to_je32(crc32(0, fd->name, rd.nsize));
40003ef0: 5a0060ef jal ra,4000a490 <cyg_crc32_accumulate>
ret = jffs2_reserve_space_gc(c, sizeof(rd)+rd.nsize, &alloclen,
40003ef4: 04814583 lbu a1,72(sp)
rd.name_crc = cpu_to_je32(crc32(0, fd->name, rd.nsize));
40003ef8: 00050793 mv a5,a0
ret = jffs2_reserve_space_gc(c, sizeof(rd)+rd.nsize, &alloclen,
40003efc: 02810613 addi a2,sp,40
40003f00: 01858693 addi a3,a1,24
40003f04: 00048513 mv a0,s1
40003f08: 02858593 addi a1,a1,40
rd.name_crc = cpu_to_je32(crc32(0, fd->name, rd.nsize));
40003f0c: 04f12823 sw a5,80(sp)
ret = jffs2_reserve_space_gc(c, sizeof(rd)+rd.nsize, &alloclen,
40003f10: 308020ef jal ra,40006218 <jffs2_reserve_space_gc>
40003f14: 00050d93 mv s11,a0
if (ret) {
40003f18: 12051263 bnez a0,4000403c <jffs2_garbage_collect_pass+0xad8> <== NEVER TAKEN
new_fd = jffs2_write_dirent(c, f, &rd, fd->name, rd.nsize, ALLOC_GC);
40003f1c: 04814703 lbu a4,72(sp)
40003f20: 00200793 li a5,2
40003f24: 00098613 mv a2,s3
40003f28: 000a8693 mv a3,s5
40003f2c: 00040593 mv a1,s0
40003f30: 00048513 mv a0,s1
40003f34: 6d9040ef jal ra,40008e0c <jffs2_write_dirent>
if (IS_ERR(new_fd)) {
40003f38: c1800793 li a5,-1000
new_fd = jffs2_write_dirent(c, f, &rd, fd->name, rd.nsize, ALLOC_GC);
40003f3c: 00050993 mv s3,a0
if (IS_ERR(new_fd)) {
40003f40: 0ea7e263 bltu a5,a0,40004024 <jffs2_garbage_collect_pass+0xac0>
jffs2_add_fd_to_list(c, new_fd, &f->dents);
40003f44: 00050593 mv a1,a0
40003f48: 00c40613 addi a2,s0,12
40003f4c: 00048513 mv a0,s1
40003f50: 3a9000ef jal ra,40004af8 <jffs2_add_fd_to_list>
ret = jffs2_garbage_collect_dirent(c, jeb, f, fd);
40003f54: a5dff06f j 400039b0 <jffs2_garbage_collect_pass+0x44c>
BUG();
40003f58: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
40003f5c: 4001e637 lui a2,0x4001e <== NOT EXECUTED
40003f60: 4001d537 lui a0,0x4001d <== NOT EXECUTED
40003f64: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
40003f68: d3460613 addi a2,a2,-716 # 4001dd34 <__func__.2> <== NOT EXECUTED
40003f6c: 24800593 li a1,584 <== NOT EXECUTED
40003f70: 56c50513 addi a0,a0,1388 # 4001d56c <rtems_jffs2_ops+0x3e4> <== NOT EXECUTED
40003f74: 32c090ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
if (JFFS2_F_I_MTIME(f) == JFFS2_F_I_CTIME(f))
40003f78: fdc42683 lw a3,-36(s0)
40003f7c: f4f690e3 bne a3,a5,40003ebc <jffs2_garbage_collect_pass+0x958>
40003f80: f41ff06f j 40003ec0 <jffs2_garbage_collect_pass+0x95c>
*fdp = fd->next;
40003f84: 004a2783 lw a5,4(s4) <== NOT EXECUTED
40003f88: 00f72023 sw a5,0(a4) <== NOT EXECUTED
jffs2_mark_node_obsolete(c, fd->raw);
40003f8c: 00048513 mv a0,s1 <== NOT EXECUTED
40003f90: 30d010ef jal ra,40005a9c <jffs2_mark_node_obsolete> <== NOT EXECUTED
jffs2_free_full_dirent(fd);
40003f94: 000a0513 mv a0,s4 <== NOT EXECUTED
40003f98: 0e1000ef jal ra,40004878 <jffs2_free_full_dirent> <== NOT EXECUTED
ret = jffs2_garbage_collect_deletion_dirent(c, jeb, f, fd);
40003f9c: 00000d93 li s11,0 <== NOT EXECUTED
40003fa0: a11ff06f j 400039b0 <jffs2_garbage_collect_pass+0x44c> <== NOT EXECUTED
pr_warn("Deletion dirent \"%s\" not found in list for ino #%u\n",
40003fa4: 01442783 lw a5,20(s0) <== NOT EXECUTED
40003fa8: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40003fac: 015a0593 addi a1,s4,21 <== NOT EXECUTED
40003fb0: 00c7a603 lw a2,12(a5) <== NOT EXECUTED
40003fb4: c1050513 addi a0,a0,-1008 # 4001dc10 <rtems_jffs2_ops+0xa88> <== NOT EXECUTED
40003fb8: 97cff0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
40003fbc: 000a2583 lw a1,0(s4) <== NOT EXECUTED
40003fc0: fcdff06f j 40003f8c <jffs2_garbage_collect_pass+0xa28> <== NOT EXECUTED
pr_warn("%s(): New node has no frags!\n", __func__);
40003fc4: 4001e437 lui s0,0x4001e <== NOT EXECUTED
40003fc8: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40003fcc: d1840593 addi a1,s0,-744 # 4001dd18 <__func__.1> <== NOT EXECUTED
40003fd0: ac450513 addi a0,a0,-1340 # 4001dac4 <rtems_jffs2_ops+0x93c> <== NOT EXECUTED
40003fd4: 960ff0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
BUG();
40003fd8: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
40003fdc: 4001d537 lui a0,0x4001d <== NOT EXECUTED
40003fe0: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
40003fe4: d1840613 addi a2,s0,-744 <== NOT EXECUTED
40003fe8: 48b00593 li a1,1163 <== NOT EXECUTED
40003fec: 56c50513 addi a0,a0,1388 # 4001d56c <rtems_jffs2_ops+0x3e4> <== NOT EXECUTED
40003ff0: 2b0090ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
pr_warn("%s(): Old node still has frags!\n", __func__);
40003ff4: 4001e437 lui s0,0x4001e <== NOT EXECUTED
40003ff8: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40003ffc: d1840593 addi a1,s0,-744 # 4001dd18 <__func__.1> <== NOT EXECUTED
40004000: a9850513 addi a0,a0,-1384 # 4001da98 <rtems_jffs2_ops+0x910> <== NOT EXECUTED
40004004: 930ff0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
BUG();
40004008: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
4000400c: 4001d537 lui a0,0x4001d <== NOT EXECUTED
40004010: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
40004014: d1840613 addi a2,s0,-744 <== NOT EXECUTED
40004018: 48700593 li a1,1159 <== NOT EXECUTED
4000401c: 56c50513 addi a0,a0,1388 # 4001d56c <rtems_jffs2_ops+0x3e4> <== NOT EXECUTED
40004020: 280090ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
pr_warn("jffs2_write_dirent in garbage_collect_dirent failed: %ld\n",
40004024: 00050593 mv a1,a0 <== NOT EXECUTED
40004028: 4001e537 lui a0,0x4001e <== NOT EXECUTED
4000402c: bcc50513 addi a0,a0,-1076 # 4001dbcc <rtems_jffs2_ops+0xa44> <== NOT EXECUTED
40004030: 904ff0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
return PTR_ERR(new_fd);
40004034: 00098d93 mv s11,s3 <== NOT EXECUTED
40004038: 979ff06f j 400039b0 <jffs2_garbage_collect_pass+0x44c> <== NOT EXECUTED
pr_warn("jffs2_reserve_space_gc of %zd bytes for garbage_collect_dirent failed: %d\n",
4000403c: 04814583 lbu a1,72(sp) <== NOT EXECUTED
40004040: 00050613 mv a2,a0 <== NOT EXECUTED
40004044: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40004048: 02858593 addi a1,a1,40 <== NOT EXECUTED
4000404c: b7450513 addi a0,a0,-1164 # 4001db74 <rtems_jffs2_ops+0x9ec> <== NOT EXECUTED
40004050: 8e4ff0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
return ret;
40004054: 95dff06f j 400039b0 <jffs2_garbage_collect_pass+0x44c> <== NOT EXECUTED
jffs2_add_full_dnode_to_inode(c, f, new_fn);
40004058: 00050613 mv a2,a0 <== NOT EXECUTED
4000405c: 00040593 mv a1,s0 <== NOT EXECUTED
40004060: 00048513 mv a0,s1 <== NOT EXECUTED
40004064: 515000ef jal ra,40004d78 <jffs2_add_full_dnode_to_inode> <== NOT EXECUTED
if (f->metadata) {
40004068: 00842783 lw a5,8(s0) <== NOT EXECUTED
4000406c: 940782e3 beqz a5,400039b0 <jffs2_garbage_collect_pass+0x44c> <== NOT EXECUTED
jffs2_mark_node_obsolete(c, f->metadata->raw);
40004070: 0007a583 lw a1,0(a5) <== NOT EXECUTED
40004074: 00048513 mv a0,s1 <== NOT EXECUTED
40004078: 225010ef jal ra,40005a9c <jffs2_mark_node_obsolete> <== NOT EXECUTED
jffs2_free_full_dnode(f->metadata);
4000407c: 00842503 lw a0,8(s0) <== NOT EXECUTED
40004080: 005000ef jal ra,40004884 <jffs2_free_full_dnode> <== NOT EXECUTED
f->metadata = NULL;
40004084: 00042423 sw zero,8(s0) <== NOT EXECUTED
40004088: 929ff06f j 400039b0 <jffs2_garbage_collect_pass+0x44c> <== NOT EXECUTED
pr_warn("Error writing new hole node: %ld\n", PTR_ERR(new_fn));
4000408c: 00050593 mv a1,a0 <== NOT EXECUTED
40004090: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40004094: a6c50513 addi a0,a0,-1428 # 4001da6c <rtems_jffs2_ops+0x8e4> <== NOT EXECUTED
40004098: 89cff0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
return PTR_ERR(new_fn);
4000409c: 00098d93 mv s11,s3 <== NOT EXECUTED
400040a0: 911ff06f j 400039b0 <jffs2_garbage_collect_pass+0x44c> <== NOT EXECUTED
pr_warn("jffs2_reserve_space_gc of %zd bytes for garbage_collect_hole failed: %d\n",
400040a4: 00050613 mv a2,a0 <== NOT EXECUTED
400040a8: 4001e537 lui a0,0x4001e <== NOT EXECUTED
400040ac: 04400593 li a1,68 <== NOT EXECUTED
400040b0: a1850513 addi a0,a0,-1512 # 4001da18 <rtems_jffs2_ops+0x890> <== NOT EXECUTED
400040b4: 880ff0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
return ret;
400040b8: 8f9ff06f j 400039b0 <jffs2_garbage_collect_pass+0x44c> <== NOT EXECUTED
ilen = JFFS2_F_I_SIZE(f);
400040bc: ff042783 lw a5,-16(s0) <== NOT EXECUTED
400040c0: be1ff06f j 40003ca0 <jffs2_garbage_collect_pass+0x73c> <== NOT EXECUTED
pr_warn("%s(): Node 0x%08x wasn't a hole node!\n",
400040c4: 000a2783 lw a5,0(s4) <== NOT EXECUTED
400040c8: 4001e5b7 lui a1,0x4001e <== NOT EXECUTED
400040cc: 4001e537 lui a0,0x4001e <== NOT EXECUTED
400040d0: 0047a603 lw a2,4(a5) <== NOT EXECUTED
400040d4: d1858593 addi a1,a1,-744 # 4001dd18 <__func__.1> <== NOT EXECUTED
400040d8: 9e450513 addi a0,a0,-1564 # 4001d9e4 <rtems_jffs2_ops+0x85c> <== NOT EXECUTED
400040dc: ffc67613 andi a2,a2,-4 <== NOT EXECUTED
400040e0: 854ff0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
pr_warn("Data in the range 0x%08x to 0x%08x of inode #%u will be lost\n",
400040e4: 01442783 lw a5,20(s0) <== NOT EXECUTED
400040e8: 4001e537 lui a0,0x4001e <== NOT EXECUTED
400040ec: 000d0613 mv a2,s10 <== NOT EXECUTED
400040f0: 00c7a683 lw a3,12(a5) <== NOT EXECUTED
400040f4: 000a8593 mv a1,s5 <== NOT EXECUTED
400040f8: 99c50513 addi a0,a0,-1636 # 4001d99c <rtems_jffs2_ops+0x814> <== NOT EXECUTED
400040fc: 838ff0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
ri.magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
40004100: 000027b7 lui a5,0x2 <== NOT EXECUTED
40004104: 98578793 addi a5,a5,-1659 # 1985 <_ISR_Stack_size+0x985> <== NOT EXECUTED
40004108: 02f11623 sh a5,44(sp) <== NOT EXECUTED
ri.nodetype = cpu_to_je16(JFFS2_NODETYPE_INODE);
4000410c: ffffe7b7 lui a5,0xffffe <== NOT EXECUTED
40004110: 00278793 addi a5,a5,2 # ffffe002 <RamEnd+0xbeffe002> <== NOT EXECUTED
40004114: 02f11723 sh a5,46(sp) <== NOT EXECUTED
ri.hdr_crc = cpu_to_je32(crc32(0, &ri, sizeof(struct jffs2_unknown_node)-4));
40004118: 00800613 li a2,8 <== NOT EXECUTED
ri.totlen = cpu_to_je32(sizeof(ri));
4000411c: 04400793 li a5,68 <== NOT EXECUTED
ri.hdr_crc = cpu_to_je32(crc32(0, &ri, sizeof(struct jffs2_unknown_node)-4));
40004120: 00098593 mv a1,s3 <== NOT EXECUTED
40004124: 00000513 li a0,0 <== NOT EXECUTED
ri.totlen = cpu_to_je32(sizeof(ri));
40004128: 02f12823 sw a5,48(sp) <== NOT EXECUTED
ri.hdr_crc = cpu_to_je32(crc32(0, &ri, sizeof(struct jffs2_unknown_node)-4));
4000412c: 364060ef jal ra,4000a490 <cyg_crc32_accumulate> <== NOT EXECUTED
ri.ino = cpu_to_je32(f->inocache->ino);
40004130: 01442703 lw a4,20(s0) <== NOT EXECUTED
ri.version = cpu_to_je32(++f->highest_version);
40004134: 00042783 lw a5,0(s0) <== NOT EXECUTED
ri.hdr_crc = cpu_to_je32(crc32(0, &ri, sizeof(struct jffs2_unknown_node)-4));
40004138: 02a12a23 sw a0,52(sp) <== NOT EXECUTED
ri.ino = cpu_to_je32(f->inocache->ino);
4000413c: 00c72703 lw a4,12(a4) <== NOT EXECUTED
ri.version = cpu_to_je32(++f->highest_version);
40004140: 00178793 addi a5,a5,1 <== NOT EXECUTED
ri.dsize = cpu_to_je32(end - start);
40004144: 415d0833 sub a6,s10,s5 <== NOT EXECUTED
ri.ino = cpu_to_je32(f->inocache->ino);
40004148: 02e12c23 sw a4,56(sp) <== NOT EXECUTED
ri.version = cpu_to_je32(++f->highest_version);
4000414c: 00f42023 sw a5,0(s0) <== NOT EXECUTED
40004150: 02f12e23 sw a5,60(sp) <== NOT EXECUTED
ri.compr = JFFS2_COMPR_ZERO;
40004154: 00100793 li a5,1 <== NOT EXECUTED
ri.offset = cpu_to_je32(start);
40004158: 05512c23 sw s5,88(sp) <== NOT EXECUTED
ri.dsize = cpu_to_je32(end - start);
4000415c: 07012023 sw a6,96(sp) <== NOT EXECUTED
ri.csize = cpu_to_je32(0);
40004160: 04012e23 sw zero,92(sp) <== NOT EXECUTED
ri.compr = JFFS2_COMPR_ZERO;
40004164: 06f10223 sb a5,100(sp) <== NOT EXECUTED
40004168: b21ff06f j 40003c88 <jffs2_garbage_collect_pass+0x724> <== NOT EXECUTED
pr_warn("%s: Node at 0x%08x had CRC 0x%08x which doesn't match calculated CRC 0x%08x\n",
4000416c: 000a2783 lw a5,0(s4) <== NOT EXECUTED
40004170: 4001e5b7 lui a1,0x4001e <== NOT EXECUTED
40004174: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40004178: 0047a603 lw a2,4(a5) <== NOT EXECUTED
4000417c: d1858593 addi a1,a1,-744 # 4001dd18 <__func__.1> <== NOT EXECUTED
40004180: 94450513 addi a0,a0,-1724 # 4001d944 <rtems_jffs2_ops+0x7bc> <== NOT EXECUTED
40004184: ffc67613 andi a2,a2,-4 <== NOT EXECUTED
40004188: fadfe0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
pr_warn("Data in the range 0x%08x to 0x%08x of inode #%u will be lost\n",
4000418c: f59ff06f j 400040e4 <jffs2_garbage_collect_pass+0xb80> <== NOT EXECUTED
pr_warn("%s(): Node at 0x%08x had totlen 0x%x instead of expected 0x%zx\n",
40004190: 000a2783 lw a5,0(s4) <== NOT EXECUTED
40004194: 4001e5b7 lui a1,0x4001e <== NOT EXECUTED
40004198: 4001e537 lui a0,0x4001e <== NOT EXECUTED
4000419c: 0047a603 lw a2,4(a5) <== NOT EXECUTED
400041a0: 04400713 li a4,68 <== NOT EXECUTED
400041a4: d1858593 addi a1,a1,-744 # 4001dd18 <__func__.1> <== NOT EXECUTED
400041a8: ffc67613 andi a2,a2,-4 <== NOT EXECUTED
400041ac: 8f850513 addi a0,a0,-1800 # 4001d8f8 <rtems_jffs2_ops+0x770> <== NOT EXECUTED
400041b0: f85fe0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
return -EIO;
400041b4: ffb00d93 li s11,-5 <== NOT EXECUTED
400041b8: ff8ff06f j 400039b0 <jffs2_garbage_collect_pass+0x44c> <== NOT EXECUTED
pr_warn("%s(): Node at 0x%08x had node type 0x%04x instead of JFFS2_NODETYPE_INODE(0x%04x)\n",
400041bc: 000a2783 lw a5,0(s4) <== NOT EXECUTED
400041c0: 4001e5b7 lui a1,0x4001e <== NOT EXECUTED
400041c4: 4001e537 lui a0,0x4001e <== NOT EXECUTED
400041c8: 0047a603 lw a2,4(a5) <== NOT EXECUTED
400041cc: d1858593 addi a1,a1,-744 # 4001dd18 <__func__.1> <== NOT EXECUTED
400041d0: 89850513 addi a0,a0,-1896 # 4001d898 <rtems_jffs2_ops+0x710> <== NOT EXECUTED
400041d4: ffc67613 andi a2,a2,-4 <== NOT EXECUTED
400041d8: f5dfe0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
return -EIO;
400041dc: ffb00d93 li s11,-5 <== NOT EXECUTED
400041e0: fd0ff06f j 400039b0 <jffs2_garbage_collect_pass+0x44c> <== NOT EXECUTED
pr_warn("Node read failed in jffs2_garbage_collect_hole. Ret %d, retlen %zd. Data will be lost by writing new hole node\n",
400041e4: 4001e537 lui a0,0x4001e <== NOT EXECUTED
400041e8: 81c50513 addi a0,a0,-2020 # 4001d81c <rtems_jffs2_ops+0x694> <== NOT EXECUTED
400041ec: f49fe0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
goto fill;
400041f0: f11ff06f j 40004100 <jffs2_garbage_collect_pass+0xb9c> <== NOT EXECUTED
int ret = 0;
unsigned char *comprbuf = NULL, *writebuf;
unsigned long pg;
unsigned char *pg_ptr;
memset(&ri, 0, sizeof(ri));
400041f4: 02c10993 addi s3,sp,44
400041f8: 04400613 li a2,68
400041fc: 00000593 li a1,0
40004200: 00098513 mv a0,s3
unsigned char *comprbuf = NULL, *writebuf;
40004204: 00012e23 sw zero,28(sp)
memset(&ri, 0, sizeof(ri));
40004208: 711170ef jal ra,4001c118 <memset>
f->inocache->ino, start, end);
orig_end = end;
orig_start = start;
if (c->nr_free_blocks + c->nr_erasing_blocks > c->resv_blocks_gcmerge) {
4000420c: 03c4a783 lw a5,60(s1)
40004210: 0404a683 lw a3,64(s1)
40004214: 0484c703 lbu a4,72(s1)
40004218: 00d787b3 add a5,a5,a3
4000421c: 36f77063 bgeu a4,a5,4000457c <jffs2_garbage_collect_pass+0x1018>
uint32_t min, max;
min = start & ~(PAGE_SIZE-1);
max = min + PAGE_SIZE;
frag = jffs2_lookup_node_frag(&f->fragtree, start);
40004220: 000a8593 mv a1,s5
40004224: 000b0513 mv a0,s6
40004228: 258010ef jal ra,40005480 <jffs2_lookup_node_frag>
/* BUG_ON(!frag) but that'll happen anyway... */
BUG_ON(frag->ofs != start);
4000422c: 01852783 lw a5,24(a0)
min = start & ~(PAGE_SIZE-1);
40004230: fffffcb7 lui s9,0xfffff
40004234: 019afcb3 and s9,s5,s9
max = min + PAGE_SIZE;
40004238: 00001bb7 lui s7,0x1
4000423c: 017c8bb3 add s7,s9,s7
BUG_ON(frag->ofs != start);
40004240: 000a8a13 mv s4,s5
40004244: 31579c63 bne a5,s5,4000455c <jffs2_garbage_collect_pass+0xff8>
return _RBTree_Predecessor( node );
40004248: 42c100ef jal ra,40014674 <_RBTree_Predecessor>
/* First grow down... */
while((frag = frag_prev(frag)) && frag->ofs >= min) {
4000424c: 04050e63 beqz a0,400042a8 <jffs2_garbage_collect_pass+0xd44>
40004250: 01852783 lw a5,24(a0)
40004254: 0597ea63 bltu a5,s9,400042a8 <jffs2_garbage_collect_pass+0xd44>
/* If the previous frag doesn't even reach the beginning, there's
excessive fragmentation. Just merge. */
if (frag->ofs > min) {
40004258: 2efcee63 bltu s9,a5,40004554 <jffs2_garbage_collect_pass+0xff0>
frag->ofs, frag->ofs+frag->size);
start = frag->ofs;
continue;
}
/* OK. This frag holds the first byte of the page. */
if (!frag->node || !frag->node->raw) {
4000425c: 01052703 lw a4,16(a0)
40004260: 04070463 beqz a4,400042a8 <jffs2_garbage_collect_pass+0xd44> <== NEVER TAKEN
40004264: 00072703 lw a4,0(a4)
40004268: 04070063 beqz a4,400042a8 <jffs2_garbage_collect_pass+0xd44> <== NEVER TAKEN
If not, cover it anyway. */
struct jffs2_raw_node_ref *raw = frag->node->raw;
struct jffs2_eraseblock *jeb;
jeb = &c->blocks[raw->flash_offset / c->sector_size];
4000426c: 00472683 lw a3,4(a4)
40004270: 0344a603 lw a2,52(s1)
40004274: 03400593 li a1,52
40004278: 0544a703 lw a4,84(s1)
4000427c: 02c6d6b3 divu a3,a3,a2
if (jeb == c->gcblock) {
40004280: 05c4a603 lw a2,92(s1)
jeb = &c->blocks[raw->flash_offset / c->sector_size];
40004284: 02b686b3 mul a3,a3,a1
40004288: 00d70733 add a4,a4,a3
if (jeb == c->gcblock) {
4000428c: 00c70c63 beq a4,a2,400042a4 <jffs2_garbage_collect_pass+0xd40>
frag->ofs + frag->size,
ref_offset(raw));
start = frag->ofs;
break;
}
if (!ISDIRTY(jeb->dirty_size + jeb->wasted_size)) {
40004290: 01872683 lw a3,24(a4)
40004294: 01c72703 lw a4,28(a4)
40004298: 0c400613 li a2,196
4000429c: 00e68733 add a4,a3,a4
400042a0: 00e67463 bgeu a2,a4,400042a8 <jffs2_garbage_collect_pass+0xd44>
while((frag = frag_prev(frag)) && frag->ofs >= min) {
400042a4: 00078a13 mv s4,a5
}
/* ... then up */
/* Find last frag which is actually part of the node we're to GC. */
frag = jffs2_lookup_node_frag(&f->fragtree, end-1);
400042a8: 000b0513 mv a0,s6
400042ac: 000c0593 mv a1,s8
400042b0: 1d0010ef jal ra,40005480 <jffs2_lookup_node_frag>
while((frag = frag_next(frag)) && frag->ofs+frag->size <= max) {
400042b4: 000d0b13 mv s6,s10
return _RBTree_Successor( node );
400042b8: 368100ef jal ra,40014620 <_RBTree_Successor>
400042bc: 06050063 beqz a0,4000431c <jffs2_garbage_collect_pass+0xdb8>
400042c0: 01852783 lw a5,24(a0)
400042c4: 01452703 lw a4,20(a0)
400042c8: 00e787b3 add a5,a5,a4
400042cc: 04fbe863 bltu s7,a5,4000431c <jffs2_garbage_collect_pass+0xdb8>
/* If the previous frag doesn't even reach the beginning, there's lots
of fragmentation. Just merge. */
if (frag->ofs+frag->size < max) {
400042d0: 2777ee63 bltu a5,s7,4000454c <jffs2_garbage_collect_pass+0xfe8>
frag->ofs, frag->ofs+frag->size);
end = frag->ofs + frag->size;
continue;
}
if (!frag->node || !frag->node->raw) {
400042d4: 01052703 lw a4,16(a0)
400042d8: 04070263 beqz a4,4000431c <jffs2_garbage_collect_pass+0xdb8> <== NEVER TAKEN
400042dc: 00072703 lw a4,0(a4)
400042e0: 02070e63 beqz a4,4000431c <jffs2_garbage_collect_pass+0xdb8> <== NEVER TAKEN
If not, cover it anyway. */
struct jffs2_raw_node_ref *raw = frag->node->raw;
struct jffs2_eraseblock *jeb;
jeb = &c->blocks[raw->flash_offset / c->sector_size];
400042e4: 00472683 lw a3,4(a4)
400042e8: 0344a603 lw a2,52(s1)
400042ec: 03400593 li a1,52
400042f0: 0544a703 lw a4,84(s1)
400042f4: 02c6d6b3 divu a3,a3,a2
if (jeb == c->gcblock) {
400042f8: 05c4a603 lw a2,92(s1)
jeb = &c->blocks[raw->flash_offset / c->sector_size];
400042fc: 02b686b3 mul a3,a3,a1
40004300: 00d70733 add a4,a4,a3
if (jeb == c->gcblock) {
40004304: 24c70063 beq a4,a2,40004544 <jffs2_garbage_collect_pass+0xfe0>
frag->ofs + frag->size,
ref_offset(raw));
end = frag->ofs + frag->size;
break;
}
if (!ISDIRTY(jeb->dirty_size + jeb->wasted_size)) {
40004308: 01872683 lw a3,24(a4)
4000430c: 01c72703 lw a4,28(a4)
40004310: 0c400613 li a2,196
40004314: 00e68733 add a4,a3,a4
40004318: 22e66663 bltu a2,a4,40004544 <jffs2_garbage_collect_pass+0xfe0>
}
jffs2_dbg(1, "Expanded dnode to write from (0x%x-0x%x) to (0x%x-0x%x)\n",
orig_start, orig_end, start, end);
D1(BUG_ON(end > frag_last(&f->fragtree)->ofs + frag_last(&f->fragtree)->size));
BUG_ON(end < orig_end);
4000431c: 4bab6263 bltu s6,s10,400047c0 <jffs2_garbage_collect_pass+0x125c>
BUG_ON(start > orig_start);
40004320: 494ae063 bltu s5,s4,400047a0 <jffs2_garbage_collect_pass+0x123c>
* It is important to note that jffs2_write_begin() will ensure that its
* page is marked Uptodate before allocating space. That means that if we
* end up here trying to GC the *same* page that jffs2_write_begin() is
* trying to write out, read_cache_page() will not deadlock. */
mutex_unlock(&f->sem);
pg_ptr = jffs2_gc_fetch_page(c, f, start, &pg);
40004324: 02010693 addi a3,sp,32
40004328: 000a0613 mv a2,s4
4000432c: 00040593 mv a1,s0
40004330: 00048513 mv a0,s1
40004334: bc8fe0ef jal ra,400026fc <jffs2_gc_fetch_page>
mutex_lock(&f->sem);
if (IS_ERR(pg_ptr)) {
40004338: c1800793 li a5,-1000
pg_ptr = jffs2_gc_fetch_page(c, f, start, &pg);
4000433c: 00050a93 mv s5,a0
int ret = 0;
40004340: 00000d93 li s11,0
if (IS_ERR(pg_ptr)) {
40004344: 44a7e263 bltu a5,a0,40004788 <jffs2_garbage_collect_pass+0x1224>
break;
}
cdatalen = min_t(uint32_t, alloclen - sizeof(ri), end - offset);
datalen = end - offset;
writebuf = pg_ptr + (offset & (PAGE_SIZE -1));
40004348: 000017b7 lui a5,0x1
4000434c: fff78793 addi a5,a5,-1 # fff <bsp_section_start_size+0xfbb>
comprtype = jffs2_compress(c, f, writebuf, &comprbuf, &datalen, &cdatalen);
ri.magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
40004350: 00002cb7 lui s9,0x2
ri.nodetype = cpu_to_je16(JFFS2_NODETYPE_INODE);
40004354: ffffec37 lui s8,0xffffe
40004358: 0000fbb7 lui s7,0xf
writebuf = pg_ptr + (offset & (PAGE_SIZE -1));
4000435c: 00f12623 sw a5,12(sp)
ri.magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
40004360: 985c8c93 addi s9,s9,-1659 # 1985 <_ISR_Stack_size+0x985>
ri.nodetype = cpu_to_je16(JFFS2_NODETYPE_INODE);
40004364: 002c0c13 addi s8,s8,2 # ffffe002 <RamEnd+0xbeffe002>
40004368: 1ffb8b93 addi s7,s7,511 # f1ff <bsp_section_rodata_size+0xa12b>
while(offset < orig_end) {
4000436c: 3faa7a63 bgeu s4,s10,40004760 <jffs2_garbage_collect_pass+0x11fc>
ret = jffs2_reserve_space_gc(c, sizeof(ri) + JFFS2_MIN_DATA_LEN,
40004370: 01200693 li a3,18
40004374: 01810613 addi a2,sp,24
40004378: 0c400593 li a1,196
4000437c: 00048513 mv a0,s1
40004380: 699010ef jal ra,40006218 <jffs2_reserve_space_gc>
40004384: 00050d93 mv s11,a0
if (ret) {
40004388: 3c051263 bnez a0,4000474c <jffs2_garbage_collect_pass+0x11e8> <== NEVER TAKEN
cdatalen = min_t(uint32_t, alloclen - sizeof(ri), end - offset);
4000438c: 01812883 lw a7,24(sp)
40004390: 414b0333 sub t1,s6,s4
40004394: fbc88893 addi a7,a7,-68
40004398: 01137463 bgeu t1,a7,400043a0 <jffs2_garbage_collect_pass+0xe3c>
4000439c: 00030893 mv a7,t1
writebuf = pg_ptr + (offset & (PAGE_SIZE -1));
400043a0: 00c12783 lw a5,12(sp)
comprtype = jffs2_compress(c, f, writebuf, &comprbuf, &datalen, &cdatalen);
400043a4: 01c10693 addi a3,sp,28
400043a8: 02410713 addi a4,sp,36
writebuf = pg_ptr + (offset & (PAGE_SIZE -1));
400043ac: 00fa7633 and a2,s4,a5
comprtype = jffs2_compress(c, f, writebuf, &comprbuf, &datalen, &cdatalen);
400043b0: 00ca8633 add a2,s5,a2
400043b4: 02810793 addi a5,sp,40
400043b8: 00040593 mv a1,s0
400043bc: 00048513 mv a0,s1
cdatalen = min_t(uint32_t, alloclen - sizeof(ri), end - offset);
400043c0: 03112423 sw a7,40(sp)
datalen = end - offset;
400043c4: 02612223 sw t1,36(sp)
comprtype = jffs2_compress(c, f, writebuf, &comprbuf, &datalen, &cdatalen);
400043c8: 104060ef jal ra,4000a4cc <jffs2_compress>
ri.totlen = cpu_to_je32(sizeof(ri) + cdatalen);
400043cc: 02812783 lw a5,40(sp)
comprtype = jffs2_compress(c, f, writebuf, &comprbuf, &datalen, &cdatalen);
400043d0: 00050d93 mv s11,a0
ri.hdr_crc = cpu_to_je32(crc32(0, &ri, sizeof(struct jffs2_unknown_node)-4));
400043d4: 00800613 li a2,8
ri.totlen = cpu_to_je32(sizeof(ri) + cdatalen);
400043d8: 04478793 addi a5,a5,68
ri.hdr_crc = cpu_to_je32(crc32(0, &ri, sizeof(struct jffs2_unknown_node)-4));
400043dc: 00098593 mv a1,s3
400043e0: 00000513 li a0,0
ri.totlen = cpu_to_je32(sizeof(ri) + cdatalen);
400043e4: 02f12823 sw a5,48(sp)
ri.magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
400043e8: 03911623 sh s9,44(sp)
ri.nodetype = cpu_to_je16(JFFS2_NODETYPE_INODE);
400043ec: 03811723 sh s8,46(sp)
ri.hdr_crc = cpu_to_je32(crc32(0, &ri, sizeof(struct jffs2_unknown_node)-4));
400043f0: 0a0060ef jal ra,4000a490 <cyg_crc32_accumulate>
ri.ino = cpu_to_je32(f->inocache->ino);
400043f4: 01442703 lw a4,20(s0)
ri.version = cpu_to_je32(++f->highest_version);
400043f8: 00042783 lw a5,0(s0)
ri.hdr_crc = cpu_to_je32(crc32(0, &ri, sizeof(struct jffs2_unknown_node)-4));
400043fc: 02a12a23 sw a0,52(sp)
ri.ino = cpu_to_je32(f->inocache->ino);
40004400: 00c72603 lw a2,12(a4)
ri.version = cpu_to_je32(++f->highest_version);
40004404: 00178793 addi a5,a5,1
40004408: fc042703 lw a4,-64(s0)
ri.ino = cpu_to_je32(f->inocache->ino);
4000440c: 02c12c23 sw a2,56(sp)
ri.version = cpu_to_je32(++f->highest_version);
40004410: 00f42023 sw a5,0(s0)
ri.mode = cpu_to_jemode(JFFS2_F_I_MODE(f));
ri.uid = cpu_to_je16(JFFS2_F_I_UID(f));
40004414: fc645283 lhu t0,-58(s0)
ri.gid = cpu_to_je16(JFFS2_F_I_GID(f));
40004418: fc845f83 lhu t6,-56(s0)
ri.isize = cpu_to_je32(JFFS2_F_I_SIZE(f));
4000441c: ff042f03 lw t5,-16(s0)
ri.atime = cpu_to_je32(JFFS2_F_I_ATIME(f));
40004420: fd042e83 lw t4,-48(s0)
ri.ctime = cpu_to_je32(JFFS2_F_I_CTIME(f));
40004424: fe042e03 lw t3,-32(s0)
ri.mtime = cpu_to_je32(JFFS2_F_I_MTIME(f));
40004428: fd842303 lw t1,-40(s0)
ri.version = cpu_to_je32(++f->highest_version);
4000442c: 02f12e23 sw a5,60(sp)
ri.offset = cpu_to_je32(offset);
ri.csize = cpu_to_je32(cdatalen);
40004430: 02812783 lw a5,40(sp)
ri.dsize = cpu_to_je32(datalen);
ri.compr = comprtype & 0xff;
ri.usercompr = (comprtype >> 8) & 0xff;
40004434: 008dd893 srli a7,s11,0x8
40004438: 01777733 and a4,a4,s7
ri.csize = cpu_to_je32(cdatalen);
4000443c: 04f12e23 sw a5,92(sp)
ri.dsize = cpu_to_je32(datalen);
40004440: 02412783 lw a5,36(sp)
ri.node_crc = cpu_to_je32(crc32(0, &ri, sizeof(ri)-8));
40004444: 03c00613 li a2,60
40004448: 00098593 mv a1,s3
4000444c: 00000513 li a0,0
ri.mode = cpu_to_jemode(JFFS2_F_I_MODE(f));
40004450: 04e12023 sw a4,64(sp)
ri.uid = cpu_to_je16(JFFS2_F_I_UID(f));
40004454: 04511223 sh t0,68(sp)
ri.gid = cpu_to_je16(JFFS2_F_I_GID(f));
40004458: 05f11323 sh t6,70(sp)
ri.isize = cpu_to_je32(JFFS2_F_I_SIZE(f));
4000445c: 05e12423 sw t5,72(sp)
ri.atime = cpu_to_je32(JFFS2_F_I_ATIME(f));
40004460: 05d12623 sw t4,76(sp)
ri.ctime = cpu_to_je32(JFFS2_F_I_CTIME(f));
40004464: 05c12a23 sw t3,84(sp)
ri.mtime = cpu_to_je32(JFFS2_F_I_MTIME(f));
40004468: 04612823 sw t1,80(sp)
ri.usercompr = (comprtype >> 8) & 0xff;
4000446c: 071102a3 sb a7,101(sp)
ri.dsize = cpu_to_je32(datalen);
40004470: 06f12023 sw a5,96(sp)
ri.compr = comprtype & 0xff;
40004474: 07b10223 sb s11,100(sp)
ri.offset = cpu_to_je32(offset);
40004478: 05412c23 sw s4,88(sp)
ri.node_crc = cpu_to_je32(crc32(0, &ri, sizeof(ri)-8));
4000447c: 014060ef jal ra,4000a490 <cyg_crc32_accumulate>
ri.data_crc = cpu_to_je32(crc32(0, comprbuf, cdatalen));
40004480: 02812603 lw a2,40(sp)
40004484: 01c12583 lw a1,28(sp)
ri.node_crc = cpu_to_je32(crc32(0, &ri, sizeof(ri)-8));
40004488: 00050793 mv a5,a0
ri.data_crc = cpu_to_je32(crc32(0, comprbuf, cdatalen));
4000448c: 00000513 li a0,0
ri.node_crc = cpu_to_je32(crc32(0, &ri, sizeof(ri)-8));
40004490: 06f12623 sw a5,108(sp)
ri.data_crc = cpu_to_je32(crc32(0, comprbuf, cdatalen));
40004494: 7fd050ef jal ra,4000a490 <cyg_crc32_accumulate>
new_fn = jffs2_write_dnode(c, f, &ri, comprbuf, cdatalen, ALLOC_GC);
40004498: 02812703 lw a4,40(sp)
4000449c: 01c12683 lw a3,28(sp)
ri.data_crc = cpu_to_je32(crc32(0, comprbuf, cdatalen));
400044a0: 00050893 mv a7,a0
new_fn = jffs2_write_dnode(c, f, &ri, comprbuf, cdatalen, ALLOC_GC);
400044a4: 00200793 li a5,2
400044a8: 00098613 mv a2,s3
400044ac: 00040593 mv a1,s0
400044b0: 00048513 mv a0,s1
ri.data_crc = cpu_to_je32(crc32(0, comprbuf, cdatalen));
400044b4: 07112423 sw a7,104(sp)
new_fn = jffs2_write_dnode(c, f, &ri, comprbuf, cdatalen, ALLOC_GC);
400044b8: 4e0040ef jal ra,40008998 <jffs2_write_dnode>
jffs2_free_comprbuf(comprbuf, writebuf);
if (IS_ERR(new_fn)) {
400044bc: c1800793 li a5,-1000
new_fn = jffs2_write_dnode(c, f, &ri, comprbuf, cdatalen, ALLOC_GC);
400044c0: 00050d93 mv s11,a0
if (IS_ERR(new_fn)) {
400044c4: 2aa7e863 bltu a5,a0,40004774 <jffs2_garbage_collect_pass+0x1210>
pr_warn("Error writing new dnode: %ld\n",
PTR_ERR(new_fn));
ret = PTR_ERR(new_fn);
break;
}
ret = jffs2_add_full_dnode_to_inode(c, f, new_fn);
400044c8: 00050613 mv a2,a0
400044cc: 00040593 mv a1,s0
400044d0: 00048513 mv a0,s1
400044d4: 0a5000ef jal ra,40004d78 <jffs2_add_full_dnode_to_inode>
offset += datalen;
400044d8: 02412703 lw a4,36(sp)
if (f->metadata) {
400044dc: 00842783 lw a5,8(s0)
ret = jffs2_add_full_dnode_to_inode(c, f, new_fn);
400044e0: 00050d93 mv s11,a0
offset += datalen;
400044e4: 00ea0a33 add s4,s4,a4
if (f->metadata) {
400044e8: e80782e3 beqz a5,4000436c <jffs2_garbage_collect_pass+0xe08> <== ALWAYS TAKEN
jffs2_mark_node_obsolete(c, f->metadata->raw);
400044ec: 0007a583 lw a1,0(a5) <== NOT EXECUTED
400044f0: 00048513 mv a0,s1 <== NOT EXECUTED
400044f4: 5a8010ef jal ra,40005a9c <jffs2_mark_node_obsolete> <== NOT EXECUTED
jffs2_free_full_dnode(f->metadata);
400044f8: 00842503 lw a0,8(s0) <== NOT EXECUTED
400044fc: 388000ef jal ra,40004884 <jffs2_free_full_dnode> <== NOT EXECUTED
f->metadata = NULL;
40004500: 00042423 sw zero,8(s0) <== NOT EXECUTED
40004504: e69ff06f j 4000436c <jffs2_garbage_collect_pass+0xe08> <== NOT EXECUTED
ret = jffs2_garbage_collect_pristine(c, f->inocache, raw);
40004508: 01442583 lw a1,20(s0) <== NOT EXECUTED
4000450c: 00098613 mv a2,s3 <== NOT EXECUTED
40004510: 00048513 mv a0,s1 <== NOT EXECUTED
40004514: c61fe0ef jal ra,40003174 <jffs2_garbage_collect_pristine> <== NOT EXECUTED
40004518: 00050d93 mv s11,a0 <== NOT EXECUTED
if (!ret) {
4000451c: 00051c63 bnez a0,40004534 <jffs2_garbage_collect_pass+0xfd0> <== NOT EXECUTED
frag->node->raw = f->inocache->nodes;
40004520: 01442703 lw a4,20(s0) <== NOT EXECUTED
40004524: 010ba783 lw a5,16(s7) <== NOT EXECUTED
40004528: 00472703 lw a4,4(a4) <== NOT EXECUTED
4000452c: 00e7a023 sw a4,0(a5) <== NOT EXECUTED
if (ret != -EBADFD)
40004530: c80ff06f j 400039b0 <jffs2_garbage_collect_pass+0x44c> <== NOT EXECUTED
40004534: ffff87b7 lui a5,0xffff8 <== NOT EXECUTED
40004538: 00178793 addi a5,a5,1 # ffff8001 <RamEnd+0xbeff8001> <== NOT EXECUTED
4000453c: eaf50463 beq a0,a5,40003be4 <jffs2_garbage_collect_pass+0x680> <== NOT EXECUTED
40004540: c70ff06f j 400039b0 <jffs2_garbage_collect_pass+0x44c> <== NOT EXECUTED
while((frag = frag_next(frag)) && frag->ofs+frag->size <= max) {
40004544: 00078b13 mv s6,a5
40004548: dd5ff06f j 4000431c <jffs2_garbage_collect_pass+0xdb8>
4000454c: 00078b13 mv s6,a5
40004550: d69ff06f j 400042b8 <jffs2_garbage_collect_pass+0xd54>
40004554: 00078a13 mv s4,a5 <== NOT EXECUTED
40004558: cf1ff06f j 40004248 <jffs2_garbage_collect_pass+0xce4> <== NOT EXECUTED
BUG_ON(frag->ofs != start);
4000455c: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
40004560: 4001e637 lui a2,0x4001e <== NOT EXECUTED
40004564: 4001d537 lui a0,0x4001d <== NOT EXECUTED
40004568: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
4000456c: cfc60613 addi a2,a2,-772 # 4001dcfc <__func__.0> <== NOT EXECUTED
40004570: 4ba00593 li a1,1210 <== NOT EXECUTED
40004574: 56c50513 addi a0,a0,1388 # 4001d56c <rtems_jffs2_ops+0x3e4> <== NOT EXECUTED
40004578: 529080ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
4000457c: 000d0b13 mv s6,s10
40004580: 000a8a13 mv s4,s5
40004584: da1ff06f j 40004324 <jffs2_garbage_collect_pass+0xdc0>
ret = 0;
40004588: 00000d93 li s11,0 <== NOT EXECUTED
4000458c: c3cff06f j 400039c8 <jffs2_garbage_collect_pass+0x464> <== NOT EXECUTED
ret = PTR_ERR(f);
40004590: 00050d93 mv s11,a0 <== NOT EXECUTED
goto release_sem;
40004594: c34ff06f j 400039c8 <jffs2_garbage_collect_pass+0x464> <== NOT EXECUTED
if (S_ISBLK(JFFS2_F_I_MODE(f)) ||
40004598: fc052783 lw a5,-64(a0)
4000459c: 0000b737 lui a4,0xb
400045a0: 0000f637 lui a2,0xf
400045a4: 00e7f733 and a4,a5,a4
400045a8: 000026b7 lui a3,0x2
400045ac: 00c7f7b3 and a5,a5,a2
400045b0: c0d702e3 beq a4,a3,400041b4 <jffs2_garbage_collect_pass+0xc50>
} else if (S_ISLNK(JFFS2_F_I_MODE(f))) {
400045b4: 0000a737 lui a4,0xa
int mdatalen = 0;
400045b8: 00000993 li s3,0
} else if (S_ISLNK(JFFS2_F_I_MODE(f))) {
400045bc: 22e78e63 beq a5,a4,400047f8 <jffs2_garbage_collect_pass+0x1294>
ret = jffs2_reserve_space_gc(c, sizeof(ri) + mdatalen, &alloclen,
400045c0: 04498b13 addi s6,s3,68
400045c4: 01200693 li a3,18
400045c8: 02810613 addi a2,sp,40
400045cc: 000b0593 mv a1,s6
400045d0: 00048513 mv a0,s1
400045d4: 445010ef jal ra,40006218 <jffs2_reserve_space_gc>
400045d8: 00050d93 mv s11,a0
if (ret) {
400045dc: 20051263 bnez a0,400047e0 <jffs2_garbage_collect_pass+0x127c> <== NEVER TAKEN
return _RBTree_Maximum( (RBTree_Control *) root );
400045e0: 00440513 addi a0,s0,4
400045e4: 01c100ef jal ra,40014600 <_RBTree_Maximum>
400045e8: 26050263 beqz a0,4000484c <jffs2_garbage_collect_pass+0x12e8> <== NEVER TAKEN
ilen = last_frag->ofs + last_frag->size;
400045ec: 01852b83 lw s7,24(a0)
400045f0: 01452783 lw a5,20(a0)
400045f4: 00fb8bb3 add s7,s7,a5
memset(&ri, 0, sizeof(ri));
400045f8: 03c00613 li a2,60
400045fc: 00000593 li a1,0
40004600: 03410513 addi a0,sp,52
40004604: 315170ef jal ra,4001c118 <memset>
ri.magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
40004608: 000027b7 lui a5,0x2
4000460c: 98578793 addi a5,a5,-1659 # 1985 <_ISR_Stack_size+0x985>
40004610: 02f11623 sh a5,44(sp)
ri.nodetype = cpu_to_je16(JFFS2_NODETYPE_INODE);
40004614: ffffe7b7 lui a5,0xffffe
40004618: 00278793 addi a5,a5,2 # ffffe002 <RamEnd+0xbeffe002>
ri.hdr_crc = cpu_to_je32(crc32(0, &ri, sizeof(struct jffs2_unknown_node)-4));
4000461c: 00800613 li a2,8
40004620: 02c10593 addi a1,sp,44
40004624: 00000513 li a0,0
ri.nodetype = cpu_to_je16(JFFS2_NODETYPE_INODE);
40004628: 02f11723 sh a5,46(sp)
ri.totlen = cpu_to_je32(sizeof(ri) + mdatalen);
4000462c: 03612823 sw s6,48(sp)
ri.hdr_crc = cpu_to_je32(crc32(0, &ri, sizeof(struct jffs2_unknown_node)-4));
40004630: 661050ef jal ra,4000a490 <cyg_crc32_accumulate>
ri.ino = cpu_to_je32(f->inocache->ino);
40004634: 01442683 lw a3,20(s0)
ri.version = cpu_to_je32(++f->highest_version);
40004638: 00042783 lw a5,0(s0)
4000463c: fc042703 lw a4,-64(s0)
ri.ino = cpu_to_je32(f->inocache->ino);
40004640: 00c6a683 lw a3,12(a3) # 200c <bsp_section_rtemsstack_size+0xc>
ri.uid = cpu_to_je16(JFFS2_F_I_UID(f));
40004644: fc645f03 lhu t5,-58(s0)
ri.gid = cpu_to_je16(JFFS2_F_I_GID(f));
40004648: fc845e83 lhu t4,-56(s0)
ri.atime = cpu_to_je32(JFFS2_F_I_ATIME(f));
4000464c: fd042e03 lw t3,-48(s0)
ri.ctime = cpu_to_je32(JFFS2_F_I_CTIME(f));
40004650: fe042303 lw t1,-32(s0)
ri.mtime = cpu_to_je32(JFFS2_F_I_MTIME(f));
40004654: fd842803 lw a6,-40(s0)
ri.ino = cpu_to_je32(f->inocache->ino);
40004658: 02d12c23 sw a3,56(sp)
4000465c: 0000f6b7 lui a3,0xf
ri.version = cpu_to_je32(++f->highest_version);
40004660: 00178793 addi a5,a5,1
40004664: 1ff68693 addi a3,a3,511 # f1ff <bsp_section_rodata_size+0xa12b>
ri.hdr_crc = cpu_to_je32(crc32(0, &ri, sizeof(struct jffs2_unknown_node)-4));
40004668: 02a12a23 sw a0,52(sp)
ri.version = cpu_to_je32(++f->highest_version);
4000466c: 00f42023 sw a5,0(s0)
40004670: 00d77733 and a4,a4,a3
ri.node_crc = cpu_to_je32(crc32(0, &ri, sizeof(ri)-8));
40004674: 03c00613 li a2,60
40004678: 02c10593 addi a1,sp,44
4000467c: 00000513 li a0,0
ri.mode = cpu_to_jemode(JFFS2_F_I_MODE(f));
40004680: 04e12023 sw a4,64(sp)
ri.uid = cpu_to_je16(JFFS2_F_I_UID(f));
40004684: 05e11223 sh t5,68(sp)
ri.gid = cpu_to_je16(JFFS2_F_I_GID(f));
40004688: 05d11323 sh t4,70(sp)
ri.atime = cpu_to_je32(JFFS2_F_I_ATIME(f));
4000468c: 05c12623 sw t3,76(sp)
ri.ctime = cpu_to_je32(JFFS2_F_I_CTIME(f));
40004690: 04612a23 sw t1,84(sp)
ri.mtime = cpu_to_je32(JFFS2_F_I_MTIME(f));
40004694: 05012823 sw a6,80(sp)
ri.version = cpu_to_je32(++f->highest_version);
40004698: 02f12e23 sw a5,60(sp)
ri.csize = cpu_to_je32(mdatalen);
4000469c: 05312e23 sw s3,92(sp)
ri.dsize = cpu_to_je32(mdatalen);
400046a0: 07312023 sw s3,96(sp)
ri.isize = cpu_to_je32(ilen);
400046a4: 05712423 sw s7,72(sp)
ri.offset = cpu_to_je32(0);
400046a8: 04012c23 sw zero,88(sp)
ri.compr = JFFS2_COMPR_NONE;
400046ac: 06010223 sb zero,100(sp)
ri.node_crc = cpu_to_je32(crc32(0, &ri, sizeof(ri)-8));
400046b0: 5e1050ef jal ra,4000a490 <cyg_crc32_accumulate>
400046b4: 00050793 mv a5,a0
ri.data_crc = cpu_to_je32(crc32(0, mdata, mdatalen));
400046b8: 00098613 mv a2,s3
400046bc: 000a0593 mv a1,s4
400046c0: 00000513 li a0,0
ri.node_crc = cpu_to_je32(crc32(0, &ri, sizeof(ri)-8));
400046c4: 06f12623 sw a5,108(sp)
ri.data_crc = cpu_to_je32(crc32(0, mdata, mdatalen));
400046c8: 5c9050ef jal ra,4000a490 <cyg_crc32_accumulate>
400046cc: 00050813 mv a6,a0
new_fn = jffs2_write_dnode(c, f, &ri, mdata, mdatalen, ALLOC_GC);
400046d0: 00200793 li a5,2
400046d4: 00098713 mv a4,s3
400046d8: 000a0693 mv a3,s4
400046dc: 02c10613 addi a2,sp,44
400046e0: 00040593 mv a1,s0
400046e4: 00048513 mv a0,s1
ri.data_crc = cpu_to_je32(crc32(0, mdata, mdatalen));
400046e8: 07012423 sw a6,104(sp)
new_fn = jffs2_write_dnode(c, f, &ri, mdata, mdatalen, ALLOC_GC);
400046ec: 2ac040ef jal ra,40008998 <jffs2_write_dnode>
if (IS_ERR(new_fn)) {
400046f0: c1800793 li a5,-1000
new_fn = jffs2_write_dnode(c, f, &ri, mdata, mdatalen, ALLOC_GC);
400046f4: 00050993 mv s3,a0
if (IS_ERR(new_fn)) {
400046f8: 02a7ee63 bltu a5,a0,40004734 <jffs2_garbage_collect_pass+0x11d0>
jffs2_mark_node_obsolete(c, fn->raw);
400046fc: 000aa583 lw a1,0(s5)
40004700: 00048513 mv a0,s1
40004704: 398010ef jal ra,40005a9c <jffs2_mark_node_obsolete>
jffs2_free_full_dnode(fn);
40004708: 000a8513 mv a0,s5
4000470c: 178000ef jal ra,40004884 <jffs2_free_full_dnode>
f->metadata = new_fn;
40004710: 01342423 sw s3,8(s0)
if (S_ISLNK(JFFS2_F_I_MODE(f)))
40004714: fc042683 lw a3,-64(s0)
40004718: 0000f7b7 lui a5,0xf
4000471c: 0000a737 lui a4,0xa
40004720: 00d7f7b3 and a5,a5,a3
40004724: a8e79663 bne a5,a4,400039b0 <jffs2_garbage_collect_pass+0x44c>
kfree(mdata);
40004728: 000a0513 mv a0,s4 <== NOT EXECUTED
4000472c: 7a9080ef jal ra,4000d6d4 <free> <== NOT EXECUTED
40004730: a80ff06f j 400039b0 <jffs2_garbage_collect_pass+0x44c> <== NOT EXECUTED
pr_warn("Error writing new dnode: %ld\n", PTR_ERR(new_fn));
40004734: 00050593 mv a1,a0 <== NOT EXECUTED
40004738: 4001d537 lui a0,0x4001d <== NOT EXECUTED
4000473c: 7f450513 addi a0,a0,2036 # 4001d7f4 <rtems_jffs2_ops+0x66c> <== NOT EXECUTED
40004740: 9f5fe0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
ret = PTR_ERR(new_fn);
40004744: 00098d93 mv s11,s3 <== NOT EXECUTED
goto out;
40004748: fcdff06f j 40004714 <jffs2_garbage_collect_pass+0x11b0> <== NOT EXECUTED
pr_warn("jffs2_reserve_space_gc of %zd bytes for garbage_collect_dnode failed: %d\n",
4000474c: 00050613 mv a2,a0 <== NOT EXECUTED
40004750: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40004754: 0c400593 li a1,196 <== NOT EXECUTED
40004758: b2050513 addi a0,a0,-1248 # 4001db20 <rtems_jffs2_ops+0x998> <== NOT EXECUTED
4000475c: 9d9fe0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
}
}
jffs2_gc_release_page(c, pg_ptr, &pg);
40004760: 02010613 addi a2,sp,32
40004764: 000a8593 mv a1,s5
40004768: 00048513 mv a0,s1
4000476c: fd1fd0ef jal ra,4000273c <jffs2_gc_release_page>
return ret;
40004770: a40ff06f j 400039b0 <jffs2_garbage_collect_pass+0x44c>
pr_warn("Error writing new dnode: %ld\n",
40004774: 00050593 mv a1,a0 <== NOT EXECUTED
40004778: 4001d537 lui a0,0x4001d <== NOT EXECUTED
4000477c: 7f450513 addi a0,a0,2036 # 4001d7f4 <rtems_jffs2_ops+0x66c> <== NOT EXECUTED
40004780: 9b5fe0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
break;
40004784: fddff06f j 40004760 <jffs2_garbage_collect_pass+0x11fc> <== NOT EXECUTED
pr_warn("read_cache_page() returned error: %ld\n",
40004788: 00050593 mv a1,a0 <== NOT EXECUTED
4000478c: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40004790: aec50513 addi a0,a0,-1300 # 4001daec <rtems_jffs2_ops+0x964> <== NOT EXECUTED
40004794: 9a1fe0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
return PTR_ERR(pg_ptr);
40004798: 000a8d93 mv s11,s5 <== NOT EXECUTED
4000479c: a14ff06f j 400039b0 <jffs2_garbage_collect_pass+0x44c> <== NOT EXECUTED
BUG_ON(start > orig_start);
400047a0: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
400047a4: 4001e637 lui a2,0x4001e <== NOT EXECUTED
400047a8: 4001d537 lui a0,0x4001d <== NOT EXECUTED
400047ac: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
400047b0: cfc60613 addi a2,a2,-772 # 4001dcfc <__func__.0> <== NOT EXECUTED
400047b4: 52c00593 li a1,1324 <== NOT EXECUTED
400047b8: 56c50513 addi a0,a0,1388 # 4001d56c <rtems_jffs2_ops+0x3e4> <== NOT EXECUTED
400047bc: 2e5080ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
BUG_ON(end < orig_end);
400047c0: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
400047c4: 4001e637 lui a2,0x4001e <== NOT EXECUTED
400047c8: 4001d537 lui a0,0x4001d <== NOT EXECUTED
400047cc: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
400047d0: cfc60613 addi a2,a2,-772 # 4001dcfc <__func__.0> <== NOT EXECUTED
400047d4: 52b00593 li a1,1323 <== NOT EXECUTED
400047d8: 56c50513 addi a0,a0,1388 # 4001d56c <rtems_jffs2_ops+0x3e4> <== NOT EXECUTED
400047dc: 2c5080ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
pr_warn("jffs2_reserve_space_gc of %zd bytes for garbage_collect_metadata failed: %d\n",
400047e0: 00050613 mv a2,a0 <== NOT EXECUTED
400047e4: 4001d537 lui a0,0x4001d <== NOT EXECUTED
400047e8: 000b0593 mv a1,s6 <== NOT EXECUTED
400047ec: 79c50513 addi a0,a0,1948 # 4001d79c <rtems_jffs2_ops+0x614> <== NOT EXECUTED
400047f0: 945fe0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
goto out;
400047f4: f21ff06f j 40004714 <jffs2_garbage_collect_pass+0x11b0> <== NOT EXECUTED
mdatalen = fn->size;
400047f8: 008aa983 lw s3,8(s5) <== NOT EXECUTED
mdata = kmalloc(fn->size, GFP_KERNEL);
400047fc: 00098513 mv a0,s3 <== NOT EXECUTED
40004800: 27c090ef jal ra,4000da7c <malloc> <== NOT EXECUTED
40004804: 00050a13 mv s4,a0 <== NOT EXECUTED
if (!mdata) {
40004808: 04050a63 beqz a0,4000485c <jffs2_garbage_collect_pass+0x12f8> <== NOT EXECUTED
ret = jffs2_read_dnode(c, f, fn, mdata, 0, mdatalen);
4000480c: 00050693 mv a3,a0 <== NOT EXECUTED
40004810: 00098793 mv a5,s3 <== NOT EXECUTED
40004814: 00000713 li a4,0 <== NOT EXECUTED
40004818: 000a8613 mv a2,s5 <== NOT EXECUTED
4000481c: 00040593 mv a1,s0 <== NOT EXECUTED
40004820: 00048513 mv a0,s1 <== NOT EXECUTED
40004824: 4e5010ef jal ra,40006508 <jffs2_read_dnode> <== NOT EXECUTED
40004828: 00050d93 mv s11,a0 <== NOT EXECUTED
if (ret) {
4000482c: d8050ae3 beqz a0,400045c0 <jffs2_garbage_collect_pass+0x105c> <== NOT EXECUTED
pr_warn("read of old metadata failed in jffs2_garbage_collect_metadata(): %d\n",
40004830: 00050593 mv a1,a0 <== NOT EXECUTED
40004834: 4001d537 lui a0,0x4001d <== NOT EXECUTED
40004838: 74c50513 addi a0,a0,1868 # 4001d74c <rtems_jffs2_ops+0x5c4> <== NOT EXECUTED
4000483c: 8f9fe0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
kfree(mdata);
40004840: 000a0513 mv a0,s4 <== NOT EXECUTED
40004844: 691080ef jal ra,4000d6d4 <free> <== NOT EXECUTED
return ret;
40004848: 968ff06f j 400039b0 <jffs2_garbage_collect_pass+0x44c> <== NOT EXECUTED
ilen = JFFS2_F_I_SIZE(f);
4000484c: ff042b83 lw s7,-16(s0) <== NOT EXECUTED
40004850: da9ff06f j 400045f8 <jffs2_garbage_collect_pass+0x1094> <== NOT EXECUTED
40004854: 00078a13 mv s4,a5
40004858: b7cff06f j 40003bd4 <jffs2_garbage_collect_pass+0x670>
pr_warn("kmalloc of mdata failed in jffs2_garbage_collect_metadata()\n");
4000485c: 4001d537 lui a0,0x4001d <== NOT EXECUTED
40004860: 70450513 addi a0,a0,1796 # 4001d704 <rtems_jffs2_ops+0x57c> <== NOT EXECUTED
40004864: 8d1fe0ef jal ra,40003134 <jffs2_printk> <== NOT EXECUTED
return -ENOMEM;
40004868: ff400d93 li s11,-12 <== NOT EXECUTED
4000486c: 944ff06f j 400039b0 <jffs2_garbage_collect_pass+0x44c> <== NOT EXECUTED
400030b4 <jffs2_gc_fetch_inode>:
}
struct jffs2_inode_info *jffs2_gc_fetch_inode(struct jffs2_sb_info *c,
int inum, int unlinked)
{
400030b4: ff010113 addi sp,sp,-16
400030b8: 00112623 sw ra,12(sp)
struct _inode *inode;
struct jffs2_inode_cache *ic;
if (unlinked) {
400030bc: 04060263 beqz a2,40003100 <jffs2_gc_fetch_inode+0x4c> <== ALWAYS TAKEN
400030c0: 00050693 mv a3,a0 <== NOT EXECUTED
for (inode = sb->s_root; inode != NULL; inode = inode->i_cache_next) {
400030c4: 0e052503 lw a0,224(a0) <== NOT EXECUTED
400030c8: 00058713 mv a4,a1 <== NOT EXECUTED
400030cc: 00051863 bnez a0,400030dc <jffs2_gc_fetch_inode+0x28> <== NOT EXECUTED
400030d0: 0480006f j 40003118 <jffs2_gc_fetch_inode+0x64> <== NOT EXECUTED
400030d4: 06852503 lw a0,104(a0) <== NOT EXECUTED
400030d8: 04050063 beqz a0,40003118 <jffs2_gc_fetch_inode+0x64> <== NOT EXECUTED
if (inode->i_ino == ino) {
400030dc: 00052783 lw a5,0(a0) <== NOT EXECUTED
400030e0: fef71ae3 bne a4,a5,400030d4 <jffs2_gc_fetch_inode+0x20> <== NOT EXECUTED
inode->i_count++;
400030e4: 00452783 lw a5,4(a0) <== NOT EXECUTED
400030e8: 00178793 addi a5,a5,1 <== NOT EXECUTED
400030ec: 00f52223 sw a5,4(a0) <== NOT EXECUTED
if (IS_ERR(inode))
return ERR_CAST(inode);
}
return JFFS2_INODE_INFO(inode);
}
400030f0: 00c12083 lw ra,12(sp)
return JFFS2_INODE_INFO(inode);
400030f4: 04850513 addi a0,a0,72
}
400030f8: 01010113 addi sp,sp,16
400030fc: 00008067 ret
inode = jffs2_iget(OFNI_BS_2SFFJ(c), inum);
40003100: a19ff0ef jal ra,40002b18 <jffs2_iget>
if (IS_ERR(inode))
40003104: c1800793 li a5,-1000
40003108: fea7f4e3 bgeu a5,a0,400030f0 <jffs2_gc_fetch_inode+0x3c>
}
4000310c: 00c12083 lw ra,12(sp) <== NOT EXECUTED
40003110: 01010113 addi sp,sp,16 <== NOT EXECUTED
40003114: 00008067 ret <== NOT EXECUTED
ic = jffs2_get_ino_cache(c, inum);
40003118: 00070593 mv a1,a4 <== NOT EXECUTED
4000311c: 00068513 mv a0,a3 <== NOT EXECUTED
40003120: 118020ef jal ra,40005238 <jffs2_get_ino_cache> <== NOT EXECUTED
}
40003124: 00c12083 lw ra,12(sp) <== NOT EXECUTED
return NULL;
40003128: 00000513 li a0,0 <== NOT EXECUTED
}
4000312c: 01010113 addi sp,sp,16 <== NOT EXECUTED
40003130: 00008067 ret <== NOT EXECUTED
400026fc <jffs2_gc_fetch_page>:
{
400026fc: ff010113 addi sp,sp,-16
40002700: 00812423 sw s0,8(sp)
ret = jffs2_read_inode_range(c, f, gc_buffer,
40002704: fffff6b7 lui a3,0xfffff
unsigned char *gc_buffer = &sb->s_gc_buffer[0];
40002708: 0ed50413 addi s0,a0,237
ret = jffs2_read_inode_range(c, f, gc_buffer,
4000270c: 00d676b3 and a3,a2,a3
40002710: 00001737 lui a4,0x1
40002714: 00040613 mv a2,s0
{
40002718: 00112623 sw ra,12(sp)
ret = jffs2_read_inode_range(c, f, gc_buffer,
4000271c: 304040ef jal ra,40006a20 <jffs2_read_inode_range>
if (ret)
40002720: 00050463 beqz a0,40002728 <jffs2_gc_fetch_page+0x2c> <== ALWAYS TAKEN
return ERR_PTR(ret);
40002724: 00050413 mv s0,a0 <== NOT EXECUTED
}
40002728: 00c12083 lw ra,12(sp)
4000272c: 00040513 mv a0,s0
40002730: 00812403 lw s0,8(sp)
40002734: 01010113 addi sp,sp,16
40002738: 00008067 ret
40005238 <jffs2_get_ino_cache>:
ret = c->inocache_list[ino % c->inocache_hashsize];
40005238: 0c052783 lw a5,192(a0)
4000523c: 0c452703 lw a4,196(a0)
40005240: 02f5f7b3 remu a5,a1,a5
40005244: 00279793 slli a5,a5,0x2
40005248: 00f707b3 add a5,a4,a5
4000524c: 0007a503 lw a0,0(a5)
while (ret && ret->ino < ino) {
40005250: 00051863 bnez a0,40005260 <jffs2_get_ino_cache+0x28>
40005254: 0280006f j 4000527c <jffs2_get_ino_cache+0x44>
ret = ret->next;
40005258: 01052503 lw a0,16(a0) <== NOT EXECUTED
while (ret && ret->ino < ino) {
4000525c: 00050e63 beqz a0,40005278 <jffs2_get_ino_cache+0x40> <== NOT EXECUTED
40005260: 00c52783 lw a5,12(a0)
40005264: feb7eae3 bltu a5,a1,40005258 <jffs2_get_ino_cache+0x20>
ret = NULL;
40005268: 40b787b3 sub a5,a5,a1
4000526c: 0017b793 seqz a5,a5
40005270: 40f007b3 neg a5,a5
40005274: 00f57533 and a0,a0,a5
}
40005278: 00008067 ret
4000527c: 00008067 ret
40002b18 <jffs2_iget>:
{
40002b18: fa010113 addi sp,sp,-96
40002b1c: 04812c23 sw s0,88(sp)
for (inode = sb->s_root; inode != NULL; inode = inode->i_cache_next) {
40002b20: 0e052403 lw s0,224(a0)
{
40002b24: 04912a23 sw s1,84(sp)
40002b28: 04112e23 sw ra,92(sp)
40002b2c: 05212823 sw s2,80(sp)
40002b30: 00058493 mv s1,a1
for (inode = sb->s_root; inode != NULL; inode = inode->i_cache_next) {
40002b34: 00041863 bnez s0,40002b44 <jffs2_iget+0x2c>
40002b38: 03c0006f j 40002b74 <jffs2_iget+0x5c>
40002b3c: 06842403 lw s0,104(s0)
40002b40: 02040a63 beqz s0,40002b74 <jffs2_iget+0x5c>
if (inode->i_ino == ino) {
40002b44: 00042783 lw a5,0(s0)
40002b48: fef49ae3 bne s1,a5,40002b3c <jffs2_iget+0x24>
inode->i_count++;
40002b4c: 00442783 lw a5,4(s0)
40002b50: 00178793 addi a5,a5,1
40002b54: 00f42223 sw a5,4(s0)
}
40002b58: 05c12083 lw ra,92(sp)
40002b5c: 00040513 mv a0,s0
40002b60: 05812403 lw s0,88(sp)
40002b64: 05412483 lw s1,84(sp)
40002b68: 05012903 lw s2,80(sp)
40002b6c: 06010113 addi sp,sp,96
40002b70: 00008067 ret
inode = new_inode(sb);
40002b74: e24fe0ef jal ra,40001198 <new_inode>
40002b78: 00050413 mv s0,a0
if (inode == NULL)
40002b7c: 0c050c63 beqz a0,40002c54 <jffs2_iget+0x13c> <== NEVER TAKEN
struct jffs2_raw_inode latest_node;
int ret;
D1(printk(KERN_DEBUG "jffs2_read_inode(): inode->i_ino == %lu\n", inode->i_ino));
f = JFFS2_INODE_INFO(inode);
40002b80: 04840793 addi a5,s0,72
c = JFFS2_SB_INFO(inode->i_sb);
40002b84: 04042903 lw s2,64(s0)
memset(f, 0, sizeof(*f));
40002b88: 01c00613 li a2,28
40002b8c: 00000593 li a1,0
inode->i_ino = ino;
40002b90: 00942023 sw s1,0(s0)
memset(f, 0, sizeof(*f));
40002b94: 00078513 mv a0,a5
40002b98: 580190ef jal ra,4001c118 <memset>
jffs2_init_inode_info(f);
ret = jffs2_do_read_inode(c, f, inode->i_ino, &latest_node);
40002b9c: 00048613 mv a2,s1
40002ba0: 00050593 mv a1,a0
40002ba4: 00c10693 addi a3,sp,12
40002ba8: 00090513 mv a0,s2
40002bac: 121050ef jal ra,400084cc <jffs2_do_read_inode>
40002bb0: 00050493 mv s1,a0
if (ret) {
40002bb4: 08051063 bnez a0,40002c34 <jffs2_iget+0x11c> <== NEVER TAKEN
inode->i_size = je32_to_cpu(latest_node.isize);
inode->i_atime = je32_to_cpu(latest_node.atime);
inode->i_mtime = je32_to_cpu(latest_node.mtime);
inode->i_ctime = je32_to_cpu(latest_node.ctime);
inode->i_nlink = f->inocache->pino_nlink;
40002bb8: 05c42783 lw a5,92(s0)
inode->i_ctime = je32_to_cpu(latest_node.ctime);
40002bbc: 03412603 lw a2,52(sp)
inode->i_atime = je32_to_cpu(latest_node.atime);
40002bc0: 02c12503 lw a0,44(sp)
inode->i_nlink = f->inocache->pino_nlink;
40002bc4: 0147a683 lw a3,20(a5)
return jmode & (S_IFMT | S_IRWXU | S_IRWXG | S_IRWXO);
40002bc8: 02012783 lw a5,32(sp)
inode->i_mtime = je32_to_cpu(latest_node.mtime);
40002bcc: 03012583 lw a1,48(sp)
inode->i_size = je32_to_cpu(latest_node.isize);
40002bd0: 02812803 lw a6,40(sp)
inode->i_uid = je16_to_cpu(latest_node.uid);
40002bd4: 02415303 lhu t1,36(sp)
inode->i_gid = je16_to_cpu(latest_node.gid);
40002bd8: 02615883 lhu a7,38(sp)
40002bdc: 0000f737 lui a4,0xf
40002be0: 1ff70713 addi a4,a4,511 # f1ff <bsp_section_rodata_size+0xa12b>
40002be4: 00e7f7b3 and a5,a5,a4
inode->i_atime = je32_to_cpu(latest_node.atime);
40002be8: 00a42c23 sw a0,24(s0)
}
40002bec: 05c12083 lw ra,92(sp)
inode->i_mode = jemode_to_cpu(latest_node.mode);
40002bf0: 00f42423 sw a5,8(s0)
inode->i_uid = je16_to_cpu(latest_node.uid);
40002bf4: 00641723 sh t1,14(s0)
inode->i_gid = je16_to_cpu(latest_node.gid);
40002bf8: 01141823 sh a7,16(s0)
inode->i_size = je32_to_cpu(latest_node.isize);
40002bfc: 03042c23 sw a6,56(s0)
40002c00: 02042e23 sw zero,60(s0)
inode->i_atime = je32_to_cpu(latest_node.atime);
40002c04: 00042e23 sw zero,28(s0)
inode->i_mtime = je32_to_cpu(latest_node.mtime);
40002c08: 02b42023 sw a1,32(s0)
40002c0c: 02042223 sw zero,36(s0)
inode->i_ctime = je32_to_cpu(latest_node.ctime);
40002c10: 02c42423 sw a2,40(s0)
40002c14: 02042623 sw zero,44(s0)
inode->i_nlink = f->inocache->pino_nlink;
40002c18: 00d41623 sh a3,12(s0)
}
40002c1c: 00040513 mv a0,s0
40002c20: 05812403 lw s0,88(sp)
40002c24: 05412483 lw s1,84(sp)
40002c28: 05012903 lw s2,80(sp)
40002c2c: 06010113 addi sp,sp,96
40002c30: 00008067 ret
printk("jffs2_read_inode() failed\n");
40002c34: 4001d537 lui a0,0x4001d <== NOT EXECUTED
40002c38: 02c50513 addi a0,a0,44 # 4001d02c <rtems_filesystem_table+0x114><== NOT EXECUTED
40002c3c: d50ff0ef jal ra,4000218c <jffs2_printk> <== NOT EXECUTED
jffs2_iput(inode);
40002c40: 00040513 mv a0,s0 <== NOT EXECUTED
inode->i_nlink = 0; // free _this_ bad inode right now
40002c44: 00041623 sh zero,12(s0) <== NOT EXECUTED
jffs2_iput(inode);
40002c48: af9ff0ef jal ra,40002740 <jffs2_iput> <== NOT EXECUTED
return ERR_PTR(err);
40002c4c: 00048413 mv s0,s1 <== NOT EXECUTED
40002c50: f09ff06f j 40002b58 <jffs2_iget+0x40> <== NOT EXECUTED
return ERR_PTR(-ENOMEM);
40002c54: ff400413 li s0,-12 <== NOT EXECUTED
40002c58: f01ff06f j 40002b58 <jffs2_iget+0x40> <== NOT EXECUTED
40002740 <jffs2_iput>:
{
40002740: ff010113 addi sp,sp,-16
40002744: 00812423 sw s0,8(sp)
40002748: 00112623 sw ra,12(sp)
4000274c: 00912223 sw s1,4(sp)
40002750: 00050413 mv s0,a0
assert(i != NULL);
40002754: 0a040c63 beqz s0,4000280c <jffs2_iput+0xcc> <== NEVER TAKEN
i->i_count--;
40002758: 00442783 lw a5,4(s0)
4000275c: fff78793 addi a5,a5,-1
40002760: 00f42223 sw a5,4(s0)
if (i->i_count < 0)
40002764: 0807c463 bltz a5,400027ec <jffs2_iput+0xac> <== NEVER TAKEN
if (i->i_count)
40002768: 04079863 bnez a5,400027b8 <jffs2_iput+0x78>
if (!i->i_nlink) {
4000276c: 00c45783 lhu a5,12(s0)
40002770: 04079e63 bnez a5,400027cc <jffs2_iput+0x8c>
if (i->i_cache_prev)
40002774: 06442703 lw a4,100(s0)
i->i_cache_prev->i_cache_next = i->i_cache_next;
40002778: 06842783 lw a5,104(s0)
if (i->i_cache_prev)
4000277c: 00070663 beqz a4,40002788 <jffs2_iput+0x48> <== NEVER TAKEN
i->i_cache_prev->i_cache_next = i->i_cache_next;
40002780: 06f72423 sw a5,104(a4) # 1068 <_ISR_Stack_size+0x68>
if (i->i_cache_next)
40002784: 06842783 lw a5,104(s0)
40002788: 00078463 beqz a5,40002790 <jffs2_iput+0x50>
i->i_cache_next->i_cache_prev = i->i_cache_prev;
4000278c: 06e7a223 sw a4,100(a5)
jffs2_do_clear_inode(c, f);
40002790: 04042503 lw a0,64(s0)
parent = i->i_parent;
40002794: 03442483 lw s1,52(s0)
jffs2_do_clear_inode(c, f);
40002798: 04840593 addi a1,s0,72
4000279c: 6b5050ef jal ra,40008650 <jffs2_do_clear_inode>
free(i);
400027a0: 00040513 mv a0,s0
400027a4: 7310a0ef jal ra,4000d6d4 <free>
if (parent && parent != i) {
400027a8: 00048863 beqz s1,400027b8 <jffs2_iput+0x78>
400027ac: 00940663 beq s0,s1,400027b8 <jffs2_iput+0x78>
400027b0: 00048413 mv s0,s1
400027b4: fa1ff06f j 40002754 <jffs2_iput+0x14>
}
400027b8: 00c12083 lw ra,12(sp)
400027bc: 00812403 lw s0,8(sp)
400027c0: 00412483 lw s1,4(sp)
400027c4: 01010113 addi sp,sp,16
400027c8: 00008067 ret
icache_evict(i->i_sb->s_root, i);
400027cc: 04042783 lw a5,64(s0)
400027d0: 00040593 mv a1,s0
}
400027d4: 00812403 lw s0,8(sp)
400027d8: 00c12083 lw ra,12(sp)
400027dc: 00412483 lw s1,4(sp)
icache_evict(i->i_sb->s_root, i);
400027e0: 0e07a503 lw a0,224(a5)
}
400027e4: 01010113 addi sp,sp,16
icache_evict(i->i_sb->s_root, i);
400027e8: b7cff06f j 40001b64 <icache_evict>
BUG();
400027ec: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
400027f0: 4001d637 lui a2,0x4001d <== NOT EXECUTED
400027f4: 4001d537 lui a0,0x4001d <== NOT EXECUTED
400027f8: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
400027fc: 0a460613 addi a2,a2,164 # 4001d0a4 <__func__.0> <== NOT EXECUTED
40002800: 5a800593 li a1,1448 <== NOT EXECUTED
40002804: fc450513 addi a0,a0,-60 # 4001cfc4 <rtems_filesystem_table+0xac><== NOT EXECUTED
40002808: 2990a0ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
assert(i != NULL);
4000280c: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
40002810: 4001d637 lui a2,0x4001d <== NOT EXECUTED
40002814: 4001d537 lui a0,0x4001d <== NOT EXECUTED
40002818: fb868693 addi a3,a3,-72 # 4001cfb8 <rtems_filesystem_table+0xa0><== NOT EXECUTED
4000281c: 0a460613 addi a2,a2,164 # 4001d0a4 <__func__.0> <== NOT EXECUTED
40002820: 5a300593 li a1,1443 <== NOT EXECUTED
40002824: fc450513 addi a0,a0,-60 # 4001cfc4 <rtems_filesystem_table+0xac><== NOT EXECUTED
40002828: 2790a0ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
400054d4 <jffs2_kill_fragtree>:
/* Pass 'c' argument to indicate that nodes should be marked obsolete as
they're killed. */
void jffs2_kill_fragtree(struct rb_root *root, struct jffs2_sb_info *c)
{
400054d4: ff010113 addi sp,sp,-16
400054d8: 01212023 sw s2,0(sp)
400054dc: 00058913 mv s2,a1
struct jffs2_node_frag *frag, *next;
dbg_fragtree("killing\n");
rbtree_postorder_for_each_entry_safe(frag, next, root, rb) {
400054e0: 00000593 li a1,0
{
400054e4: 00812423 sw s0,8(sp)
400054e8: 00112623 sw ra,12(sp)
400054ec: 00912223 sw s1,4(sp)
rbtree_postorder_for_each_entry_safe(frag, next, root, rb) {
400054f0: 2180f0ef jal ra,40014708 <_RBTree_Postorder_first>
400054f4: 00050413 mv s0,a0
400054f8: 04050c63 beqz a0,40005550 <jffs2_kill_fragtree+0x7c>
400054fc: 00040513 mv a0,s0
40005500: 00000593 li a1,0
40005504: 1c40f0ef jal ra,400146c8 <_RBTree_Postorder_next>
if (frag->node && !(--frag->node->frags)) {
40005508: 01042783 lw a5,16(s0)
4000550c: 00040493 mv s1,s0
rbtree_postorder_for_each_entry_safe(frag, next, root, rb) {
40005510: 00050413 mv s0,a0
if (frag->node && !(--frag->node->frags)) {
40005514: 02078863 beqz a5,40005544 <jffs2_kill_fragtree+0x70> <== NEVER TAKEN
40005518: 00c7a703 lw a4,12(a5)
4000551c: fff70713 addi a4,a4,-1
40005520: 00e7a623 sw a4,12(a5)
40005524: 02071063 bnez a4,40005544 <jffs2_kill_fragtree+0x70> <== NEVER TAKEN
/* Not a hole, and it's the final remaining frag
of this node. Free the node */
if (c)
jffs2_mark_node_obsolete(c, frag->node->raw);
40005528: 00090513 mv a0,s2
if (c)
4000552c: 00090863 beqz s2,4000553c <jffs2_kill_fragtree+0x68>
jffs2_mark_node_obsolete(c, frag->node->raw);
40005530: 0007a583 lw a1,0(a5)
40005534: 568000ef jal ra,40005a9c <jffs2_mark_node_obsolete>
jffs2_free_full_dnode(frag->node);
40005538: 0104a783 lw a5,16(s1)
4000553c: 00078513 mv a0,a5
40005540: b44ff0ef jal ra,40004884 <jffs2_free_full_dnode>
}
jffs2_free_node_frag(frag);
40005544: 00048513 mv a0,s1
40005548: c54ff0ef jal ra,4000499c <jffs2_free_node_frag>
rbtree_postorder_for_each_entry_safe(frag, next, root, rb) {
4000554c: fa0418e3 bnez s0,400054fc <jffs2_kill_fragtree+0x28>
cond_resched();
}
}
40005550: 00c12083 lw ra,12(sp)
40005554: 00812403 lw s0,8(sp)
40005558: 00412483 lw s1,4(sp)
4000555c: 00012903 lw s2,0(sp)
40005560: 01010113 addi sp,sp,16
40005564: 00008067 ret
4000aaf8 <jffs2_link>:
/***********************************************************************/
int jffs2_link (struct _inode *old_d_inode, struct _inode *dir_i, const unsigned char *d_name, size_t d_namelen)
{
4000aaf8: fe010113 addi sp,sp,-32
4000aafc: 00812c23 sw s0,24(sp)
struct jffs2_inode_info *f = JFFS2_INODE_INFO(old_d_inode);
struct jffs2_inode_info *dir_f = JFFS2_INODE_INFO(dir_i);
int ret;
/* XXX: This is ugly */
uint8_t type = (old_d_inode->i_mode & S_IFMT) >> 12;
4000ab00: 00852403 lw s0,8(a0)
{
4000ab04: 00912a23 sw s1,20(sp)
4000ab08: 01212823 sw s2,16(sp)
uint8_t type = (old_d_inode->i_mode & S_IFMT) >> 12;
4000ab0c: 00c45413 srli s0,s0,0xc
{
4000ab10: 01312623 sw s3,12(sp)
4000ab14: 01412423 sw s4,8(sp)
4000ab18: 01512223 sw s5,4(sp)
4000ab1c: 00112e23 sw ra,28(sp)
4000ab20: 01612023 sw s6,0(sp)
uint8_t type = (old_d_inode->i_mode & S_IFMT) >> 12;
4000ab24: 00f47413 andi s0,s0,15
struct jffs2_sb_info *c = JFFS2_SB_INFO(old_d_inode->i_sb);
4000ab28: 04052a83 lw s5,64(a0)
{
4000ab2c: 00050493 mv s1,a0
4000ab30: 00060993 mv s3,a2
4000ab34: 00068a13 mv s4,a3
struct jffs2_inode_info *dir_f = JFFS2_INODE_INFO(dir_i);
4000ab38: 04858913 addi s2,a1,72
if (!type) type = DT_REG;
4000ab3c: 00041463 bnez s0,4000ab44 <jffs2_link+0x4c> <== ALWAYS TAKEN
4000ab40: 00800413 li s0,8 <== NOT EXECUTED
ret = jffs2_do_link(c, dir_f, f->inocache->ino, type,
4000ab44: 05c4a783 lw a5,92(s1)
(const char * )d_name,
d_namelen, get_seconds());
4000ab48: 00000513 li a0,0
ret = jffs2_do_link(c, dir_f, f->inocache->ino, type,
4000ab4c: 00c7ab03 lw s6,12(a5)
d_namelen, get_seconds());
4000ab50: 469110ef jal ra,4001c7b8 <time>
ret = jffs2_do_link(c, dir_f, f->inocache->ino, type,
4000ab54: 00050813 mv a6,a0
4000ab58: 000a0793 mv a5,s4
4000ab5c: 00098713 mv a4,s3
4000ab60: 00040693 mv a3,s0
4000ab64: 000b0613 mv a2,s6
4000ab68: 00090593 mv a1,s2
4000ab6c: 000a8513 mv a0,s5
4000ab70: fadfe0ef jal ra,40009b1c <jffs2_do_link>
if (!ret) {
4000ab74: 00051c63 bnez a0,4000ab8c <jffs2_link+0x94> <== NEVER TAKEN
mutex_lock(&f->sem);
old_d_inode->i_nlink = ++f->inocache->pino_nlink;
4000ab78: 05c4a703 lw a4,92(s1)
4000ab7c: 01472783 lw a5,20(a4)
4000ab80: 00178793 addi a5,a5,1
4000ab84: 00f72a23 sw a5,20(a4)
4000ab88: 00f49623 sh a5,12(s1)
mutex_unlock(&f->sem);
}
return ret;
}
4000ab8c: 01c12083 lw ra,28(sp)
4000ab90: 01812403 lw s0,24(sp)
4000ab94: 01412483 lw s1,20(sp)
4000ab98: 01012903 lw s2,16(sp)
4000ab9c: 00c12983 lw s3,12(sp)
4000aba0: 00812a03 lw s4,8(sp)
4000aba4: 00412a83 lw s5,4(sp)
4000aba8: 00012b03 lw s6,0(sp)
4000abac: 02010113 addi sp,sp,32
4000abb0: 00008067 ret
40005568 <jffs2_link_node_ref>:
uint32_t ofs, uint32_t len,
struct jffs2_inode_cache *ic)
{
struct jffs2_raw_node_ref *ref;
BUG_ON(!jeb->allocated_refs);
40005568: 0245a783 lw a5,36(a1)
{
4000556c: ff010113 addi sp,sp,-16
40005570: 00112623 sw ra,12(sp)
40005574: 00812423 sw s0,8(sp)
BUG_ON(!jeb->allocated_refs);
40005578: 14078263 beqz a5,400056bc <jffs2_link_node_ref+0x154> <== NEVER TAKEN
jeb->allocated_refs--;
ref = jeb->last_node;
4000557c: 02c5ae83 lw t4,44(a1)
jeb->allocated_refs--;
40005580: fff78793 addi a5,a5,-1
40005584: 02f5a223 sw a5,36(a1)
dbg_noderef("Last node at %p is (%08x,%p)\n", ref, ref->flash_offset,
ref->next_in_ino);
while (ref->flash_offset != REF_EMPTY_NODE) {
40005588: 004ea783 lw a5,4(t4)
4000558c: 00068e13 mv t3,a3
40005590: ffe00693 li a3,-2
40005594: 00050893 mv a7,a0
40005598: 000e8513 mv a0,t4
4000559c: 00d78e63 beq a5,a3,400055b8 <jffs2_link_node_ref+0x50>
if (ref->flash_offset == REF_LINK_NODE)
400055a0: fff00313 li t1,-1
while (ref->flash_offset != REF_EMPTY_NODE) {
400055a4: ffe00813 li a6,-2
if (ref->flash_offset == REF_LINK_NODE)
400055a8: 08678e63 beq a5,t1,40005644 <jffs2_link_node_ref+0xdc>
ref = ref->next_in_ino;
else
ref++;
400055ac: 00850513 addi a0,a0,8
while (ref->flash_offset != REF_EMPTY_NODE) {
400055b0: 00452783 lw a5,4(a0)
400055b4: ff079ae3 bne a5,a6,400055a8 <jffs2_link_node_ref+0x40>
dbg_noderef("New ref is %p (%08x becomes %08x,%p) len 0x%x\n", ref,
ref->flash_offset, ofs, ref->next_in_ino, len);
ref->flash_offset = ofs;
if (!jeb->first_node) {
400055b8: 0285a783 lw a5,40(a1)
ref->flash_offset = ofs;
400055bc: 00c52223 sw a2,4(a0)
jeb->first_node = ref;
BUG_ON(ref_offset(ref) != jeb->offset);
400055c0: 00c5a803 lw a6,12(a1)
400055c4: ffc67693 andi a3,a2,-4
if (!jeb->first_node) {
400055c8: 0c078263 beqz a5,4000568c <jffs2_link_node_ref+0x124>
} else if (unlikely(ref_offset(ref) != jeb->offset + c->sector_size - jeb->free_size)) {
400055cc: 0348a303 lw t1,52(a7)
400055d0: 0205a783 lw a5,32(a1)
400055d4: 00680833 add a6,a6,t1
400055d8: 40f80833 sub a6,a6,a5
400055dc: 10d81063 bne a6,a3,400056dc <jffs2_link_node_ref+0x174>
ref, ref_offset(ref), ref_offset(ref)+len,
ref_offset(jeb->last_node),
ref_offset(jeb->last_node)+last_len);
BUG();
}
jeb->last_node = ref;
400055e0: 02a5a623 sw a0,44(a1)
if (ic) {
400055e4: 0a070063 beqz a4,40005684 <jffs2_link_node_ref+0x11c>
ref->next_in_ino = ic->nodes;
400055e8: 00472683 lw a3,4(a4)
400055ec: 00d52023 sw a3,0(a0)
ic->nodes = ref;
400055f0: 00a72223 sw a0,4(a4)
} else {
ref->next_in_ino = NULL;
}
switch(ref_flags(ref)) {
400055f4: 00367613 andi a2,a2,3
400055f8: 00100713 li a4,1
400055fc: 04e60863 beq a2,a4,4000564c <jffs2_link_node_ref+0xe4>
40005600: ffe60613 addi a2,a2,-2
40005604: 06c76263 bltu a4,a2,40005668 <jffs2_link_node_ref+0x100>
jeb->unchecked_size += len;
break;
case REF_NORMAL:
case REF_PRISTINE:
c->used_size += len;
40005608: 01c8a683 lw a3,28(a7)
jeb->used_size += len;
4000560c: 0145a703 lw a4,20(a1)
c->used_size += len;
40005610: 01c686b3 add a3,a3,t3
40005614: 00d8ae23 sw a3,28(a7)
jeb->used_size += len;
40005618: 01c70733 add a4,a4,t3
4000561c: 00e5aa23 sw a4,20(a1)
case REF_OBSOLETE:
c->dirty_size += len;
jeb->dirty_size += len;
break;
}
c->free_size -= len;
40005620: 0288a703 lw a4,40(a7)
/* Set (and test) __totlen field... for now */
ref->__totlen = len;
ref_totlen(c, jeb, ref);
#endif
return ref;
}
40005624: 00c12083 lw ra,12(sp)
40005628: 00812403 lw s0,8(sp)
c->free_size -= len;
4000562c: 41c70733 sub a4,a4,t3
40005630: 02e8a423 sw a4,40(a7)
jeb->free_size -= len;
40005634: 41c787b3 sub a5,a5,t3
40005638: 02f5a023 sw a5,32(a1)
}
4000563c: 01010113 addi sp,sp,16
40005640: 00008067 ret
ref = ref->next_in_ino;
40005644: 00052503 lw a0,0(a0)
40005648: f69ff06f j 400055b0 <jffs2_link_node_ref+0x48>
c->dirty_size += len;
4000564c: 0208a683 lw a3,32(a7)
jeb->dirty_size += len;
40005650: 0185a703 lw a4,24(a1)
c->dirty_size += len;
40005654: 01c686b3 add a3,a3,t3
40005658: 02d8a023 sw a3,32(a7)
jeb->dirty_size += len;
4000565c: 01c70733 add a4,a4,t3
40005660: 00e5ac23 sw a4,24(a1)
break;
40005664: fbdff06f j 40005620 <jffs2_link_node_ref+0xb8>
c->unchecked_size += len;
40005668: 0388a683 lw a3,56(a7) <== NOT EXECUTED
jeb->unchecked_size += len;
4000566c: 0105a703 lw a4,16(a1) <== NOT EXECUTED
c->unchecked_size += len;
40005670: 01c686b3 add a3,a3,t3 <== NOT EXECUTED
40005674: 02d8ac23 sw a3,56(a7) <== NOT EXECUTED
jeb->unchecked_size += len;
40005678: 01c70733 add a4,a4,t3 <== NOT EXECUTED
4000567c: 00e5a823 sw a4,16(a1) <== NOT EXECUTED
break;
40005680: fa1ff06f j 40005620 <jffs2_link_node_ref+0xb8> <== NOT EXECUTED
ref->next_in_ino = NULL;
40005684: 00052023 sw zero,0(a0)
40005688: f6dff06f j 400055f4 <jffs2_link_node_ref+0x8c>
jeb->first_node = ref;
4000568c: 02a5a423 sw a0,40(a1)
BUG_ON(ref_offset(ref) != jeb->offset);
40005690: 01069663 bne a3,a6,4000569c <jffs2_link_node_ref+0x134>
} else if (unlikely(ref_offset(ref) != jeb->offset + c->sector_size - jeb->free_size)) {
40005694: 0205a783 lw a5,32(a1)
40005698: f49ff06f j 400055e0 <jffs2_link_node_ref+0x78>
BUG_ON(ref_offset(ref) != jeb->offset);
4000569c: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
400056a0: 4001e637 lui a2,0x4001e <== NOT EXECUTED
400056a4: 4001e537 lui a0,0x4001e <== NOT EXECUTED
400056a8: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
400056ac: f4460613 addi a2,a2,-188 # 4001df44 <__func__.2> <== NOT EXECUTED
400056b0: 26800593 li a1,616 <== NOT EXECUTED
400056b4: db850513 addi a0,a0,-584 # 4001ddb8 <__func__.4+0x54> <== NOT EXECUTED
400056b8: 3e9070ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
BUG_ON(!jeb->allocated_refs);
400056bc: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
400056c0: 4001e637 lui a2,0x4001e <== NOT EXECUTED
400056c4: 4001e537 lui a0,0x4001e <== NOT EXECUTED
400056c8: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
400056cc: f4460613 addi a2,a2,-188 # 4001df44 <__func__.2> <== NOT EXECUTED
400056d0: 25200593 li a1,594 <== NOT EXECUTED
400056d4: db850513 addi a0,a0,-584 # 4001ddb8 <__func__.4+0x54> <== NOT EXECUTED
400056d8: 3c9070ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
if (ref->flash_offset == REF_LINK_NODE) {
400056dc: 00cea703 lw a4,12(t4) <== NOT EXECUTED
400056e0: fff00793 li a5,-1 <== NOT EXECUTED
400056e4: 04f70c63 beq a4,a5,4000573c <jffs2_link_node_ref+0x1d4> <== NOT EXECUTED
ref++;
400056e8: 008e8793 addi a5,t4,8 <== NOT EXECUTED
if (ref->flash_offset == REF_EMPTY_NODE)
400056ec: 0047a783 lw a5,4(a5) <== NOT EXECUTED
400056f0: ffe00713 li a4,-2 <== NOT EXECUTED
400056f4: 00e78463 beq a5,a4,400056fc <jffs2_link_node_ref+0x194> <== NOT EXECUTED
{
uint32_t ref_end;
struct jffs2_raw_node_ref *next_ref = ref_next(ref);
if (next_ref)
ref_end = ref_offset(next_ref);
400056f8: ffc7f813 andi a6,a5,-4 <== NOT EXECUTED
ref_offset(jeb->last_node) : 0);
BUG();
}
ref_end = jeb->offset + c->sector_size - jeb->free_size;
}
return ref_end - ref_offset(ref);
400056fc: 004ea783 lw a5,4(t4) <== NOT EXECUTED
JFFS2_ERROR("Adding new ref %p at (0x%08x-0x%08x) not immediately after previous (0x%08x-0x%08x)\n",
40005700: 00050613 mv a2,a0 <== NOT EXECUTED
40005704: 4001e437 lui s0,0x4001e <== NOT EXECUTED
40005708: 4001e537 lui a0,0x4001e <== NOT EXECUTED
4000570c: f4440593 addi a1,s0,-188 # 4001df44 <__func__.2> <== NOT EXECUTED
40005710: 00de0733 add a4,t3,a3 <== NOT EXECUTED
40005714: ffc7f793 andi a5,a5,-4 <== NOT EXECUTED
40005718: e2850513 addi a0,a0,-472 # 4001de28 <__func__.4+0xc4> <== NOT EXECUTED
4000571c: afcff0ef jal ra,40004a18 <jffs2_printk> <== NOT EXECUTED
BUG();
40005720: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
40005724: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40005728: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
4000572c: f4440613 addi a2,s0,-188 <== NOT EXECUTED
40005730: 27000593 li a1,624 <== NOT EXECUTED
40005734: db850513 addi a0,a0,-584 # 4001ddb8 <__func__.4+0x54> <== NOT EXECUTED
40005738: 369070ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
ref = ref->next_in_ino;
4000573c: 008ea783 lw a5,8(t4) <== NOT EXECUTED
if (!ref)
40005740: fa0796e3 bnez a5,400056ec <jffs2_link_node_ref+0x184> <== NOT EXECUTED
40005744: fb9ff06f j 400056fc <jffs2_link_node_ref+0x194> <== NOT EXECUTED
4000a7f4 <jffs2_lookup>:
/***********************************************************************/
/* Takes length argument because it can be either NUL-terminated or '/'-terminated */
struct _inode *jffs2_lookup(struct _inode *dir_i, const unsigned char *name, size_t namelen)
{
4000a7f4: fe010113 addi sp,sp,-32
4000a7f8: 01312623 sw s3,12(sp)
4000a7fc: 01412423 sw s4,8(sp)
4000a800: 01512223 sw s5,4(sp)
4000a804: 00112e23 sw ra,28(sp)
4000a808: 00812c23 sw s0,24(sp)
4000a80c: 00912a23 sw s1,20(sp)
4000a810: 01212823 sw s2,16(sp)
4000a814: 01612023 sw s6,0(sp)
4000a818: 00060993 mv s3,a2
4000a81c: 00050a93 mv s5,a0
4000a820: 00058a13 mv s4,a1
while (len--) {
4000a824: 0e060463 beqz a2,4000a90c <jffs2_lookup+0x118> <== NEVER TAKEN
4000a828: 00c58833 add a6,a1,a2
4000a82c: 00058793 mv a5,a1
uint32_t hash = 0;
4000a830: 00000413 li s0,0
hash ^= *(name++);
4000a834: 0007c703 lbu a4,0(a5)
hash = (hash << 4) | (hash >> 28);
4000a838: 00441693 slli a3,s0,0x4
4000a83c: 01c45413 srli s0,s0,0x1c
4000a840: 00d46433 or s0,s0,a3
hash ^= *(name++);
4000a844: 00178793 addi a5,a5,1
4000a848: 00874433 xor s0,a4,s0
while (len--) {
4000a84c: fef814e3 bne a6,a5,4000a834 <jffs2_lookup+0x40>
dir_f = JFFS2_INODE_INFO(dir_i);
mutex_lock(&dir_f->sem);
/* NB: The 2.2 backport will need to explicitly check for '.' and '..' here */
for (fd_list = dir_f->dents; fd_list && fd_list->nhash <= hash; fd_list = fd_list->next) {
4000a850: 054aa483 lw s1,84(s5)
struct jffs2_full_dirent *fd = NULL, *fd_list;
4000a854: 00000913 li s2,0
for (fd_list = dir_f->dents; fd_list && fd_list->nhash <= hash; fd_list = fd_list->next) {
4000a858: 00049863 bnez s1,4000a868 <jffs2_lookup+0x74>
4000a85c: 0840006f j 4000a8e0 <jffs2_lookup+0xec>
4000a860: 0044a483 lw s1,4(s1)
4000a864: 04048863 beqz s1,4000a8b4 <jffs2_lookup+0xc0>
4000a868: 0104a783 lw a5,16(s1)
4000a86c: 04f46463 bltu s0,a5,4000a8b4 <jffs2_lookup+0xc0>
if (fd_list->nhash == hash &&
4000a870: fe8798e3 bne a5,s0,4000a860 <jffs2_lookup+0x6c>
(!fd || fd_list->version > fd->version) &&
strlen((char *)fd_list->name) == namelen &&
4000a874: 01548b13 addi s6,s1,21
4000a878: 000b0513 mv a0,s6
if (fd_list->nhash == hash &&
4000a87c: 00090863 beqz s2,4000a88c <jffs2_lookup+0x98> <== ALWAYS TAKEN
(!fd || fd_list->version > fd->version) &&
4000a880: 0084a703 lw a4,8(s1) <== NOT EXECUTED
4000a884: 00892783 lw a5,8(s2) <== NOT EXECUTED
4000a888: fce7fce3 bgeu a5,a4,4000a860 <jffs2_lookup+0x6c> <== NOT EXECUTED
strlen((char *)fd_list->name) == namelen &&
4000a88c: 5a1110ef jal ra,4001c62c <strlen>
(!fd || fd_list->version > fd->version) &&
4000a890: fd3518e3 bne a0,s3,4000a860 <jffs2_lookup+0x6c>
!strncmp((char *)fd_list->name, (char *)name, namelen)) {
4000a894: 00098613 mv a2,s3
4000a898: 000a0593 mv a1,s4
4000a89c: 000b0513 mv a0,s6
4000a8a0: 619110ef jal ra,4001c6b8 <strncmp>
strlen((char *)fd_list->name) == namelen &&
4000a8a4: fa051ee3 bnez a0,4000a860 <jffs2_lookup+0x6c> <== NEVER TAKEN
4000a8a8: 00048913 mv s2,s1
for (fd_list = dir_f->dents; fd_list && fd_list->nhash <= hash; fd_list = fd_list->next) {
4000a8ac: 0044a483 lw s1,4(s1)
4000a8b0: fa049ce3 bnez s1,4000a868 <jffs2_lookup+0x74>
fd = fd_list;
}
}
if (fd)
4000a8b4: 06090a63 beqz s2,4000a928 <jffs2_lookup+0x134>
ino = fd->ino;
4000a8b8: 00c92403 lw s0,12(s2)
struct _inode *inode = NULL;
4000a8bc: 00000493 li s1,0
mutex_unlock(&dir_f->sem);
if (ino) {
4000a8c0: 02040063 beqz s0,4000a8e0 <jffs2_lookup+0xec>
inode = jffs2_iget(dir_i->i_sb, ino);
4000a8c4: 040aa503 lw a0,64(s5)
4000a8c8: 00040593 mv a1,s0
4000a8cc: a4cf80ef jal ra,40002b18 <jffs2_iget>
if (IS_ERR(inode)) {
4000a8d0: c1800793 li a5,-1000
inode = jffs2_iget(dir_i->i_sb, ino);
4000a8d4: 00050493 mv s1,a0
if (IS_ERR(inode)) {
4000a8d8: 02a7ee63 bltu a5,a0,4000a914 <jffs2_lookup+0x120>
printk("jffs2_iget() failed for ino #%lu\n", ino);
return inode;
} else {
inode->i_fd = fd;
4000a8dc: 05252223 sw s2,68(a0)
}
}
return inode;
}
4000a8e0: 01c12083 lw ra,28(sp)
4000a8e4: 01812403 lw s0,24(sp)
4000a8e8: 01012903 lw s2,16(sp)
4000a8ec: 00c12983 lw s3,12(sp)
4000a8f0: 00812a03 lw s4,8(sp)
4000a8f4: 00412a83 lw s5,4(sp)
4000a8f8: 00012b03 lw s6,0(sp)
4000a8fc: 00048513 mv a0,s1
4000a900: 01412483 lw s1,20(sp)
4000a904: 02010113 addi sp,sp,32
4000a908: 00008067 ret
uint32_t hash = 0;
4000a90c: 00000413 li s0,0 <== NOT EXECUTED
4000a910: f41ff06f j 4000a850 <jffs2_lookup+0x5c> <== NOT EXECUTED
printk("jffs2_iget() failed for ino #%lu\n", ino);
4000a914: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000a918: 00040593 mv a1,s0 <== NOT EXECUTED
4000a91c: 88450513 addi a0,a0,-1916 # 4001f884 <__func__.0+0x28> <== NOT EXECUTED
4000a920: e95ff0ef jal ra,4000a7b4 <jffs2_printk> <== NOT EXECUTED
return inode;
4000a924: fbdff06f j 4000a8e0 <jffs2_lookup+0xec> <== NOT EXECUTED
struct _inode *inode = NULL;
4000a928: 00000493 li s1,0
4000a92c: fb5ff06f j 4000a8e0 <jffs2_lookup+0xec>
40005480 <jffs2_lookup_node_frag>:
next = fragtree->rb_node;
40005480: 00052783 lw a5,0(a0)
struct jffs2_node_frag *prev = NULL;
40005484: 00000513 li a0,0
while(next) {
40005488: 04078463 beqz a5,400054d0 <jffs2_lookup_node_frag+0x50> <== NEVER TAKEN
if (frag->ofs + frag->size <= offset) {
4000548c: 0187a683 lw a3,24(a5)
40005490: 0147a703 lw a4,20(a5)
40005494: 00e68733 add a4,a3,a4
40005498: 02e5e063 bltu a1,a4,400054b8 <jffs2_lookup_node_frag+0x38>
if (!prev || frag->ofs > prev->ofs)
4000549c: 00050663 beqz a0,400054a8 <jffs2_lookup_node_frag+0x28>
400054a0: 01852703 lw a4,24(a0)
400054a4: 00d77463 bgeu a4,a3,400054ac <jffs2_lookup_node_frag+0x2c>
400054a8: 00078513 mv a0,a5
next = frag->rb.rb_right;
400054ac: 0047a783 lw a5,4(a5)
while(next) {
400054b0: fc079ee3 bnez a5,4000548c <jffs2_lookup_node_frag+0xc> <== ALWAYS TAKEN
400054b4: 00008067 ret <== NOT EXECUTED
} else if (frag->ofs > offset) {
400054b8: 00d5f863 bgeu a1,a3,400054c8 <jffs2_lookup_node_frag+0x48>
next = frag->rb.rb_left;
400054bc: 0007a783 lw a5,0(a5)
while(next) {
400054c0: fc0796e3 bnez a5,4000548c <jffs2_lookup_node_frag+0xc> <== ALWAYS TAKEN
400054c4: ff1ff06f j 400054b4 <jffs2_lookup_node_frag+0x34> <== NOT EXECUTED
400054c8: 00078513 mv a0,a5
prev->ofs, prev->ofs+prev->size);
else
dbg_fragtree2("returning NULL, empty fragtree\n");
return prev;
}
400054cc: 00008067 ret
400054d0: 00008067 ret <== NOT EXECUTED
40005a9c <jffs2_mark_node_obsolete>:
struct jffs2_unknown_node n;
int ret, addedsize;
size_t retlen;
uint32_t freed_len;
if(unlikely(!ref)) {
40005a9c: 32058e63 beqz a1,40005dd8 <jffs2_mark_node_obsolete+0x33c> <== NEVER TAKEN
{
40005aa0: fd010113 addi sp,sp,-48
40005aa4: 03212023 sw s2,32(sp)
40005aa8: 00058913 mv s2,a1
pr_notice("EEEEEK. jffs2_mark_node_obsolete called with NULL node\n");
return;
}
if (ref_obsolete(ref)) {
40005aac: 0045a583 lw a1,4(a1)
{
40005ab0: 02112623 sw ra,44(sp)
40005ab4: 02812423 sw s0,40(sp)
40005ab8: 02912223 sw s1,36(sp)
40005abc: 01312e23 sw s3,28(sp)
40005ac0: 01412c23 sw s4,24(sp)
if (ref_obsolete(ref)) {
40005ac4: 00100713 li a4,1
40005ac8: 0035f693 andi a3,a1,3
40005acc: 14e68063 beq a3,a4,40005c0c <jffs2_mark_node_obsolete+0x170>
jffs2_dbg(1, "%s(): called with already obsolete node at 0x%08x\n",
__func__, ref_offset(ref));
return;
}
blocknr = ref->flash_offset / c->sector_size;
40005ad0: 03452483 lw s1,52(a0)
if (blocknr >= c->nr_blocks) {
40005ad4: 05052703 lw a4,80(a0)
40005ad8: 00050413 mv s0,a0
blocknr = ref->flash_offset / c->sector_size;
40005adc: 0295d4b3 divu s1,a1,s1
if (blocknr >= c->nr_blocks) {
40005ae0: 3ee4f263 bgeu s1,a4,40005ec4 <jffs2_mark_node_obsolete+0x428>
pr_notice("raw node at 0x%08x is off the end of device!\n",
ref->flash_offset);
BUG();
}
jeb = &c->blocks[blocknr];
40005ae4: 03400593 li a1,52
40005ae8: 02b484b3 mul s1,s1,a1
40005aec: 05452583 lw a1,84(a0)
mutex_lock(&c->erase_free_sem);
}
spin_lock(&c->erase_completion_lock);
freed_len = ref_totlen(c, jeb, ref);
40005af0: 00090613 mv a2,s2
jeb = &c->blocks[blocknr];
40005af4: 009584b3 add s1,a1,s1
freed_len = ref_totlen(c, jeb, ref);
40005af8: 00048593 mv a1,s1
40005afc: d29ff0ef jal ra,40005824 <__jffs2_ref_totlen>
if (ref_flags(ref) == REF_UNCHECKED) {
40005b00: 00492703 lw a4,4(s2)
freed_len = ref_totlen(c, jeb, ref);
40005b04: 00050a13 mv s4,a0
if (ref_flags(ref) == REF_UNCHECKED) {
40005b08: 00377793 andi a5,a4,3
40005b0c: 12078063 beqz a5,40005c2c <jffs2_mark_node_obsolete+0x190> <== NEVER TAKEN
ref->flash_offset, jeb->used_size);
BUG();
})
jffs2_dbg(1, "Obsoleting node at 0x%08x of len %#x: ",
ref_offset(ref), freed_len);
jeb->used_size -= freed_len;
40005b10: 0144a683 lw a3,20(s1)
c->used_size -= freed_len;
40005b14: 01c42783 lw a5,28(s0)
jeb->used_size -= freed_len;
40005b18: 40a686b3 sub a3,a3,a0
40005b1c: 00d4aa23 sw a3,20(s1)
c->used_size -= freed_len;
40005b20: 40a787b3 sub a5,a5,a0
40005b24: 00f42e23 sw a5,28(s0)
}
// Take care, that wasted size is taken into concern
if ((jeb->dirty_size || ISDIRTY(jeb->wasted_size + freed_len)) && jeb != c->nextblock) {
40005b28: 0184a783 lw a5,24(s1)
40005b2c: 01c4a603 lw a2,28(s1)
40005b30: 00079863 bnez a5,40005b40 <jffs2_mark_node_obsolete+0xa4>
40005b34: 00ca06b3 add a3,s4,a2
40005b38: 0c400593 li a1,196
40005b3c: 10d5f863 bgeu a1,a3,40005c4c <jffs2_mark_node_obsolete+0x1b0>
40005b40: 05842683 lw a3,88(s0)
40005b44: 10968263 beq a3,s1,40005c48 <jffs2_mark_node_obsolete+0x1ac>
jffs2_dbg(1, "Dirtying\n");
addedsize = freed_len;
jeb->dirty_size += freed_len;
c->dirty_size += freed_len;
40005b48: 02042803 lw a6,32(s0)
jeb->dirty_size += freed_len;
40005b4c: 00fa06b3 add a3,s4,a5
40005b50: 00d4ac23 sw a3,24(s1)
c->dirty_size += freed_len;
40005b54: 010a0833 add a6,s4,a6
40005b58: 03042023 sw a6,32(s0)
addedsize = freed_len;
40005b5c: 000a0993 mv s3,s4
/* Convert wasted space to dirty, if not a bad block */
if (jeb->wasted_size) {
40005b60: 14061e63 bnez a2,40005cbc <jffs2_mark_node_obsolete+0x220>
jffs2_dbg(1, "Wasting\n");
addedsize = 0;
jeb->wasted_size += freed_len;
c->wasted_size += freed_len;
}
ref->flash_offset = ref_offset(ref) | REF_OBSOLETE;
40005b64: ffc77713 andi a4,a4,-4
40005b68: 00176713 ori a4,a4,1
40005b6c: 00e92223 sw a4,4(s2)
jffs2_dbg_acct_sanity_check_nolock(c, jeb);
40005b70: 00048593 mv a1,s1
40005b74: 00040513 mv a0,s0
40005b78: 2d5040ef jal ra,4000a64c <__jffs2_dbg_acct_sanity_check_nolock>
jffs2_dbg_acct_paranoia_check_nolock(c, jeb);
if (c->flags & JFFS2_SB_FLAG_SCANNING) {
40005b7c: 00c42783 lw a5,12(s0)
40005b80: 0027f793 andi a5,a5,2
40005b84: 08079463 bnez a5,40005c0c <jffs2_mark_node_obsolete+0x170> <== NEVER TAKEN
spin_unlock(&c->erase_completion_lock);
/* We didn't lock the erase_free_sem */
return;
}
if (jeb == c->nextblock) {
40005b88: 05842783 lw a5,88(s0)
40005b8c: 06978663 beq a5,s1,40005bf8 <jffs2_mark_node_obsolete+0x15c>
jffs2_dbg(2, "Not moving nextblock 0x%08x to dirty/erase_pending list\n",
jeb->offset);
} else if (!jeb->used_size && !jeb->unchecked_size) {
40005b90: 0144a703 lw a4,20(s1)
if (jeb == c->gcblock) {
40005b94: 05c42783 lw a5,92(s0)
} else if (!jeb->used_size && !jeb->unchecked_size) {
40005b98: 0c071663 bnez a4,40005c64 <jffs2_mark_node_obsolete+0x1c8>
40005b9c: 0104a703 lw a4,16(s1)
40005ba0: 0c071263 bnez a4,40005c64 <jffs2_mark_node_obsolete+0x1c8> <== NEVER TAKEN
if (jeb == c->gcblock) {
40005ba4: 2cf48463 beq s1,a5,40005e6c <jffs2_mark_node_obsolete+0x3d0>
ent->prev->next = ent->next;
40005ba8: 0044a703 lw a4,4(s1)
40005bac: 0004a783 lw a5,0(s1)
40005bb0: 00f72023 sw a5,0(a4)
ent->next->prev = ent->prev;
40005bb4: 00e7a223 sw a4,4(a5)
40005bb8: 8e41a783 lw a5,-1820(gp) # 40042fbc <_Watchdog_Ticks_since_boot>
}
if (jffs2_wbuf_dirty(c)) {
jffs2_dbg(1, "...and adding to erasable_pending_wbuf_list\n");
list_add_tail(&jeb->list, &c->erasable_pending_wbuf_list);
} else {
if (jiffies & 127) {
40005bbc: 07f7f793 andi a5,a5,127
40005bc0: 24078c63 beqz a5,40005e18 <jffs2_mark_node_obsolete+0x37c> <== NEVER TAKEN
struct list_head *prev = beforethisent->prev;
40005bc4: 09c42703 lw a4,156(s0)
rtems_jffs2_flash_control *fc = sb->s_flash_control;
40005bc8: 0e442503 lw a0,228(s0)
/* Most of the time, we just erase it immediately. Otherwise we
spend ages scanning it on mount, etc. */
jffs2_dbg(1, "...and adding to erase_pending_list\n");
list_add_tail(&jeb->list, &c->erase_pending_list);
c->nr_erasing_blocks++;
40005bcc: 04042783 lw a5,64(s0)
list_add_tail(&jeb->list, &c->erase_pending_list);
40005bd0: 09840693 addi a3,s0,152
newent->next = beforethisent;
40005bd4: 00d4a023 sw a3,0(s1)
newent->prev = prev;
40005bd8: 00e4a223 sw a4,4(s1)
if (fc->trigger_garbage_collection != NULL) {
40005bdc: 02052683 lw a3,32(a0)
beforethisent->prev = newent;
40005be0: 08942e23 sw s1,156(s0)
prev->next = newent;
40005be4: 00972023 sw s1,0(a4)
c->nr_erasing_blocks++;
40005be8: 00178793 addi a5,a5,1
40005bec: 04f42023 sw a5,64(s0)
40005bf0: 00068463 beqz a3,40005bf8 <jffs2_mark_node_obsolete+0x15c> <== ALWAYS TAKEN
(*fc->trigger_garbage_collection)(fc);
40005bf4: 000680e7 jalr a3 <== NOT EXECUTED
jeb->used_size);
}
spin_unlock(&c->erase_completion_lock);
if (!jffs2_can_mark_obsolete(c) || jffs2_is_readonly(c) ||
40005bf8: 0ec44783 lbu a5,236(s0)
40005bfc: 00079863 bnez a5,40005c0c <jffs2_mark_node_obsolete+0x170> <== NEVER TAKEN
(c->flags & JFFS2_SB_FLAG_BUILDING)) {
40005c00: 00c42783 lw a5,12(s0)
40005c04: 0047f793 andi a5,a5,4
if (!jffs2_can_mark_obsolete(c) || jffs2_is_readonly(c) ||
40005c08: 0e078a63 beqz a5,40005cfc <jffs2_mark_node_obsolete+0x260> <== ALWAYS TAKEN
spin_unlock(&c->erase_completion_lock);
}
out_erase_sem:
mutex_unlock(&c->erase_free_sem);
}
40005c0c: 02c12083 lw ra,44(sp)
40005c10: 02812403 lw s0,40(sp)
40005c14: 02412483 lw s1,36(sp)
40005c18: 02012903 lw s2,32(sp)
40005c1c: 01c12983 lw s3,28(sp)
40005c20: 01812a03 lw s4,24(sp)
40005c24: 03010113 addi sp,sp,48
40005c28: 00008067 ret
jeb->unchecked_size -= freed_len;
40005c2c: 0104a683 lw a3,16(s1) <== NOT EXECUTED
c->unchecked_size -= freed_len;
40005c30: 03842783 lw a5,56(s0) <== NOT EXECUTED
jeb->unchecked_size -= freed_len;
40005c34: 40a686b3 sub a3,a3,a0 <== NOT EXECUTED
40005c38: 00d4a823 sw a3,16(s1) <== NOT EXECUTED
c->unchecked_size -= freed_len;
40005c3c: 40a787b3 sub a5,a5,a0 <== NOT EXECUTED
40005c40: 02f42c23 sw a5,56(s0) <== NOT EXECUTED
40005c44: ee5ff06f j 40005b28 <jffs2_mark_node_obsolete+0x8c> <== NOT EXECUTED
if ((jeb->dirty_size || ISDIRTY(jeb->wasted_size + freed_len)) && jeb != c->nextblock) {
40005c48: 00ca06b3 add a3,s4,a2
c->wasted_size += freed_len;
40005c4c: 02442783 lw a5,36(s0)
jeb->wasted_size += freed_len;
40005c50: 00d4ae23 sw a3,28(s1)
addedsize = 0;
40005c54: 00000993 li s3,0
c->wasted_size += freed_len;
40005c58: 014787b3 add a5,a5,s4
40005c5c: 02f42223 sw a5,36(s0)
40005c60: f05ff06f j 40005b64 <jffs2_mark_node_obsolete+0xc8>
} else if (jeb == c->gcblock) {
40005c64: f8f48ae3 beq s1,a5,40005bf8 <jffs2_mark_node_obsolete+0x15c>
} else if (ISDIRTY(jeb->dirty_size) && !ISDIRTY(jeb->dirty_size - addedsize)) {
40005c68: 0184a783 lw a5,24(s1)
40005c6c: 0c400713 li a4,196
40005c70: 00f77663 bgeu a4,a5,40005c7c <jffs2_mark_node_obsolete+0x1e0>
40005c74: 413786b3 sub a3,a5,s3
40005c78: 16d77a63 bgeu a4,a3,40005dec <jffs2_mark_node_obsolete+0x350>
} else if (VERYDIRTY(c, jeb->dirty_size) &&
40005c7c: 03442703 lw a4,52(s0)
40005c80: 00175713 srli a4,a4,0x1
40005c84: f6e7eae3 bltu a5,a4,40005bf8 <jffs2_mark_node_obsolete+0x15c>
!VERYDIRTY(c, jeb->dirty_size - addedsize)) {
40005c88: 41378633 sub a2,a5,s3
} else if (VERYDIRTY(c, jeb->dirty_size) &&
40005c8c: f6e676e3 bgeu a2,a4,40005bf8 <jffs2_mark_node_obsolete+0x15c>
ent->prev->next = ent->next;
40005c90: 0004a703 lw a4,0(s1)
40005c94: 0044a683 lw a3,4(s1)
list_add_tail(&jeb->list, &c->very_dirty_list);
40005c98: 06840793 addi a5,s0,104
40005c9c: 00e6a023 sw a4,0(a3)
ent->next->prev = ent->prev;
40005ca0: 00d72223 sw a3,4(a4)
struct list_head *prev = beforethisent->prev;
40005ca4: 06c42703 lw a4,108(s0)
newent->next = beforethisent;
40005ca8: 00f4a023 sw a5,0(s1)
newent->prev = prev;
40005cac: 00e4a223 sw a4,4(s1)
beforethisent->prev = newent;
40005cb0: 06942623 sw s1,108(s0)
prev->next = newent;
40005cb4: 00972023 sw s1,0(a4)
} /* list_add_tail() */
40005cb8: f41ff06f j 40005bf8 <jffs2_mark_node_obsolete+0x15c>
list_for_each(this, head) {
40005cbc: 0b842783 lw a5,184(s0)
if (on_list(&jeb->list, &c->bad_used_list)) {
40005cc0: 0b840593 addi a1,s0,184
list_for_each(this, head) {
40005cc4: 00f58863 beq a1,a5,40005cd4 <jffs2_mark_node_obsolete+0x238>
if (this == obj) {
40005cc8: 10f48e63 beq s1,a5,40005de4 <jffs2_mark_node_obsolete+0x348> <== NOT EXECUTED
list_for_each(this, head) {
40005ccc: 0007a783 lw a5,0(a5) <== NOT EXECUTED
40005cd0: fef59ce3 bne a1,a5,40005cc8 <jffs2_mark_node_obsolete+0x22c> <== NOT EXECUTED
c->wasted_size -= jeb->wasted_size;
40005cd4: 02442583 lw a1,36(s0)
jeb->dirty_size += jeb->wasted_size;
40005cd8: 00c687b3 add a5,a3,a2
40005cdc: 00f4ac23 sw a5,24(s1)
c->dirty_size += jeb->wasted_size;
40005ce0: 00c80833 add a6,a6,a2
c->wasted_size -= jeb->wasted_size;
40005ce4: 40c587b3 sub a5,a1,a2
c->dirty_size += jeb->wasted_size;
40005ce8: 03042023 sw a6,32(s0)
c->wasted_size -= jeb->wasted_size;
40005cec: 02f42223 sw a5,36(s0)
addedsize += jeb->wasted_size;
40005cf0: 00ca09b3 add s3,s4,a2
jeb->wasted_size = 0;
40005cf4: 0004ae23 sw zero,28(s1)
40005cf8: e6dff06f j 40005b64 <jffs2_mark_node_obsolete+0xc8>
ret = jffs2_flash_read(c, ref_offset(ref), sizeof(n), &retlen, (char *)&n);
40005cfc: 00492583 lw a1,4(s2)
40005d00: 00410713 addi a4,sp,4
40005d04: 00010693 mv a3,sp
40005d08: 00c00613 li a2,12
40005d0c: ffc5f593 andi a1,a1,-4
40005d10: 00040513 mv a0,s0
40005d14: 465050ef jal ra,4000b978 <jffs2_flash_read>
if (ret) {
40005d18: 12051c63 bnez a0,40005e50 <jffs2_mark_node_obsolete+0x3b4> <== NEVER TAKEN
if (retlen != sizeof(n)) {
40005d1c: 00012483 lw s1,0(sp)
40005d20: 00c00793 li a5,12
40005d24: 10f49863 bne s1,a5,40005e34 <jffs2_mark_node_obsolete+0x398>
if (PAD(je32_to_cpu(n.totlen)) != PAD(freed_len)) {
40005d28: 00812583 lw a1,8(sp)
40005d2c: 003a0793 addi a5,s4,3
40005d30: 00358713 addi a4,a1,3
40005d34: 00f747b3 xor a5,a4,a5
40005d38: ffc7f793 andi a5,a5,-4
40005d3c: 12079c63 bnez a5,40005e74 <jffs2_mark_node_obsolete+0x3d8> <== NEVER TAKEN
if (!(je16_to_cpu(n.nodetype) & JFFS2_NODE_ACCURATE)) {
40005d40: 00615703 lhu a4,6(sp)
40005d44: 000027b7 lui a5,0x2
40005d48: 00f777b3 and a5,a4,a5
40005d4c: ec0780e3 beqz a5,40005c0c <jffs2_mark_node_obsolete+0x170> <== NEVER TAKEN
ret = jffs2_flash_write(c, ref_offset(ref), sizeof(n), &retlen, (char *)&n);
40005d50: 00492583 lw a1,4(s2)
n.nodetype = cpu_to_je16(je16_to_cpu(n.nodetype) & ~JFFS2_NODE_ACCURATE);
40005d54: ffffe7b7 lui a5,0xffffe
40005d58: fff78793 addi a5,a5,-1 # ffffdfff <RamEnd+0xbeffdfff>
40005d5c: 00f777b3 and a5,a4,a5
ret = jffs2_flash_write(c, ref_offset(ref), sizeof(n), &retlen, (char *)&n);
40005d60: 00010693 mv a3,sp
40005d64: 00410713 addi a4,sp,4
40005d68: 00c00613 li a2,12
40005d6c: ffc5f593 andi a1,a1,-4
40005d70: 00040513 mv a0,s0
n.nodetype = cpu_to_je16(je16_to_cpu(n.nodetype) & ~JFFS2_NODE_ACCURATE);
40005d74: 00f11323 sh a5,6(sp)
ret = jffs2_flash_write(c, ref_offset(ref), sizeof(n), &retlen, (char *)&n);
40005d78: 419050ef jal ra,4000b990 <jffs2_flash_write>
if (ret) {
40005d7c: 12051263 bnez a0,40005ea0 <jffs2_mark_node_obsolete+0x404> <== NEVER TAKEN
if (retlen != sizeof(n)) {
40005d80: 00012603 lw a2,0(sp)
40005d84: 10961263 bne a2,s1,40005e88 <jffs2_mark_node_obsolete+0x3ec>
if (ref->next_in_ino) {
40005d88: 00092683 lw a3,0(s2)
40005d8c: e80680e3 beqz a3,40005c0c <jffs2_mark_node_obsolete+0x170>
40005d90: 00068793 mv a5,a3
40005d94: 00078593 mv a1,a5
while(raw->next_in_ino)
40005d98: 0007a783 lw a5,0(a5)
40005d9c: fe079ce3 bnez a5,40005d94 <jffs2_mark_node_obsolete+0x2f8>
for (p = &ic->nodes; (*p) != ref; p = &((*p)->next_in_ino))
40005da0: 0045a783 lw a5,4(a1)
40005da4: 11278c63 beq a5,s2,40005ebc <jffs2_mark_node_obsolete+0x420>
40005da8: 00078713 mv a4,a5
40005dac: 0007a783 lw a5,0(a5)
40005db0: fef91ce3 bne s2,a5,40005da8 <jffs2_mark_node_obsolete+0x30c>
*p = ref->next_in_ino;
40005db4: 00d72023 sw a3,0(a4)
if (ic->nodes == (void *)ic && ic->pino_nlink == 0)
40005db8: 0045a783 lw a5,4(a1)
ref->next_in_ino = NULL;
40005dbc: 00092023 sw zero,0(s2)
if (ic->nodes == (void *)ic && ic->pino_nlink == 0)
40005dc0: e4f596e3 bne a1,a5,40005c0c <jffs2_mark_node_obsolete+0x170>
40005dc4: 0145a783 lw a5,20(a1)
40005dc8: e40792e3 bnez a5,40005c0c <jffs2_mark_node_obsolete+0x170>
jffs2_del_ino_cache(c, ic);
40005dcc: 00040513 mv a0,s0
40005dd0: d08ff0ef jal ra,400052d8 <jffs2_del_ino_cache>
return 0;
}
static inline void mutex_unlock(struct mutex *m)
{
(void) m;
40005dd4: e39ff06f j 40005c0c <jffs2_mark_node_obsolete+0x170>
pr_notice("EEEEEK. jffs2_mark_node_obsolete called with NULL node\n");
40005dd8: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40005ddc: 00450513 addi a0,a0,4 # 4001e004 <__func__.4+0x94> <== NOT EXECUTED
40005de0: b11ff06f j 400058f0 <jffs2_printk> <== NOT EXECUTED
addedsize = 0; /* To fool the refiling code later */
40005de4: 00000993 li s3,0 <== NOT EXECUTED
40005de8: d7dff06f j 40005b64 <jffs2_mark_node_obsolete+0xc8> <== NOT EXECUTED
ent->prev->next = ent->next;
40005dec: 0004a703 lw a4,0(s1)
40005df0: 0044a683 lw a3,4(s1)
list_add_tail(&jeb->list, &c->dirty_list);
40005df4: 07040793 addi a5,s0,112
40005df8: 00e6a023 sw a4,0(a3)
ent->next->prev = ent->prev;
40005dfc: 00d72223 sw a3,4(a4)
struct list_head *prev = beforethisent->prev;
40005e00: 07442703 lw a4,116(s0)
newent->next = beforethisent;
40005e04: 00f4a023 sw a5,0(s1)
newent->prev = prev;
40005e08: 00e4a223 sw a4,4(s1)
beforethisent->prev = newent;
40005e0c: 06942a23 sw s1,116(s0)
prev->next = newent;
40005e10: 00972023 sw s1,0(a4)
} /* list_add_tail() */
40005e14: de5ff06f j 40005bf8 <jffs2_mark_node_obsolete+0x15c>
struct list_head *prev = beforethisent->prev;
40005e18: 07c42783 lw a5,124(s0) <== NOT EXECUTED
list_add_tail(&jeb->list, &c->erasable_list);
40005e1c: 07840713 addi a4,s0,120 <== NOT EXECUTED
newent->next = beforethisent;
40005e20: 00e4a023 sw a4,0(s1) <== NOT EXECUTED
newent->prev = prev;
40005e24: 00f4a223 sw a5,4(s1) <== NOT EXECUTED
beforethisent->prev = newent;
40005e28: 06942e23 sw s1,124(s0) <== NOT EXECUTED
prev->next = newent;
40005e2c: 0097a023 sw s1,0(a5) <== NOT EXECUTED
} /* list_add_tail() */
40005e30: dc9ff06f j 40005bf8 <jffs2_mark_node_obsolete+0x15c> <== NOT EXECUTED
pr_warn("Short read from obsoleted node at 0x%08x: %zd\n",
40005e34: 00492583 lw a1,4(s2) <== NOT EXECUTED
40005e38: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40005e3c: 00048613 mv a2,s1 <== NOT EXECUTED
40005e40: ffc5f593 andi a1,a1,-4 <== NOT EXECUTED
40005e44: 0f050513 addi a0,a0,240 # 4001e0f0 <__func__.4+0x180> <== NOT EXECUTED
40005e48: aa9ff0ef jal ra,400058f0 <jffs2_printk> <== NOT EXECUTED
goto out_erase_sem;
40005e4c: dc1ff06f j 40005c0c <jffs2_mark_node_obsolete+0x170> <== NOT EXECUTED
pr_warn("Read error reading from obsoleted node at 0x%08x: %d\n",
40005e50: 00492583 lw a1,4(s2) <== NOT EXECUTED
40005e54: 00050613 mv a2,a0 <== NOT EXECUTED
40005e58: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40005e5c: ffc5f593 andi a1,a1,-4 <== NOT EXECUTED
40005e60: 0b050513 addi a0,a0,176 # 4001e0b0 <__func__.4+0x140> <== NOT EXECUTED
40005e64: a8dff0ef jal ra,400058f0 <jffs2_printk> <== NOT EXECUTED
goto out_erase_sem;
40005e68: da5ff06f j 40005c0c <jffs2_mark_node_obsolete+0x170> <== NOT EXECUTED
c->gcblock = NULL;
40005e6c: 04042e23 sw zero,92(s0)
40005e70: d49ff06f j 40005bb8 <jffs2_mark_node_obsolete+0x11c>
pr_warn("Node totlen on flash (0x%08x) != totlen from node ref (0x%08x)\n",
40005e74: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40005e78: 000a0613 mv a2,s4 <== NOT EXECUTED
40005e7c: 12c50513 addi a0,a0,300 # 4001e12c <__func__.4+0x1bc> <== NOT EXECUTED
40005e80: a71ff0ef jal ra,400058f0 <jffs2_printk> <== NOT EXECUTED
goto out_erase_sem;
40005e84: d89ff06f j 40005c0c <jffs2_mark_node_obsolete+0x170> <== NOT EXECUTED
pr_warn("Short write in obliterating obsoleted node at 0x%08x: %zd\n",
40005e88: 00492583 lw a1,4(s2) <== NOT EXECUTED
40005e8c: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40005e90: 1bc50513 addi a0,a0,444 # 4001e1bc <__func__.4+0x24c> <== NOT EXECUTED
40005e94: ffc5f593 andi a1,a1,-4 <== NOT EXECUTED
40005e98: a59ff0ef jal ra,400058f0 <jffs2_printk> <== NOT EXECUTED
goto out_erase_sem;
40005e9c: d71ff06f j 40005c0c <jffs2_mark_node_obsolete+0x170> <== NOT EXECUTED
pr_warn("Write error in obliterating obsoleted node at 0x%08x: %d\n",
40005ea0: 00492583 lw a1,4(s2) <== NOT EXECUTED
40005ea4: 00050613 mv a2,a0 <== NOT EXECUTED
40005ea8: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40005eac: ffc5f593 andi a1,a1,-4 <== NOT EXECUTED
40005eb0: 17850513 addi a0,a0,376 # 4001e178 <__func__.4+0x208> <== NOT EXECUTED
40005eb4: a3dff0ef jal ra,400058f0 <jffs2_printk> <== NOT EXECUTED
goto out_erase_sem;
40005eb8: d55ff06f j 40005c0c <jffs2_mark_node_obsolete+0x170> <== NOT EXECUTED
for (p = &ic->nodes; (*p) != ref; p = &((*p)->next_in_ino))
40005ebc: 00458713 addi a4,a1,4
40005ec0: ef5ff06f j 40005db4 <jffs2_mark_node_obsolete+0x318>
pr_notice("raw node at 0x%08x is off the end of device!\n",
40005ec4: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40005ec8: 04850513 addi a0,a0,72 # 4001e048 <__func__.4+0xd8> <== NOT EXECUTED
40005ecc: a25ff0ef jal ra,400058f0 <jffs2_printk> <== NOT EXECUTED
BUG();
40005ed0: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
40005ed4: 4001e637 lui a2,0x4001e <== NOT EXECUTED
40005ed8: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40005edc: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
40005ee0: 2f060613 addi a2,a2,752 # 4001e2f0 <__func__.0> <== NOT EXECUTED
40005ee4: 25b00593 li a1,603 <== NOT EXECUTED
40005ee8: 08050513 addi a0,a0,128 # 4001e080 <__func__.4+0x110> <== NOT EXECUTED
40005eec: 3b4070ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
4000abb4 <jffs2_mknod>:
size_t d_namelen,
int mode,
const unsigned char *data,
size_t datalen
)
{
4000abb4: fb010113 addi sp,sp,-80
4000abb8: 05212023 sw s2,64(sp)
4000abbc: 04112623 sw ra,76(sp)
4000abc0: 00078913 mv s2,a5
4000abc4: 04812423 sw s0,72(sp)
4000abc8: 04912223 sw s1,68(sp)
4000abcc: 03312e23 sw s3,60(sp)
4000abd0: 03412c23 sw s4,56(sp)
4000abd4: 03512a23 sw s5,52(sp)
4000abd8: 03612823 sw s6,48(sp)
4000abdc: 03712623 sw s7,44(sp)
4000abe0: 03812423 sw s8,40(sp)
4000abe4: 03912223 sw s9,36(sp)
4000abe8: 03a12023 sw s10,32(sp)
4000abec: 01b12e23 sw s11,28(sp)
uint32_t alloclen;
int ret;
/* FIXME: If you care. We'd need to use frags for the data
if it grows much more than this */
if (datalen > 254)
4000abf0: 0fe00793 li a5,254
4000abf4: 4927e663 bltu a5,s2,4000b080 <jffs2_mknod+0x4cc>
4000abf8: 00050993 mv s3,a0
4000abfc: 00058c93 mv s9,a1
4000ac00: 00060b13 mv s6,a2
4000ac04: 00068a93 mv s5,a3
4000ac08: 00070b93 mv s7,a4
return -ENAMETOOLONG;
ri = jffs2_alloc_raw_inode();
4000ac0c: c89f90ef jal ra,40004894 <jffs2_alloc_raw_inode>
4000ac10: 00050413 mv s0,a0
if (!ri)
4000ac14: 46050a63 beqz a0,4000b088 <jffs2_mknod+0x4d4> <== NEVER TAKEN
return -ENOMEM;
c = JFFS2_SB_INFO(dir_i->i_sb);
4000ac18: 0409ac03 lw s8,64(s3)
/* Try to reserve enough space for both node and dirent.
* Just the node will do for now, though
*/
ret = jffs2_reserve_space(c, sizeof(*ri) + datalen, &alloclen,
4000ac1c: 04490d13 addi s10,s2,68
4000ac20: 01200713 li a4,18
4000ac24: 00000693 li a3,0
4000ac28: 00c10613 addi a2,sp,12
4000ac2c: 000d0593 mv a1,s10
4000ac30: 000c0513 mv a0,s8
4000ac34: e6cfb0ef jal ra,400062a0 <jffs2_reserve_space>
4000ac38: 00050493 mv s1,a0
ALLOC_NORMAL, JFFS2_SUMMARY_INODE_SIZE);
if (ret) {
4000ac3c: 1e051063 bnez a0,4000ae1c <jffs2_mknod+0x268> <== NEVER TAKEN
jffs2_free_raw_inode(ri);
return ret;
}
inode = jffs2_new_inode(dir_i, mode, ri);
4000ac40: 00040613 mv a2,s0
4000ac44: 000a8593 mv a1,s5
4000ac48: 00098513 mv a0,s3
4000ac4c: a40f80ef jal ra,40002e8c <jffs2_new_inode>
if (IS_ERR(inode)) {
4000ac50: c1800d93 li s11,-1000
inode = jffs2_new_inode(dir_i, mode, ri);
4000ac54: 00050a13 mv s4,a0
if (IS_ERR(inode)) {
4000ac58: 16ade863 bltu s11,a0,4000adc8 <jffs2_mknod+0x214>
}
f = JFFS2_INODE_INFO(inode);
inode->i_size = datalen;
ri->isize = ri->dsize = ri->csize = cpu_to_je32(inode->i_size);
4000ac5c: 00895713 srli a4,s2,0x8
4000ac60: 01095793 srli a5,s2,0x10
inode->i_size = datalen;
4000ac64: 03252c23 sw s2,56(a0)
4000ac68: 02052e23 sw zero,60(a0)
ri->isize = ri->dsize = ri->csize = cpu_to_je32(inode->i_size);
4000ac6c: 0ff77713 andi a4,a4,255
4000ac70: 0ff7f793 andi a5,a5,255
4000ac74: 01895693 srli a3,s2,0x18
ri->totlen = cpu_to_je32(sizeof(*ri) + inode->i_size);
4000ac78: 008d5313 srli t1,s10,0x8
4000ac7c: 010d5893 srli a7,s10,0x10
4000ac80: 018d5813 srli a6,s10,0x18
ri->isize = ri->dsize = ri->csize = cpu_to_je32(inode->i_size);
4000ac84: 0ff97513 andi a0,s2,255
ri->totlen = cpu_to_je32(sizeof(*ri) + inode->i_size);
4000ac88: 006402a3 sb t1,5(s0)
4000ac8c: 01140323 sb a7,6(s0)
4000ac90: 010403a3 sb a6,7(s0)
ri->hdr_crc = cpu_to_je32(crc32(0, ri, sizeof(struct jffs2_unknown_node)-4));
4000ac94: 00800613 li a2,8
4000ac98: 00040593 mv a1,s0
ri->isize = ri->dsize = ri->csize = cpu_to_je32(inode->i_size);
4000ac9c: 02a40823 sb a0,48(s0)
4000aca0: 02e408a3 sb a4,49(s0)
4000aca4: 02f40923 sb a5,50(s0)
4000aca8: 02d409a3 sb a3,51(s0)
4000acac: 02a40a23 sb a0,52(s0)
4000acb0: 02e40aa3 sb a4,53(s0)
4000acb4: 02f40b23 sb a5,54(s0)
4000acb8: 02d40ba3 sb a3,55(s0)
4000acbc: 00a40e23 sb a0,28(s0)
4000acc0: 00e40ea3 sb a4,29(s0)
4000acc4: 00f40f23 sb a5,30(s0)
4000acc8: 00d40fa3 sb a3,31(s0)
ri->totlen = cpu_to_je32(sizeof(*ri) + inode->i_size);
4000accc: 01a40223 sb s10,4(s0)
ri->hdr_crc = cpu_to_je32(crc32(0, ri, sizeof(struct jffs2_unknown_node)-4));
4000acd0: 00000513 li a0,0
4000acd4: fbcff0ef jal ra,4000a490 <cyg_crc32_accumulate>
4000acd8: 00855693 srli a3,a0,0x8
4000acdc: 01055713 srli a4,a0,0x10
4000ace0: 01855793 srli a5,a0,0x18
ri->compr = JFFS2_COMPR_NONE;
ri->data_crc = cpu_to_je32(crc32(0, data, datalen));
4000ace4: 00090613 mv a2,s2
4000ace8: 000b8593 mv a1,s7
ri->hdr_crc = cpu_to_je32(crc32(0, ri, sizeof(struct jffs2_unknown_node)-4));
4000acec: 00a40423 sb a0,8(s0)
4000acf0: 00d404a3 sb a3,9(s0)
4000acf4: 00e40523 sb a4,10(s0)
4000acf8: 00f405a3 sb a5,11(s0)
ri->compr = JFFS2_COMPR_NONE;
4000acfc: 02040c23 sb zero,56(s0)
ri->data_crc = cpu_to_je32(crc32(0, data, datalen));
4000ad00: 00000513 li a0,0
4000ad04: f8cff0ef jal ra,4000a490 <cyg_crc32_accumulate>
4000ad08: 00855693 srli a3,a0,0x8
4000ad0c: 01055713 srli a4,a0,0x10
4000ad10: 01855793 srli a5,a0,0x18
ri->node_crc = cpu_to_je32(crc32(0, ri, sizeof(*ri)-8));
4000ad14: 03c00613 li a2,60
4000ad18: 00040593 mv a1,s0
ri->data_crc = cpu_to_je32(crc32(0, data, datalen));
4000ad1c: 02a40e23 sb a0,60(s0)
4000ad20: 02d40ea3 sb a3,61(s0)
4000ad24: 02e40f23 sb a4,62(s0)
4000ad28: 02f40fa3 sb a5,63(s0)
ri->node_crc = cpu_to_je32(crc32(0, ri, sizeof(*ri)-8));
4000ad2c: 00000513 li a0,0
4000ad30: f60ff0ef jal ra,4000a490 <cyg_crc32_accumulate>
4000ad34: 00855693 srli a3,a0,0x8
4000ad38: 01055713 srli a4,a0,0x10
4000ad3c: 01855793 srli a5,a0,0x18
4000ad40: 04a40023 sb a0,64(s0)
4000ad44: 04d400a3 sb a3,65(s0)
4000ad48: 04e40123 sb a4,66(s0)
4000ad4c: 04f401a3 sb a5,67(s0)
fn = jffs2_write_dnode(c, f, ri, data, datalen, ALLOC_NORMAL);
4000ad50: 00090713 mv a4,s2
4000ad54: 00000793 li a5,0
4000ad58: 000b8693 mv a3,s7
4000ad5c: 00040613 mv a2,s0
4000ad60: 048a0593 addi a1,s4,72
4000ad64: 000c0513 mv a0,s8
4000ad68: c31fd0ef jal ra,40008998 <jffs2_write_dnode>
4000ad6c: 00050493 mv s1,a0
jffs2_free_raw_inode(ri);
4000ad70: 00040513 mv a0,s0
4000ad74: b29f90ef jal ra,4000489c <jffs2_free_raw_inode>
if (IS_ERR(fn)) {
4000ad78: 289de863 bltu s11,s1,4000b008 <jffs2_mknod+0x454>
jffs2_complete_reservation(c);
ret = PTR_ERR(fn);
goto fail;
}
if (S_ISLNK(mode)) {
4000ad7c: 0000f7b7 lui a5,0xf
4000ad80: 00faf7b3 and a5,s5,a5
4000ad84: 0000a737 lui a4,0xa
4000ad88: 28e78a63 beq a5,a4,4000b01c <jffs2_mknod+0x468>
obsoleted by the first data write
*/
f->metadata = fn;
mutex_unlock(&f->sem);
jffs2_complete_reservation(c);
4000ad8c: 000c0513 mv a0,s8
f->metadata = fn;
4000ad90: 049a2823 sw s1,80(s4)
jffs2_complete_reservation(c);
4000ad94: cf5fa0ef jal ra,40005a88 <jffs2_complete_reservation>
ret = jffs2_reserve_space(c, sizeof(*rd)+d_namelen, &alloclen,
4000ad98: 028b0913 addi s2,s6,40
4000ad9c: 018b0713 addi a4,s6,24
4000ada0: 00000693 li a3,0
4000ada4: 00c10613 addi a2,sp,12
4000ada8: 00090593 mv a1,s2
4000adac: 000c0513 mv a0,s8
4000adb0: cf0fb0ef jal ra,400062a0 <jffs2_reserve_space>
4000adb4: 00050493 mv s1,a0
ALLOC_NORMAL, JFFS2_SUMMARY_DIRENT_SIZE(d_namelen));
if (ret)
4000adb8: 06050863 beqz a0,4000ae28 <jffs2_mknod+0x274> <== ALWAYS TAKEN
mutex_unlock(&dir_f->sem);
jffs2_complete_reservation(c);
fail:
jffs2_iput(inode);
4000adbc: 000a0513 mv a0,s4 <== NOT EXECUTED
4000adc0: 981f70ef jal ra,40002740 <jffs2_iput> <== NOT EXECUTED
return ret;
4000adc4: 0180006f j 4000addc <jffs2_mknod+0x228> <== NOT EXECUTED
jffs2_free_raw_inode(ri);
4000adc8: 00040513 mv a0,s0 <== NOT EXECUTED
4000adcc: ad1f90ef jal ra,4000489c <jffs2_free_raw_inode> <== NOT EXECUTED
jffs2_complete_reservation(c);
4000add0: 000c0513 mv a0,s8 <== NOT EXECUTED
4000add4: cb5fa0ef jal ra,40005a88 <jffs2_complete_reservation> <== NOT EXECUTED
return PTR_ERR(inode);
4000add8: 000a0493 mv s1,s4 <== NOT EXECUTED
}
4000addc: 04c12083 lw ra,76(sp)
4000ade0: 04812403 lw s0,72(sp)
4000ade4: 04012903 lw s2,64(sp)
4000ade8: 03c12983 lw s3,60(sp)
4000adec: 03812a03 lw s4,56(sp)
4000adf0: 03412a83 lw s5,52(sp)
4000adf4: 03012b03 lw s6,48(sp)
4000adf8: 02c12b83 lw s7,44(sp)
4000adfc: 02812c03 lw s8,40(sp)
4000ae00: 02412c83 lw s9,36(sp)
4000ae04: 02012d03 lw s10,32(sp)
4000ae08: 01c12d83 lw s11,28(sp)
4000ae0c: 00048513 mv a0,s1
4000ae10: 04412483 lw s1,68(sp)
4000ae14: 05010113 addi sp,sp,80
4000ae18: 00008067 ret
jffs2_free_raw_inode(ri);
4000ae1c: 00040513 mv a0,s0 <== NOT EXECUTED
4000ae20: a7df90ef jal ra,4000489c <jffs2_free_raw_inode> <== NOT EXECUTED
return ret;
4000ae24: fb9ff06f j 4000addc <jffs2_mknod+0x228> <== NOT EXECUTED
rd = jffs2_alloc_raw_dirent();
4000ae28: a61f90ef jal ra,40004888 <jffs2_alloc_raw_dirent>
4000ae2c: 00050413 mv s0,a0
if (!rd) {
4000ae30: 24050063 beqz a0,4000b070 <jffs2_mknod+0x4bc> <== NEVER TAKEN
rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4));
4000ae34: 00050593 mv a1,a0
rd->magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
4000ae38: f8500513 li a0,-123
4000ae3c: 00a40023 sb a0,0(s0)
4000ae40: 01900513 li a0,25
4000ae44: 00a400a3 sb a0,1(s0)
rd->nodetype = cpu_to_je16(JFFS2_NODETYPE_DIRENT);
4000ae48: 00100513 li a0,1
rd->totlen = cpu_to_je32(sizeof(*rd) + d_namelen);
4000ae4c: 00895693 srli a3,s2,0x8
4000ae50: 01095713 srli a4,s2,0x10
4000ae54: 01895793 srli a5,s2,0x18
rd->nodetype = cpu_to_je16(JFFS2_NODETYPE_DIRENT);
4000ae58: 00a40123 sb a0,2(s0)
4000ae5c: fe000513 li a0,-32
rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4));
4000ae60: 00800613 li a2,8
rd->nodetype = cpu_to_je16(JFFS2_NODETYPE_DIRENT);
4000ae64: 00a401a3 sb a0,3(s0)
rd->totlen = cpu_to_je32(sizeof(*rd) + d_namelen);
4000ae68: 01240223 sb s2,4(s0)
4000ae6c: 00d402a3 sb a3,5(s0)
4000ae70: 00e40323 sb a4,6(s0)
4000ae74: 00f403a3 sb a5,7(s0)
rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4));
4000ae78: 00000513 li a0,0
4000ae7c: e14ff0ef jal ra,4000a490 <cyg_crc32_accumulate>
rd->pino = cpu_to_je32(dir_i->i_ino);
4000ae80: 0009ce03 lbu t3,0(s3)
4000ae84: 0019c303 lbu t1,1(s3)
rd->version = cpu_to_je32(++dir_f->highest_version);
4000ae88: 0489a783 lw a5,72(s3)
rd->pino = cpu_to_je32(dir_i->i_ino);
4000ae8c: 0029c883 lbu a7,2(s3)
4000ae90: 0039c803 lbu a6,3(s3)
rd->ino = cpu_to_je32(inode->i_ino);
4000ae94: 001a4603 lbu a2,1(s4)
4000ae98: 002a4683 lbu a3,2(s4)
4000ae9c: 003a4703 lbu a4,3(s4)
4000aea0: 000a4583 lbu a1,0(s4)
rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4));
4000aea4: 00855f93 srli t6,a0,0x8
4000aea8: 01055f13 srli t5,a0,0x10
4000aeac: 01855e93 srli t4,a0,0x18
rd->version = cpu_to_je32(++dir_f->highest_version);
4000aeb0: 00178793 addi a5,a5,1 # f001 <bsp_section_rodata_size+0x9f2d>
rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4));
4000aeb4: 01f404a3 sb t6,9(s0)
4000aeb8: 01e40523 sb t5,10(s0)
4000aebc: 01d405a3 sb t4,11(s0)
rd->pino = cpu_to_je32(dir_i->i_ino);
4000aec0: 01c40623 sb t3,12(s0)
4000aec4: 006406a3 sb t1,13(s0)
rd->hdr_crc = cpu_to_je32(crc32(0, rd, sizeof(struct jffs2_unknown_node)-4));
4000aec8: 00a40423 sb a0,8(s0)
rd->pino = cpu_to_je32(dir_i->i_ino);
4000aecc: 01140723 sb a7,14(s0)
4000aed0: 010407a3 sb a6,15(s0)
rd->version = cpu_to_je32(++dir_f->highest_version);
4000aed4: 04f9a423 sw a5,72(s3)
4000aed8: 0087d893 srli a7,a5,0x8
4000aedc: 0107d813 srli a6,a5,0x10
4000aee0: 0187d513 srli a0,a5,0x18
4000aee4: 011408a3 sb a7,17(s0)
4000aee8: 01040923 sb a6,18(s0)
4000aeec: 00f40823 sb a5,16(s0)
4000aef0: 00a409a3 sb a0,19(s0)
rd->ino = cpu_to_je32(inode->i_ino);
4000aef4: 00c40aa3 sb a2,21(s0)
4000aef8: 00d40b23 sb a3,22(s0)
4000aefc: 00e40ba3 sb a4,23(s0)
4000af00: 00b40a23 sb a1,20(s0)
rd->mctime = cpu_to_je32(get_seconds());
4000af04: 00000513 li a0,0
4000af08: 0b1110ef jal ra,4001c7b8 <time>
rd->type = (mode & S_IFMT) >> 12;
4000af0c: 40cada93 srai s5,s5,0xc
rd->mctime = cpu_to_je32(get_seconds());
4000af10: 00855693 srli a3,a0,0x8
4000af14: 01055713 srli a4,a0,0x10
4000af18: 01855793 srli a5,a0,0x18
rd->type = (mode & S_IFMT) >> 12;
4000af1c: 00fafa93 andi s5,s5,15
rd->node_crc = cpu_to_je32(crc32(0, rd, sizeof(*rd)-8));
4000af20: 02000613 li a2,32
4000af24: 00040593 mv a1,s0
rd->mctime = cpu_to_je32(get_seconds());
4000af28: 00a40c23 sb a0,24(s0)
4000af2c: 00d40ca3 sb a3,25(s0)
4000af30: 00e40d23 sb a4,26(s0)
4000af34: 00f40da3 sb a5,27(s0)
rd->nsize = d_namelen;
4000af38: 01640e23 sb s6,28(s0)
rd->type = (mode & S_IFMT) >> 12;
4000af3c: 01540ea3 sb s5,29(s0)
rd->node_crc = cpu_to_je32(crc32(0, rd, sizeof(*rd)-8));
4000af40: 00000513 li a0,0
4000af44: d4cff0ef jal ra,4000a490 <cyg_crc32_accumulate>
4000af48: 00855693 srli a3,a0,0x8
4000af4c: 01055713 srli a4,a0,0x10
4000af50: 01855793 srli a5,a0,0x18
rd->name_crc = cpu_to_je32(crc32(0, d_name, d_namelen));
4000af54: 000b0613 mv a2,s6
4000af58: 000c8593 mv a1,s9
rd->node_crc = cpu_to_je32(crc32(0, rd, sizeof(*rd)-8));
4000af5c: 02a40023 sb a0,32(s0)
4000af60: 02d400a3 sb a3,33(s0)
4000af64: 02e40123 sb a4,34(s0)
4000af68: 02f401a3 sb a5,35(s0)
rd->name_crc = cpu_to_je32(crc32(0, d_name, d_namelen));
4000af6c: 00000513 li a0,0
4000af70: d20ff0ef jal ra,4000a490 <cyg_crc32_accumulate>
4000af74: 00855693 srli a3,a0,0x8
4000af78: 01055713 srli a4,a0,0x10
4000af7c: 01855793 srli a5,a0,0x18
4000af80: 02a40223 sb a0,36(s0)
4000af84: 02d402a3 sb a3,37(s0)
4000af88: 02e40323 sb a4,38(s0)
4000af8c: 02f403a3 sb a5,39(s0)
fd = jffs2_write_dirent(c, dir_f, rd, d_name, d_namelen, ALLOC_NORMAL);
4000af90: 000b0713 mv a4,s6
4000af94: 00000793 li a5,0
4000af98: 000c8693 mv a3,s9
4000af9c: 00040613 mv a2,s0
4000afa0: 04898593 addi a1,s3,72
4000afa4: 000c0513 mv a0,s8
4000afa8: e65fd0ef jal ra,40008e0c <jffs2_write_dirent>
if (IS_ERR(fd)) {
4000afac: c1800793 li a5,-1000
fd = jffs2_write_dirent(c, dir_f, rd, d_name, d_namelen, ALLOC_NORMAL);
4000afb0: 00050913 mv s2,a0
if (IS_ERR(fd)) {
4000afb4: 08a7e863 bltu a5,a0,4000b044 <jffs2_mknod+0x490>
dir_i->i_mtime = dir_i->i_ctime = ITIME(je32_to_cpu(rd->mctime));
4000afb8: 01944683 lbu a3,25(s0)
4000afbc: 01844603 lbu a2,24(s0)
4000afc0: 01a44703 lbu a4,26(s0)
4000afc4: 01b44783 lbu a5,27(s0)
4000afc8: 00869693 slli a3,a3,0x8
4000afcc: 00c6e6b3 or a3,a3,a2
4000afd0: 01071713 slli a4,a4,0x10
4000afd4: 00d76733 or a4,a4,a3
4000afd8: 01879793 slli a5,a5,0x18
4000afdc: 00e7e7b3 or a5,a5,a4
jffs2_free_raw_dirent(rd);
4000afe0: 00040513 mv a0,s0
dir_i->i_mtime = dir_i->i_ctime = ITIME(je32_to_cpu(rd->mctime));
4000afe4: 02f9a423 sw a5,40(s3)
4000afe8: 0209a623 sw zero,44(s3)
4000afec: 02f9a023 sw a5,32(s3)
4000aff0: 0209a223 sw zero,36(s3)
jffs2_free_raw_dirent(rd);
4000aff4: 89df90ef jal ra,40004890 <jffs2_free_raw_dirent>
jffs2_add_fd_to_list(c, fd, &dir_f->dents);
4000aff8: 05498613 addi a2,s3,84
4000affc: 00090593 mv a1,s2
4000b000: 000c0513 mv a0,s8
4000b004: af5f90ef jal ra,40004af8 <jffs2_add_fd_to_list>
jffs2_complete_reservation(c);
4000b008: 000c0513 mv a0,s8
4000b00c: a7dfa0ef jal ra,40005a88 <jffs2_complete_reservation>
jffs2_iput(inode);
4000b010: 000a0513 mv a0,s4
4000b014: f2cf70ef jal ra,40002740 <jffs2_iput>
return ret;
4000b018: dc5ff06f j 4000addc <jffs2_mknod+0x228>
char *dup = malloc(n + 1);
4000b01c: 00290513 addi a0,s2,2
4000b020: 25d020ef jal ra,4000da7c <malloc>
f->target = kmemdup(data, datalen + 1, GFP_KERNEL);
4000b024: 00190613 addi a2,s2,1
if (dup != 0) {
4000b028: 02050a63 beqz a0,4000b05c <jffs2_mknod+0x4a8> <== NEVER TAKEN
dup[n] = '\0';
4000b02c: 00c507b3 add a5,a0,a2
dup = memcpy(dup, s, n);
4000b030: 000b8593 mv a1,s7
dup[n] = '\0';
4000b034: 00078023 sb zero,0(a5)
dup = memcpy(dup, s, n);
4000b038: 7b9100ef jal ra,4001bff0 <memcpy>
4000b03c: 04aa2c23 sw a0,88(s4)
if (!f->target) {
4000b040: d4dff06f j 4000ad8c <jffs2_mknod+0x1d8>
jffs2_complete_reservation(c);
4000b044: 000c0513 mv a0,s8 <== NOT EXECUTED
4000b048: a41fa0ef jal ra,40005a88 <jffs2_complete_reservation> <== NOT EXECUTED
jffs2_free_raw_dirent(rd);
4000b04c: 00040513 mv a0,s0 <== NOT EXECUTED
4000b050: 841f90ef jal ra,40004890 <jffs2_free_raw_dirent> <== NOT EXECUTED
ret = PTR_ERR(fd);
4000b054: 00090493 mv s1,s2 <== NOT EXECUTED
goto fail;
4000b058: d65ff06f j 4000adbc <jffs2_mknod+0x208> <== NOT EXECUTED
pr_warn("Can't allocate %d bytes of memory\n", datalen + 1);
4000b05c: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000b060: 00060593 mv a1,a2 <== NOT EXECUTED
f->target = kmemdup(data, datalen + 1, GFP_KERNEL);
4000b064: 040a2c23 sw zero,88(s4) <== NOT EXECUTED
pr_warn("Can't allocate %d bytes of memory\n", datalen + 1);
4000b068: 8a850513 addi a0,a0,-1880 # 4001f8a8 <__func__.0+0x4c> <== NOT EXECUTED
4000b06c: f48ff0ef jal ra,4000a7b4 <jffs2_printk> <== NOT EXECUTED
jffs2_complete_reservation(c);
4000b070: 000c0513 mv a0,s8 <== NOT EXECUTED
4000b074: a15fa0ef jal ra,40005a88 <jffs2_complete_reservation> <== NOT EXECUTED
ret = -ENOMEM;
4000b078: ff400493 li s1,-12 <== NOT EXECUTED
goto fail;
4000b07c: d41ff06f j 4000adbc <jffs2_mknod+0x208> <== NOT EXECUTED
return -ENAMETOOLONG;
4000b080: fa500493 li s1,-91 <== NOT EXECUTED
4000b084: d59ff06f j 4000addc <jffs2_mknod+0x228> <== NOT EXECUTED
return -ENOMEM;
4000b088: ff400493 li s1,-12 <== NOT EXECUTED
4000b08c: d51ff06f j 4000addc <jffs2_mknod+0x228> <== NOT EXECUTED
40002e8c <jffs2_new_inode>:
{
40002e8c: fe010113 addi sp,sp,-32
40002e90: 01412423 sw s4,8(sp)
struct super_block *sb = dir_i->i_sb;
40002e94: 04052a03 lw s4,64(a0)
{
40002e98: 00812c23 sw s0,24(sp)
40002e9c: 00912a23 sw s1,20(sp)
inode = new_inode(sb);
40002ea0: 000a0513 mv a0,s4
{
40002ea4: 01212823 sw s2,16(sp)
40002ea8: 00112e23 sw ra,28(sp)
40002eac: 01312623 sw s3,12(sp)
40002eb0: 01512223 sw s5,4(sp)
40002eb4: 00058913 mv s2,a1
40002eb8: 00060413 mv s0,a2
inode = new_inode(sb);
40002ebc: adcfe0ef jal ra,40001198 <new_inode>
return ERR_PTR(-ENOMEM);
40002ec0: ff400493 li s1,-12
if (!inode)
40002ec4: 0a050e63 beqz a0,40002f80 <jffs2_new_inode+0xf4> <== NEVER TAKEN
f = JFFS2_INODE_INFO(inode);
40002ec8: 04850a93 addi s5,a0,72
memset(f, 0, sizeof(*f));
40002ecc: 01c00613 li a2,28
40002ed0: 00000593 li a1,0
40002ed4: 00050493 mv s1,a0
40002ed8: 000a8513 mv a0,s5
40002edc: 23c190ef jal ra,4001c118 <memset>
memset(ri, 0, sizeof(*ri));
40002ee0: 04400613 li a2,68
40002ee4: 00000593 li a1,0
40002ee8: 00040513 mv a0,s0
40002eec: 22c190ef jal ra,4001c118 <memset>
ri->uid = cpu_to_je16(geteuid());
40002ef0: 1050a0ef jal ra,4000d7f4 <geteuid>
40002ef4: 00855793 srli a5,a0,0x8
40002ef8: 00f40ca3 sb a5,25(s0)
40002efc: 00a40c23 sb a0,24(s0)
return osmode & (S_IFMT | S_IRWXU | S_IRWXG | S_IRWXO);
40002f00: 0000f9b7 lui s3,0xf
ri->gid = cpu_to_je16(getegid());
40002f04: 0d50a0ef jal ra,4000d7d8 <getegid>
40002f08: 1ff98993 addi s3,s3,511 # f1ff <bsp_section_rodata_size+0xa12b>
40002f0c: 013977b3 and a5,s2,s3
40002f10: 00855693 srli a3,a0,0x8
ri->mode = cpu_to_jemode(mode);
40002f14: 0087d713 srli a4,a5,0x8
40002f18: 0107d793 srli a5,a5,0x10
ri->gid = cpu_to_je16(getegid());
40002f1c: 00a40d23 sb a0,26(s0)
40002f20: 00d40da3 sb a3,27(s0)
ri->mode = cpu_to_jemode(mode);
40002f24: 01240a23 sb s2,20(s0)
ret = jffs2_do_new_inode (c, f, mode, ri);
40002f28: 00090613 mv a2,s2
ri->mode = cpu_to_jemode(mode);
40002f2c: 00e40aa3 sb a4,21(s0)
40002f30: 00f40b23 sb a5,22(s0)
40002f34: 00040ba3 sb zero,23(s0)
ret = jffs2_do_new_inode (c, f, mode, ri);
40002f38: 00040693 mv a3,s0
40002f3c: 000a8593 mv a1,s5
40002f40: 000a0513 mv a0,s4
40002f44: 0f9050ef jal ra,4000883c <jffs2_do_new_inode>
40002f48: 00050913 mv s2,a0
if (ret) {
40002f4c: 04050e63 beqz a0,40002fa8 <jffs2_new_inode+0x11c> <== ALWAYS TAKEN
if (inode->i_cache_prev)
40002f50: 0644a703 lw a4,100(s1) <== NOT EXECUTED
inode->i_cache_prev->i_cache_next = inode->i_cache_next;
40002f54: 0684a783 lw a5,104(s1) <== NOT EXECUTED
if (inode->i_cache_prev)
40002f58: 00070463 beqz a4,40002f60 <jffs2_new_inode+0xd4> <== NOT EXECUTED
inode->i_cache_prev->i_cache_next = inode->i_cache_next;
40002f5c: 06f72423 sw a5,104(a4) <== NOT EXECUTED
if (inode->i_cache_next)
40002f60: 00078463 beqz a5,40002f68 <jffs2_new_inode+0xdc> <== NOT EXECUTED
inode->i_cache_next->i_cache_prev = inode->i_cache_prev;
40002f64: 06e7a223 sw a4,100(a5) <== NOT EXECUTED
jffs2_do_clear_inode(c, f);
40002f68: 0404a503 lw a0,64(s1) <== NOT EXECUTED
40002f6c: 000a8593 mv a1,s5 <== NOT EXECUTED
40002f70: 6e0050ef jal ra,40008650 <jffs2_do_clear_inode> <== NOT EXECUTED
free(inode);
40002f74: 00048513 mv a0,s1 <== NOT EXECUTED
40002f78: 75c0a0ef jal ra,4000d6d4 <free> <== NOT EXECUTED
return ERR_PTR(ret);
40002f7c: 00090493 mv s1,s2 <== NOT EXECUTED
}
40002f80: 01c12083 lw ra,28(sp)
40002f84: 01812403 lw s0,24(sp)
40002f88: 01012903 lw s2,16(sp)
40002f8c: 00c12983 lw s3,12(sp)
40002f90: 00812a03 lw s4,8(sp)
40002f94: 00412a83 lw s5,4(sp)
40002f98: 00048513 mv a0,s1
40002f9c: 01412483 lw s1,20(sp)
40002fa0: 02010113 addi sp,sp,32
40002fa4: 00008067 ret
inode->i_nlink = 1;
40002fa8: 00100793 li a5,1
40002fac: 00f49623 sh a5,12(s1)
inode->i_ino = je32_to_cpu(ri->ino);
40002fb0: 00d44683 lbu a3,13(s0)
40002fb4: 00c44603 lbu a2,12(s0)
40002fb8: 00e44703 lbu a4,14(s0)
40002fbc: 00f44783 lbu a5,15(s0)
40002fc0: 00869693 slli a3,a3,0x8
40002fc4: 00c6e6b3 or a3,a3,a2
40002fc8: 01071713 slli a4,a4,0x10
40002fcc: 00d76733 or a4,a4,a3
40002fd0: 01879793 slli a5,a5,0x18
40002fd4: 00e7e7b3 or a5,a5,a4
40002fd8: 00f4a023 sw a5,0(s1)
inode->i_mode = jemode_to_cpu(ri->mode);
40002fdc: 01544683 lbu a3,21(s0)
40002fe0: 01444603 lbu a2,20(s0)
40002fe4: 01644703 lbu a4,22(s0)
40002fe8: 01744783 lbu a5,23(s0)
40002fec: 00869693 slli a3,a3,0x8
40002ff0: 00c6e6b3 or a3,a3,a2
40002ff4: 01071713 slli a4,a4,0x10
40002ff8: 00d76733 or a4,a4,a3
40002ffc: 01879793 slli a5,a5,0x18
40003000: 00e7e7b3 or a5,a5,a4
return jmode & (S_IFMT | S_IRWXU | S_IRWXG | S_IRWXO);
40003004: 0137f9b3 and s3,a5,s3
40003008: 0134a423 sw s3,8(s1)
inode->i_gid = je16_to_cpu(ri->gid);
4000300c: 01b44783 lbu a5,27(s0)
40003010: 01a44703 lbu a4,26(s0)
40003014: 00879793 slli a5,a5,0x8
40003018: 00e7e7b3 or a5,a5,a4
4000301c: 00f49823 sh a5,16(s1)
inode->i_uid = je16_to_cpu(ri->uid);
40003020: 01944783 lbu a5,25(s0)
40003024: 01844703 lbu a4,24(s0)
40003028: 00879793 slli a5,a5,0x8
4000302c: 00e7e7b3 or a5,a5,a4
40003030: 00f49723 sh a5,14(s1)
inode->i_atime = inode->i_ctime = inode->i_mtime = get_seconds();
40003034: 784190ef jal ra,4001c7b8 <time>
ri->atime = ri->mtime = ri->ctime = cpu_to_je32(inode->i_mtime);
40003038: 00855713 srli a4,a0,0x8
4000303c: 01055793 srli a5,a0,0x10
inode->i_atime = inode->i_ctime = inode->i_mtime = get_seconds();
40003040: 02a4a023 sw a0,32(s1)
40003044: 02a4a423 sw a0,40(s1)
40003048: 00a4ac23 sw a0,24(s1)
4000304c: 02b4a223 sw a1,36(s1)
40003050: 02b4a623 sw a1,44(s1)
40003054: 00b4ae23 sw a1,28(s1)
ri->atime = ri->mtime = ri->ctime = cpu_to_je32(inode->i_mtime);
40003058: 0ff57693 andi a3,a0,255
4000305c: 0ff7f793 andi a5,a5,255
40003060: 0ff77713 andi a4,a4,255
40003064: 01855513 srli a0,a0,0x18
40003068: 02f40523 sb a5,42(s0)
4000306c: 02f40323 sb a5,38(s0)
40003070: 02f40123 sb a5,34(s0)
40003074: 02d40423 sb a3,40(s0)
40003078: 02e404a3 sb a4,41(s0)
4000307c: 02a405a3 sb a0,43(s0)
40003080: 02d40223 sb a3,36(s0)
40003084: 02e402a3 sb a4,37(s0)
40003088: 02a403a3 sb a0,39(s0)
4000308c: 02d40023 sb a3,32(s0)
40003090: 02e400a3 sb a4,33(s0)
40003094: 02a401a3 sb a0,35(s0)
inode->i_size = 0;
40003098: 00000793 li a5,0
4000309c: 00000813 li a6,0
400030a0: 02f4ac23 sw a5,56(s1)
400030a4: 0304ae23 sw a6,60(s1)
return inode;
400030a8: ed9ff06f j 40002f80 <jffs2_new_inode+0xf4>
400048ac <jffs2_prealloc_raw_node_refs>:
{
struct jffs2_raw_node_ref **p, *ref;
int i = nr;
p = &jeb->last_node;
ref = *p;
400048ac: 02c5a503 lw a0,44(a1)
{
400048b0: fe010113 addi sp,sp,-32
400048b4: 01312623 sw s3,12(sp)
400048b8: 01412423 sw s4,8(sp)
400048bc: 01512223 sw s5,4(sp)
400048c0: 00112e23 sw ra,28(sp)
400048c4: 00812c23 sw s0,24(sp)
400048c8: 00912a23 sw s1,20(sp)
400048cc: 01212823 sw s2,16(sp)
400048d0: 00058a13 mv s4,a1
400048d4: 00060a93 mv s5,a2
p = &jeb->last_node;
400048d8: 02c58993 addi s3,a1,44
/* If jeb->last_node is really a valid node then skip over it */
if (ref && ref->flash_offset != REF_EMPTY_NODE)
400048dc: 00050a63 beqz a0,400048f0 <jffs2_prealloc_raw_node_refs+0x44>
400048e0: 00452703 lw a4,4(a0)
400048e4: ffe00793 li a5,-2
400048e8: 00f70463 beq a4,a5,400048f0 <jffs2_prealloc_raw_node_refs+0x44>
ref++;
400048ec: 00850513 addi a0,a0,8
while (i) {
400048f0: 020a8463 beqz s5,40004918 <jffs2_prealloc_raw_node_refs+0x6c> <== NEVER TAKEN
400048f4: 000a8493 mv s1,s5
ret[i].flash_offset = REF_EMPTY_NODE;
400048f8: ffe00413 li s0,-2
ret[i].flash_offset = REF_LINK_NODE;
400048fc: fff00913 li s2,-1
if (!ref) {
40004900: 04050863 beqz a0,40004950 <jffs2_prealloc_raw_node_refs+0xa4>
ref = *p = jffs2_alloc_refblock();
if (!ref)
return -ENOMEM;
}
if (ref->flash_offset == REF_LINK_NODE) {
40004904: 00452783 lw a5,4(a0)
40004908: 03278e63 beq a5,s2,40004944 <jffs2_prealloc_raw_node_refs+0x98>
p = &ref->next_in_ino;
ref = *p;
continue;
}
i--;
4000490c: fff48493 addi s1,s1,-1
ref++;
40004910: 00850513 addi a0,a0,8
while (i) {
40004914: fe0496e3 bnez s1,40004900 <jffs2_prealloc_raw_node_refs+0x54> <== NEVER TAKEN
}
jeb->allocated_refs = nr;
40004918: 035a2223 sw s5,36(s4)
return 0;
4000491c: 00000513 li a0,0
}
40004920: 01c12083 lw ra,28(sp)
40004924: 01812403 lw s0,24(sp)
40004928: 01412483 lw s1,20(sp)
4000492c: 01012903 lw s2,16(sp)
40004930: 00c12983 lw s3,12(sp)
40004934: 00812a03 lw s4,8(sp)
40004938: 00412a83 lw s5,4(sp)
4000493c: 02010113 addi sp,sp,32
40004940: 00008067 ret
p = &ref->next_in_ino;
40004944: 00050993 mv s3,a0
ref = *p;
40004948: 00052503 lw a0,0(a0)
if (!ref) {
4000494c: fa051ce3 bnez a0,40004904 <jffs2_prealloc_raw_node_refs+0x58> <== NEVER TAKEN
ret = malloc((REFS_PER_BLOCK + 1) * sizeof(*ret));
40004950: 0f800513 li a0,248
40004954: 128090ef jal ra,4000da7c <malloc>
if (ret) {
40004958: 02050663 beqz a0,40004984 <jffs2_prealloc_raw_node_refs+0xd8> <== NEVER TAKEN
4000495c: 00050793 mv a5,a0
40004960: 0f050713 addi a4,a0,240
ret[i].flash_offset = REF_EMPTY_NODE;
40004964: 0087a223 sw s0,4(a5) # f004 <bsp_section_rodata_size+0x9f30>
ret[i].next_in_ino = NULL;
40004968: 0007a023 sw zero,0(a5)
for (i=0; i < REFS_PER_BLOCK; i++) {
4000496c: 00878793 addi a5,a5,8
40004970: fef71ae3 bne a4,a5,40004964 <jffs2_prealloc_raw_node_refs+0xb8>
ret[i].flash_offset = REF_LINK_NODE;
40004974: 0f252a23 sw s2,244(a0)
ret[i].next_in_ino = NULL;
40004978: 0e052823 sw zero,240(a0)
ref = *p = jffs2_alloc_refblock();
4000497c: 00a9a023 sw a0,0(s3)
if (!ref)
40004980: f85ff06f j 40004904 <jffs2_prealloc_raw_node_refs+0x58>
ref = *p = jffs2_alloc_refblock();
40004984: 0009a023 sw zero,0(s3) <== NOT EXECUTED
return -ENOMEM;
40004988: ff400513 li a0,-12 <== NOT EXECUTED
4000498c: f95ff06f j 40004920 <jffs2_prealloc_raw_node_refs+0x74> <== NOT EXECUTED
40006508 <jffs2_read_dnode>:
#include "compr.h"
int jffs2_read_dnode(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
struct jffs2_full_dnode *fd, unsigned char *buf,
int ofs, int len)
{
40006508: fc010113 addi sp,sp,-64
4000650c: 02912a23 sw s1,52(sp)
40006510: 03212823 sw s2,48(sp)
40006514: 03312623 sw s3,44(sp)
40006518: 03412423 sw s4,40(sp)
4000651c: 03512223 sw s5,36(sp)
40006520: 03612023 sw s6,32(sp)
40006524: 02112e23 sw ra,60(sp)
40006528: 02812c23 sw s0,56(sp)
4000652c: 01712e23 sw s7,28(sp)
40006530: 01812c23 sw s8,24(sp)
40006534: 01912a23 sw s9,20(sp)
40006538: 00050913 mv s2,a0
4000653c: 00058a93 mv s5,a1
40006540: 00060493 mv s1,a2
40006544: 00068993 mv s3,a3
40006548: 00070b13 mv s6,a4
4000654c: 00078a13 mv s4,a5
uint32_t crc;
unsigned char *decomprbuf = NULL;
unsigned char *readbuf = NULL;
int ret = 0;
ri = jffs2_alloc_raw_inode();
40006550: b44fe0ef jal ra,40004894 <jffs2_alloc_raw_inode>
if (!ri)
40006554: 4a050863 beqz a0,40006a04 <jffs2_read_dnode+0x4fc> <== NEVER TAKEN
return -ENOMEM;
ret = jffs2_flash_read(c, ref_offset(fd->raw), sizeof(*ri), &readlen, (char *)ri);
40006558: 0004a783 lw a5,0(s1)
4000655c: 00050713 mv a4,a0
40006560: 00050413 mv s0,a0
40006564: 0047a583 lw a1,4(a5)
40006568: 00c10693 addi a3,sp,12
4000656c: 04400613 li a2,68
40006570: ffc5f593 andi a1,a1,-4
40006574: 00090513 mv a0,s2
40006578: 400050ef jal ra,4000b978 <jffs2_flash_read>
4000657c: 00050b93 mv s7,a0
if (ret) {
40006580: 18051063 bnez a0,40006700 <jffs2_read_dnode+0x1f8> <== NEVER TAKEN
jffs2_free_raw_inode(ri);
pr_warn("Error reading node from 0x%08x: %d\n",
ref_offset(fd->raw), ret);
return ret;
}
if (readlen != sizeof(*ri)) {
40006584: 00c12703 lw a4,12(sp)
40006588: 04400793 li a5,68
4000658c: 44f71463 bne a4,a5,400069d4 <jffs2_read_dnode+0x4cc>
jffs2_free_raw_inode(ri);
pr_warn("Short read from 0x%08x: wanted 0x%zx bytes, got 0x%zx\n",
ref_offset(fd->raw), sizeof(*ri), readlen);
return -EIO;
}
crc = crc32(0, ri, sizeof(*ri)-8);
40006590: 00040593 mv a1,s0
40006594: 03c00613 li a2,60
40006598: 6f9030ef jal ra,4000a490 <cyg_crc32_accumulate>
jffs2_dbg(1, "Node read from %08x: node_crc %08x, calculated CRC %08x. dsize %x, csize %x, offset %x, buf %p\n",
ref_offset(fd->raw), je32_to_cpu(ri->node_crc),
crc, je32_to_cpu(ri->dsize), je32_to_cpu(ri->csize),
je32_to_cpu(ri->offset), buf);
if (crc != je32_to_cpu(ri->node_crc)) {
4000659c: 04144583 lbu a1,65(s0)
400065a0: 04044783 lbu a5,64(s0)
400065a4: 04244883 lbu a7,66(s0)
400065a8: 04344803 lbu a6,67(s0)
400065ac: 00859593 slli a1,a1,0x8
400065b0: 00f5e5b3 or a1,a1,a5
400065b4: 01089893 slli a7,a7,0x10
400065b8: 00b8e8b3 or a7,a7,a1
400065bc: 01881813 slli a6,a6,0x18
400065c0: 011865b3 or a1,a6,a7
400065c4: 10a59c63 bne a1,a0,400066dc <jffs2_read_dnode+0x1d4>
ret = -EIO;
goto out_ri;
}
/* There was a bug where we wrote hole nodes out with csize/dsize
swapped. Deal with it */
if (ri->compr == JFFS2_COMPR_ZERO && !je32_to_cpu(ri->dsize) &&
400065c8: 03844703 lbu a4,56(s0)
400065cc: 00100793 li a5,1
400065d0: 14f70c63 beq a4,a5,40006728 <jffs2_read_dnode+0x220>
je32_to_cpu(ri->csize)) {
400065d4: 03144b83 lbu s7,49(s0)
400065d8: 03044683 lbu a3,48(s0)
400065dc: 03244603 lbu a2,50(s0)
400065e0: 03344783 lbu a5,51(s0)
400065e4: 008b9b93 slli s7,s7,0x8
400065e8: 00dbebb3 or s7,s7,a3
400065ec: 01061613 slli a2,a2,0x10
400065f0: 01766633 or a2,a2,s7
400065f4: 01879b93 slli s7,a5,0x18
400065f8: 00cbebb3 or s7,s7,a2
Reading whole node and it's uncompressed - read directly to buffer provided, check CRC.
Reading whole node and it's compressed - read into comprbuf, check CRC and decompress to buffer provided
Reading partial node and it's uncompressed - read into readbuf, check CRC, and copy
Reading partial node and it's compressed - read into readbuf, check checksum, decompress to decomprbuf and copy
*/
if (ri->compr == JFFS2_COMPR_NONE && len == je32_to_cpu(ri->dsize)) {
400065fc: 22071463 bnez a4,40006824 <jffs2_read_dnode+0x31c>
40006600: 03544683 lbu a3,53(s0)
40006604: 03444603 lbu a2,52(s0)
40006608: 03644703 lbu a4,54(s0)
4000660c: 03744783 lbu a5,55(s0)
40006610: 00869693 slli a3,a3,0x8
40006614: 00c6e6b3 or a3,a3,a2
40006618: 01071713 slli a4,a4,0x10
4000661c: 00d76733 or a4,a4,a3
40006620: 01879793 slli a5,a5,0x18
40006624: 00e7e7b3 or a5,a5,a4
40006628: 03478063 beq a5,s4,40006648 <jffs2_read_dnode+0x140>
readbuf = buf;
} else {
readbuf = kmalloc(je32_to_cpu(ri->csize), GFP_KERNEL);
4000662c: 000b8513 mv a0,s7
40006630: 44c070ef jal ra,4000da7c <malloc>
40006634: 00050c13 mv s8,a0
if (!readbuf) {
40006638: 00050c93 mv s9,a0
4000663c: 00051a63 bnez a0,40006650 <jffs2_read_dnode+0x148> <== ALWAYS TAKEN
ret = -ENOMEM;
40006640: ff400b93 li s7,-12 <== NOT EXECUTED
40006644: 0580006f j 4000669c <jffs2_read_dnode+0x194> <== NOT EXECUTED
40006648: 00098c93 mv s9,s3
4000664c: 00098c13 mv s8,s3
decomprbuf = readbuf;
}
jffs2_dbg(2, "Read %d bytes to %p\n", je32_to_cpu(ri->csize),
readbuf);
ret = jffs2_flash_read(c, (ref_offset(fd->raw)) + sizeof(*ri),
40006650: 0004a783 lw a5,0(s1)
40006654: 000b8613 mv a2,s7
40006658: 000c8713 mv a4,s9
4000665c: 0047a583 lw a1,4(a5)
40006660: 00c10693 addi a3,sp,12
40006664: 00090513 mv a0,s2
40006668: ffc5f593 andi a1,a1,-4
4000666c: 04458593 addi a1,a1,68
40006670: 308050ef jal ra,4000b978 <jffs2_flash_read>
40006674: 00050b93 mv s7,a0
je32_to_cpu(ri->csize), &readlen, readbuf);
if (!ret && readlen != je32_to_cpu(ri->csize))
40006678: 0e050a63 beqz a0,4000676c <jffs2_read_dnode+0x264> <== ALWAYS TAKEN
if (len < je32_to_cpu(ri->dsize)) {
memcpy(buf, decomprbuf+ofs, len);
}
out_decomprbuf:
if(decomprbuf != buf && decomprbuf != readbuf)
4000667c: 01898863 beq s3,s8,4000668c <jffs2_read_dnode+0x184>
40006680: 018c8a63 beq s9,s8,40006694 <jffs2_read_dnode+0x18c>
kfree(decomprbuf);
40006684: 000c0513 mv a0,s8
40006688: 04c070ef jal ra,4000d6d4 <free>
out_readbuf:
if(readbuf != buf)
4000668c: 01998863 beq s3,s9,4000669c <jffs2_read_dnode+0x194>
40006690: 000c8c13 mv s8,s9
kfree(readbuf);
40006694: 000c0513 mv a0,s8
40006698: 03c070ef jal ra,4000d6d4 <free>
out_ri:
jffs2_free_raw_inode(ri);
4000669c: 00040513 mv a0,s0
400066a0: 9fcfe0ef jal ra,4000489c <jffs2_free_raw_inode>
return ret;
}
400066a4: 03c12083 lw ra,60(sp)
400066a8: 03812403 lw s0,56(sp)
400066ac: 03412483 lw s1,52(sp)
400066b0: 03012903 lw s2,48(sp)
400066b4: 02c12983 lw s3,44(sp)
400066b8: 02812a03 lw s4,40(sp)
400066bc: 02412a83 lw s5,36(sp)
400066c0: 02012b03 lw s6,32(sp)
400066c4: 01812c03 lw s8,24(sp)
400066c8: 01412c83 lw s9,20(sp)
400066cc: 000b8513 mv a0,s7
400066d0: 01c12b83 lw s7,28(sp)
400066d4: 04010113 addi sp,sp,64
400066d8: 00008067 ret
pr_warn("Node CRC %08x != calculated CRC %08x for node at %08x\n",
400066dc: 0004a783 lw a5,0(s1) <== NOT EXECUTED
400066e0: 00050613 mv a2,a0 <== NOT EXECUTED
400066e4: 4001e537 lui a0,0x4001e <== NOT EXECUTED
400066e8: 0047a683 lw a3,4(a5) <== NOT EXECUTED
400066ec: 38050513 addi a0,a0,896 # 4001e380 <__func__.0+0x90> <== NOT EXECUTED
ret = -EIO;
400066f0: ffb00b93 li s7,-5 <== NOT EXECUTED
pr_warn("Node CRC %08x != calculated CRC %08x for node at %08x\n",
400066f4: ffc6f693 andi a3,a3,-4 <== NOT EXECUTED
400066f8: dd1ff0ef jal ra,400064c8 <jffs2_printk> <== NOT EXECUTED
goto out_ri;
400066fc: fa1ff06f j 4000669c <jffs2_read_dnode+0x194> <== NOT EXECUTED
jffs2_free_raw_inode(ri);
40006700: 00040513 mv a0,s0 <== NOT EXECUTED
40006704: 998fe0ef jal ra,4000489c <jffs2_free_raw_inode> <== NOT EXECUTED
pr_warn("Error reading node from 0x%08x: %d\n",
40006708: 0004a783 lw a5,0(s1) <== NOT EXECUTED
4000670c: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40006710: 000b8613 mv a2,s7 <== NOT EXECUTED
40006714: 0047a583 lw a1,4(a5) <== NOT EXECUTED
40006718: 30c50513 addi a0,a0,780 # 4001e30c <__func__.0+0x1c> <== NOT EXECUTED
4000671c: ffc5f593 andi a1,a1,-4 <== NOT EXECUTED
40006720: da9ff0ef jal ra,400064c8 <jffs2_printk> <== NOT EXECUTED
return ret;
40006724: f81ff06f j 400066a4 <jffs2_read_dnode+0x19c> <== NOT EXECUTED
if (ri->compr == JFFS2_COMPR_ZERO && !je32_to_cpu(ri->dsize) &&
40006728: 03544683 lbu a3,53(s0)
4000672c: 03444603 lbu a2,52(s0)
40006730: 03644703 lbu a4,54(s0)
40006734: 03744783 lbu a5,55(s0)
40006738: 00869693 slli a3,a3,0x8
4000673c: 00c6e6b3 or a3,a3,a2
40006740: 01071713 slli a4,a4,0x10
40006744: 00d76733 or a4,a4,a3
40006748: 01879793 slli a5,a5,0x18
4000674c: 00e7e7b3 or a5,a5,a4
40006750: 18078a63 beqz a5,400068e4 <jffs2_read_dnode+0x3dc> <== NEVER TAKEN
memset(buf, 0, len);
40006754: 000a0613 mv a2,s4
40006758: 00000593 li a1,0
4000675c: 00098513 mv a0,s3
40006760: 1b9150ef jal ra,4001c118 <memset>
ret = jffs2_flash_read(c, ref_offset(fd->raw), sizeof(*ri), &readlen, (char *)ri);
40006764: 00000b93 li s7,0
goto out_ri;
40006768: f35ff06f j 4000669c <jffs2_read_dnode+0x194>
if (!ret && readlen != je32_to_cpu(ri->csize))
4000676c: 03144703 lbu a4,49(s0)
40006770: 03044683 lbu a3,48(s0)
40006774: 03244783 lbu a5,50(s0)
40006778: 03344603 lbu a2,51(s0)
4000677c: 00871713 slli a4,a4,0x8
40006780: 00d76733 or a4,a4,a3
40006784: 01079793 slli a5,a5,0x10
40006788: 00c12683 lw a3,12(sp)
4000678c: 00e7e7b3 or a5,a5,a4
40006790: 01861613 slli a2,a2,0x18
40006794: 00f66633 or a2,a2,a5
ret = -EIO;
40006798: ffb00b93 li s7,-5
if (!ret && readlen != je32_to_cpu(ri->csize))
4000679c: eed610e3 bne a2,a3,4000667c <jffs2_read_dnode+0x174>
crc = crc32(0, readbuf, je32_to_cpu(ri->csize));
400067a0: 000c8593 mv a1,s9
400067a4: 00000513 li a0,0
400067a8: 4e9030ef jal ra,4000a490 <cyg_crc32_accumulate>
if (crc != je32_to_cpu(ri->data_crc)) {
400067ac: 03d44703 lbu a4,61(s0)
400067b0: 03c44683 lbu a3,60(s0)
400067b4: 03e44783 lbu a5,62(s0)
400067b8: 03f44583 lbu a1,63(s0)
400067bc: 00871713 slli a4,a4,0x8
400067c0: 00d76733 or a4,a4,a3
400067c4: 01079793 slli a5,a5,0x10
400067c8: 00e7e7b3 or a5,a5,a4
400067cc: 01859593 slli a1,a1,0x18
400067d0: 00f5e5b3 or a1,a1,a5
400067d4: 16a59063 bne a1,a0,40006934 <jffs2_read_dnode+0x42c>
ret = jffs2_decompress(c, f, ri->compr | (ri->usercompr << 8), readbuf, decomprbuf, je32_to_cpu(ri->csize), je32_to_cpu(ri->dsize));
400067d8: 03544703 lbu a4,53(s0)
400067dc: 03444683 lbu a3,52(s0)
400067e0: 03644783 lbu a5,54(s0)
400067e4: 03744803 lbu a6,55(s0)
400067e8: 00871713 slli a4,a4,0x8
if (ri->compr != JFFS2_COMPR_NONE) {
400067ec: 03844603 lbu a2,56(s0)
ret = jffs2_decompress(c, f, ri->compr | (ri->usercompr << 8), readbuf, decomprbuf, je32_to_cpu(ri->csize), je32_to_cpu(ri->dsize));
400067f0: 00d76733 or a4,a4,a3
400067f4: 01079793 slli a5,a5,0x10
400067f8: 00e7e7b3 or a5,a5,a4
400067fc: 01881813 slli a6,a6,0x18
40006800: 00f86833 or a6,a6,a5
if (ri->compr != JFFS2_COMPR_NONE) {
40006804: 14061a63 bnez a2,40006958 <jffs2_read_dnode+0x450>
out_decomprbuf:
40006808: 00000b93 li s7,0
if (len < je32_to_cpu(ri->dsize)) {
4000680c: e70a78e3 bgeu s4,a6,4000667c <jffs2_read_dnode+0x174>
memcpy(buf, decomprbuf+ofs, len);
40006810: 000a0613 mv a2,s4
40006814: 016c05b3 add a1,s8,s6
40006818: 00098513 mv a0,s3
4000681c: 7d4150ef jal ra,4001bff0 <memcpy>
40006820: e5dff06f j 4000667c <jffs2_read_dnode+0x174>
readbuf = kmalloc(je32_to_cpu(ri->csize), GFP_KERNEL);
40006824: 000b8513 mv a0,s7
40006828: 254070ef jal ra,4000da7c <malloc>
4000682c: 00050c93 mv s9,a0
if (!readbuf) {
40006830: e00508e3 beqz a0,40006640 <jffs2_read_dnode+0x138> <== NEVER TAKEN
if (len < je32_to_cpu(ri->dsize)) {
40006834: 03544703 lbu a4,53(s0)
40006838: 03444683 lbu a3,52(s0)
4000683c: 03644783 lbu a5,54(s0)
40006840: 03744503 lbu a0,55(s0)
40006844: 00871713 slli a4,a4,0x8
40006848: 00d76733 or a4,a4,a3
4000684c: 01079793 slli a5,a5,0x10
40006850: 00e7e7b3 or a5,a5,a4
40006854: 01851513 slli a0,a0,0x18
40006858: 00f56533 or a0,a0,a5
4000685c: 06aa6863 bltu s4,a0,400068cc <jffs2_read_dnode+0x3c4>
ret = jffs2_flash_read(c, (ref_offset(fd->raw)) + sizeof(*ri),
40006860: 0004a783 lw a5,0(s1)
40006864: 000b8613 mv a2,s7
40006868: 000c8713 mv a4,s9
4000686c: 0047a583 lw a1,4(a5)
40006870: 00c10693 addi a3,sp,12
40006874: 00090513 mv a0,s2
40006878: ffc5f593 andi a1,a1,-4
4000687c: 04458593 addi a1,a1,68
40006880: 0f8050ef jal ra,4000b978 <jffs2_flash_read>
40006884: 00050b93 mv s7,a0
if (!ret && readlen != je32_to_cpu(ri->csize))
40006888: e00512e3 bnez a0,4000668c <jffs2_read_dnode+0x184> <== NEVER TAKEN
4000688c: 03144703 lbu a4,49(s0)
40006890: 03044683 lbu a3,48(s0)
40006894: 03244783 lbu a5,50(s0)
40006898: 03344603 lbu a2,51(s0)
4000689c: 00871713 slli a4,a4,0x8
400068a0: 00d76733 or a4,a4,a3
400068a4: 01079793 slli a5,a5,0x10
400068a8: 00c12683 lw a3,12(sp)
400068ac: 00e7e7b3 or a5,a5,a4
400068b0: 01861613 slli a2,a2,0x18
400068b4: 00f66633 or a2,a2,a5
400068b8: 00098c13 mv s8,s3
400068bc: eed602e3 beq a2,a3,400067a0 <jffs2_read_dnode+0x298>
ret = -EIO;
400068c0: ffb00b93 li s7,-5 <== NOT EXECUTED
if(readbuf != buf)
400068c4: dd998ce3 beq s3,s9,4000669c <jffs2_read_dnode+0x194> <== NOT EXECUTED
400068c8: dc9ff06f j 40006690 <jffs2_read_dnode+0x188> <== NOT EXECUTED
decomprbuf = kmalloc(je32_to_cpu(ri->dsize), GFP_KERNEL);
400068cc: 1b0070ef jal ra,4000da7c <malloc>
400068d0: 00050c13 mv s8,a0
if (!decomprbuf) {
400068d4: d6051ee3 bnez a0,40006650 <jffs2_read_dnode+0x148> <== ALWAYS TAKEN
ret = -ENOMEM;
400068d8: ff400b93 li s7,-12 <== NOT EXECUTED
if(readbuf != buf)
400068dc: dd9980e3 beq s3,s9,4000669c <jffs2_read_dnode+0x194> <== NOT EXECUTED
400068e0: db1ff06f j 40006690 <jffs2_read_dnode+0x188> <== NOT EXECUTED
je32_to_cpu(ri->csize)) {
400068e4: 03144583 lbu a1,49(s0) <== NOT EXECUTED
400068e8: 03044503 lbu a0,48(s0) <== NOT EXECUTED
400068ec: 03244603 lbu a2,50(s0) <== NOT EXECUTED
400068f0: 03344683 lbu a3,51(s0) <== NOT EXECUTED
400068f4: 00859713 slli a4,a1,0x8 <== NOT EXECUTED
400068f8: 01061793 slli a5,a2,0x10 <== NOT EXECUTED
400068fc: 00a76733 or a4,a4,a0 <== NOT EXECUTED
40006900: 00e7e733 or a4,a5,a4 <== NOT EXECUTED
40006904: 01869793 slli a5,a3,0x18 <== NOT EXECUTED
40006908: 00e7e7b3 or a5,a5,a4 <== NOT EXECUTED
if (ri->compr == JFFS2_COMPR_ZERO && !je32_to_cpu(ri->dsize) &&
4000690c: e40784e3 beqz a5,40006754 <jffs2_read_dnode+0x24c> <== NOT EXECUTED
ri->dsize = ri->csize;
40006910: 02a40a23 sb a0,52(s0) <== NOT EXECUTED
40006914: 02b40aa3 sb a1,53(s0) <== NOT EXECUTED
40006918: 02c40b23 sb a2,54(s0) <== NOT EXECUTED
4000691c: 02d40ba3 sb a3,55(s0) <== NOT EXECUTED
ri->csize = cpu_to_je32(0);
40006920: 02040823 sb zero,48(s0) <== NOT EXECUTED
40006924: 020408a3 sb zero,49(s0) <== NOT EXECUTED
40006928: 02040923 sb zero,50(s0) <== NOT EXECUTED
4000692c: 020409a3 sb zero,51(s0) <== NOT EXECUTED
40006930: e25ff06f j 40006754 <jffs2_read_dnode+0x24c> <== NOT EXECUTED
pr_warn("Data CRC %08x != calculated CRC %08x for node at %08x\n",
40006934: 0004a783 lw a5,0(s1) <== NOT EXECUTED
40006938: 00050613 mv a2,a0 <== NOT EXECUTED
4000693c: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40006940: 0047a683 lw a3,4(a5) <== NOT EXECUTED
40006944: 3c450513 addi a0,a0,964 # 4001e3c4 <__func__.0+0xd4> <== NOT EXECUTED
ret = -EIO;
40006948: ffb00b93 li s7,-5 <== NOT EXECUTED
pr_warn("Data CRC %08x != calculated CRC %08x for node at %08x\n",
4000694c: ffc6f693 andi a3,a3,-4 <== NOT EXECUTED
40006950: b79ff0ef jal ra,400064c8 <jffs2_printk> <== NOT EXECUTED
goto out_decomprbuf;
40006954: d29ff06f j 4000667c <jffs2_read_dnode+0x174> <== NOT EXECUTED
ret = jffs2_decompress(c, f, ri->compr | (ri->usercompr << 8), readbuf, decomprbuf, je32_to_cpu(ri->csize), je32_to_cpu(ri->dsize));
40006958: 03144703 lbu a4,49(s0)
4000695c: 03044503 lbu a0,48(s0)
40006960: 03244783 lbu a5,50(s0)
40006964: 03344683 lbu a3,51(s0)
40006968: 03944583 lbu a1,57(s0)
4000696c: 00871713 slli a4,a4,0x8
40006970: 00a76733 or a4,a4,a0
40006974: 01079793 slli a5,a5,0x10
40006978: 00e7e7b3 or a5,a5,a4
4000697c: 01869693 slli a3,a3,0x18
40006980: 00859593 slli a1,a1,0x8
40006984: 00f6e7b3 or a5,a3,a5
40006988: 00c5e633 or a2,a1,a2
4000698c: 000c0713 mv a4,s8
40006990: 000c8693 mv a3,s9
40006994: 000a8593 mv a1,s5
40006998: 00090513 mv a0,s2
4000699c: 3ad030ef jal ra,4000a548 <jffs2_decompress>
400069a0: 00050b93 mv s7,a0
if (ret) {
400069a4: 06051463 bnez a0,40006a0c <jffs2_read_dnode+0x504> <== NEVER TAKEN
if (len < je32_to_cpu(ri->dsize)) {
400069a8: 03544703 lbu a4,53(s0)
400069ac: 03444683 lbu a3,52(s0)
400069b0: 03644783 lbu a5,54(s0)
400069b4: 03744803 lbu a6,55(s0)
400069b8: 00871713 slli a4,a4,0x8
400069bc: 00d76733 or a4,a4,a3
400069c0: 01079793 slli a5,a5,0x10
400069c4: 00e7e7b3 or a5,a5,a4
400069c8: 01881813 slli a6,a6,0x18
400069cc: 00f86833 or a6,a6,a5
400069d0: e39ff06f j 40006808 <jffs2_read_dnode+0x300>
jffs2_free_raw_inode(ri);
400069d4: 00040513 mv a0,s0 <== NOT EXECUTED
400069d8: ec5fd0ef jal ra,4000489c <jffs2_free_raw_inode> <== NOT EXECUTED
pr_warn("Short read from 0x%08x: wanted 0x%zx bytes, got 0x%zx\n",
400069dc: 0004a783 lw a5,0(s1) <== NOT EXECUTED
400069e0: 00c12683 lw a3,12(sp) <== NOT EXECUTED
400069e4: 4001e537 lui a0,0x4001e <== NOT EXECUTED
400069e8: 0047a583 lw a1,4(a5) <== NOT EXECUTED
400069ec: 04400613 li a2,68 <== NOT EXECUTED
400069f0: 33c50513 addi a0,a0,828 # 4001e33c <__func__.0+0x4c> <== NOT EXECUTED
400069f4: ffc5f593 andi a1,a1,-4 <== NOT EXECUTED
400069f8: ad1ff0ef jal ra,400064c8 <jffs2_printk> <== NOT EXECUTED
return -EIO;
400069fc: ffb00b93 li s7,-5 <== NOT EXECUTED
40006a00: ca5ff06f j 400066a4 <jffs2_read_dnode+0x19c> <== NOT EXECUTED
return -ENOMEM;
40006a04: ff400b93 li s7,-12 <== NOT EXECUTED
40006a08: c9dff06f j 400066a4 <jffs2_read_dnode+0x19c> <== NOT EXECUTED
pr_warn("Error: jffs2_decompress returned %d\n", ret);
40006a0c: 00050593 mv a1,a0 <== NOT EXECUTED
40006a10: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40006a14: 40850513 addi a0,a0,1032 # 4001e408 <__func__.0+0x118> <== NOT EXECUTED
40006a18: ab1ff0ef jal ra,400064c8 <jffs2_printk> <== NOT EXECUTED
goto out_decomprbuf;
40006a1c: c61ff06f j 4000667c <jffs2_read_dnode+0x174> <== NOT EXECUTED
40006a20 <jffs2_read_inode_range>:
int jffs2_read_inode_range(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
unsigned char *buf, uint32_t offset, uint32_t len)
{
40006a20: fd010113 addi sp,sp,-48
40006a24: 01412c23 sw s4,24(sp)
40006a28: 00058a13 mv s4,a1
40006a2c: 01512a23 sw s5,20(sp)
int ret;
jffs2_dbg(1, "%s(): ino #%u, range 0x%08x-0x%08x\n",
__func__, f->inocache->ino, offset, offset + len);
frag = jffs2_lookup_node_frag(&f->fragtree, offset);
40006a30: 00068593 mv a1,a3
{
40006a34: 00050a93 mv s5,a0
frag = jffs2_lookup_node_frag(&f->fragtree, offset);
40006a38: 004a0513 addi a0,s4,4
{
40006a3c: 02912223 sw s1,36(sp)
40006a40: 03212023 sw s2,32(sp)
40006a44: 01312e23 sw s3,28(sp)
40006a48: 01712623 sw s7,12(sp)
40006a4c: 02112623 sw ra,44(sp)
40006a50: 02812423 sw s0,40(sp)
40006a54: 01612823 sw s6,16(sp)
40006a58: 00068493 mv s1,a3
40006a5c: 00060b93 mv s7,a2
uint32_t end = offset + len;
40006a60: 00e689b3 add s3,a3,a4
frag = jffs2_lookup_node_frag(&f->fragtree, offset);
40006a64: a1dfe0ef jal ra,40005480 <jffs2_lookup_node_frag>
/* XXX FIXME: Where a single physical node actually shows up in two
frags, we read it twice. Don't do that. */
/* Now we're pointing at the first frag which overlaps our page
* (or perhaps is before it, if we've been asked to read off the
* end of the file). */
while(offset < end) {
40006a68: 00050913 mv s2,a0
40006a6c: 0734f863 bgeu s1,s3,40006adc <jffs2_read_inode_range+0xbc>
jffs2_dbg(2, "%s(): offset %d, end %d\n",
__func__, offset, end);
if (unlikely(!frag || frag->ofs > offset ||
40006a70: 0a090063 beqz s2,40006b10 <jffs2_read_inode_range+0xf0>
40006a74: 01892783 lw a5,24(s2)
40006a78: 0af4ee63 bltu s1,a5,40006b34 <jffs2_read_inode_range+0x114>
40006a7c: 01492703 lw a4,20(s2)
40006a80: 00e787b3 add a5,a5,a4
40006a84: 08f4f663 bgeu s1,a5,40006b10 <jffs2_read_inode_range+0xf0>
offset, offset + holesize);
memset(buf, 0, holesize);
buf += holesize;
offset += holesize;
continue;
} else if (unlikely(!frag->node)) {
40006a88: 01092603 lw a2,16(s2)
40006a8c: 0c060063 beqz a2,40006b4c <jffs2_read_inode_range+0x12c> <== NEVER TAKEN
} else {
uint32_t readlen;
uint32_t fragofs; /* offset within the frag to start reading */
fragofs = offset - frag->ofs;
readlen = min(frag->size - fragofs, end - offset);
40006a90: 40978833 sub a6,a5,s1
40006a94: 40998433 sub s0,s3,s1
40006a98: 00887463 bgeu a6,s0,40006aa0 <jffs2_read_inode_range+0x80>
40006a9c: 00080413 mv s0,a6
jffs2_dbg(1, "Reading %d-%d from node at 0x%08x (%d)\n",
frag->ofs+fragofs,
frag->ofs + fragofs+readlen,
ref_offset(frag->node->raw),
ref_flags(frag->node->raw));
ret = jffs2_read_dnode(c, f, frag->node, buf, fragofs + frag->ofs - frag->node->ofs, readlen);
40006aa0: 00462703 lw a4,4(a2)
40006aa4: 00040793 mv a5,s0
40006aa8: 000b8693 mv a3,s7
40006aac: 40e48733 sub a4,s1,a4
40006ab0: 000a0593 mv a1,s4
40006ab4: 000a8513 mv a0,s5
40006ab8: a51ff0ef jal ra,40006508 <jffs2_read_dnode>
40006abc: 00050b13 mv s6,a0
jffs2_dbg(2, "node read done\n");
if (ret) {
40006ac0: 0c051663 bnez a0,40006b8c <jffs2_read_inode_range+0x16c> <== NEVER TAKEN
return _RBTree_Successor( node );
40006ac4: 00090513 mv a0,s2
40006ac8: 3590d0ef jal ra,40014620 <_RBTree_Successor>
__func__, ret);
memset(buf, 0, readlen);
return ret;
}
buf += readlen;
offset += readlen;
40006acc: 008484b3 add s1,s1,s0
buf += readlen;
40006ad0: 008b8bb3 add s7,s7,s0
40006ad4: 00050913 mv s2,a0
while(offset < end) {
40006ad8: f934ece3 bltu s1,s3,40006a70 <jffs2_read_inode_range+0x50>
frag = frag_next(frag);
jffs2_dbg(2, "node read was OK. Looping\n");
}
}
return 0;
40006adc: 00000b13 li s6,0
}
40006ae0: 02c12083 lw ra,44(sp)
40006ae4: 02812403 lw s0,40(sp)
40006ae8: 02412483 lw s1,36(sp)
40006aec: 02012903 lw s2,32(sp)
40006af0: 01c12983 lw s3,28(sp)
40006af4: 01812a03 lw s4,24(sp)
40006af8: 01412a83 lw s5,20(sp)
40006afc: 00c12b83 lw s7,12(sp)
40006b00: 000b0513 mv a0,s6
40006b04: 01012b03 lw s6,16(sp)
40006b08: 03010113 addi sp,sp,48
40006b0c: 00008067 ret
uint32_t holesize = end - offset;
40006b10: 40998433 sub s0,s3,s1
40006b14: 00098493 mv s1,s3
memset(buf, 0, holesize);
40006b18: 000b8513 mv a0,s7
40006b1c: 00040613 mv a2,s0
40006b20: 00000593 li a1,0
40006b24: 5f4150ef jal ra,4001c118 <memset>
buf += holesize;
40006b28: 008b8bb3 add s7,s7,s0
while(offset < end) {
40006b2c: f534e2e3 bltu s1,s3,40006a70 <jffs2_read_inode_range+0x50>
40006b30: fadff06f j 40006adc <jffs2_read_inode_range+0xbc>
uint32_t holesize = end - offset;
40006b34: 40998733 sub a4,s3,s1 <== NOT EXECUTED
holesize = min(holesize, frag->ofs - offset);
40006b38: 40978433 sub s0,a5,s1 <== NOT EXECUTED
40006b3c: 00877463 bgeu a4,s0,40006b44 <jffs2_read_inode_range+0x124> <== NOT EXECUTED
40006b40: 00070413 mv s0,a4 <== NOT EXECUTED
offset += holesize;
40006b44: 008484b3 add s1,s1,s0 <== NOT EXECUTED
40006b48: fd1ff06f j 40006b18 <jffs2_read_inode_range+0xf8> <== NOT EXECUTED
uint32_t holeend = min(end, frag->ofs + frag->size);
40006b4c: 00078413 mv s0,a5 <== NOT EXECUTED
40006b50: 02f9ea63 bltu s3,a5,40006b84 <jffs2_read_inode_range+0x164> <== NOT EXECUTED
memset(buf, 0, holeend - offset);
40006b54: 409404b3 sub s1,s0,s1 <== NOT EXECUTED
40006b58: 00048613 mv a2,s1 <== NOT EXECUTED
40006b5c: 00000593 li a1,0 <== NOT EXECUTED
40006b60: 000b8513 mv a0,s7 <== NOT EXECUTED
40006b64: 5b4150ef jal ra,4001c118 <memset> <== NOT EXECUTED
40006b68: 00090513 mv a0,s2 <== NOT EXECUTED
40006b6c: 2b50d0ef jal ra,40014620 <_RBTree_Successor> <== NOT EXECUTED
buf += holeend - offset;
40006b70: 009b8bb3 add s7,s7,s1 <== NOT EXECUTED
offset = holeend;
40006b74: 00040493 mv s1,s0 <== NOT EXECUTED
40006b78: 00050913 mv s2,a0 <== NOT EXECUTED
while(offset < end) {
40006b7c: ef34eae3 bltu s1,s3,40006a70 <jffs2_read_inode_range+0x50> <== NOT EXECUTED
40006b80: f5dff06f j 40006adc <jffs2_read_inode_range+0xbc> <== NOT EXECUTED
uint32_t holeend = min(end, frag->ofs + frag->size);
40006b84: 00098413 mv s0,s3 <== NOT EXECUTED
40006b88: fcdff06f j 40006b54 <jffs2_read_inode_range+0x134> <== NOT EXECUTED
memset(buf, 0, readlen);
40006b8c: 00040613 mv a2,s0 <== NOT EXECUTED
40006b90: 00000593 li a1,0 <== NOT EXECUTED
40006b94: 000b8513 mv a0,s7 <== NOT EXECUTED
40006b98: 580150ef jal ra,4001c118 <memset> <== NOT EXECUTED
return ret;
40006b9c: f45ff06f j 40006ae0 <jffs2_read_inode_range+0xc0> <== NOT EXECUTED
4000b154 <jffs2_rename>:
int jffs2_rename (struct _inode *old_dir_i, struct _inode *d_inode, const unsigned char *old_d_name, size_t old_d_namelen,
struct _inode *new_dir_i, const unsigned char *new_d_name, size_t new_d_namelen)
{
4000b154: fd010113 addi sp,sp,-48 <== NOT EXECUTED
4000b158: 02812423 sw s0,40(sp) <== NOT EXECUTED
*/
/* Make a hard link */
/* XXX: This is ugly */
type = (d_inode->i_mode & S_IFMT) >> 12;
4000b15c: 0085a403 lw s0,8(a1) <== NOT EXECUTED
{
4000b160: 02912223 sw s1,36(sp) <== NOT EXECUTED
4000b164: 03212023 sw s2,32(sp) <== NOT EXECUTED
type = (d_inode->i_mode & S_IFMT) >> 12;
4000b168: 00c45413 srli s0,s0,0xc <== NOT EXECUTED
{
4000b16c: 01412c23 sw s4,24(sp) <== NOT EXECUTED
4000b170: 01512a23 sw s5,20(sp) <== NOT EXECUTED
4000b174: 01612823 sw s6,16(sp) <== NOT EXECUTED
4000b178: 01712623 sw s7,12(sp) <== NOT EXECUTED
4000b17c: 01812423 sw s8,8(sp) <== NOT EXECUTED
4000b180: 01912223 sw s9,4(sp) <== NOT EXECUTED
4000b184: 02112623 sw ra,44(sp) <== NOT EXECUTED
4000b188: 01312e23 sw s3,28(sp) <== NOT EXECUTED
type = (d_inode->i_mode & S_IFMT) >> 12;
4000b18c: 00f47413 andi s0,s0,15 <== NOT EXECUTED
struct jffs2_sb_info *c = JFFS2_SB_INFO(old_dir_i->i_sb);
4000b190: 04052b83 lw s7,64(a0) <== NOT EXECUTED
{
4000b194: 00058493 mv s1,a1 <== NOT EXECUTED
4000b198: 00050913 mv s2,a0 <== NOT EXECUTED
4000b19c: 00060a93 mv s5,a2 <== NOT EXECUTED
4000b1a0: 00068b13 mv s6,a3 <== NOT EXECUTED
4000b1a4: 00070a13 mv s4,a4 <== NOT EXECUTED
4000b1a8: 00078c13 mv s8,a5 <== NOT EXECUTED
4000b1ac: 00080c93 mv s9,a6 <== NOT EXECUTED
if (!type) type = DT_REG;
4000b1b0: 00041463 bnez s0,4000b1b8 <jffs2_rename+0x64> <== NOT EXECUTED
4000b1b4: 00800413 li s0,8 <== NOT EXECUTED
now = get_seconds();
4000b1b8: 00000513 li a0,0 <== NOT EXECUTED
4000b1bc: 5fc110ef jal ra,4001c7b8 <time> <== NOT EXECUTED
ret = jffs2_do_link(c, JFFS2_INODE_INFO(new_dir_i),
4000b1c0: 0004a603 lw a2,0(s1) <== NOT EXECUTED
4000b1c4: 00050813 mv a6,a0 <== NOT EXECUTED
4000b1c8: 00040693 mv a3,s0 <== NOT EXECUTED
now = get_seconds();
4000b1cc: 00050993 mv s3,a0 <== NOT EXECUTED
ret = jffs2_do_link(c, JFFS2_INODE_INFO(new_dir_i),
4000b1d0: 000c8793 mv a5,s9 <== NOT EXECUTED
4000b1d4: 000c0713 mv a4,s8 <== NOT EXECUTED
4000b1d8: 048a0593 addi a1,s4,72 <== NOT EXECUTED
4000b1dc: 000b8513 mv a0,s7 <== NOT EXECUTED
4000b1e0: 93dfe0ef jal ra,40009b1c <jffs2_do_link> <== NOT EXECUTED
4000b1e4: 00050413 mv s0,a0 <== NOT EXECUTED
d_inode->i_ino, type,
(const char *)new_d_name,
new_d_namelen, now);
if (ret)
4000b1e8: 02050e63 beqz a0,4000b224 <jffs2_rename+0xd0> <== NOT EXECUTED
mutex_unlock(&f->sem);
printk(KERN_NOTICE "jffs2_rename(): Link succeeded, unlink failed (err %d). You now have a hard link\n", ret);
}
return ret;
}
4000b1ec: 02c12083 lw ra,44(sp) <== NOT EXECUTED
4000b1f0: 00040513 mv a0,s0 <== NOT EXECUTED
4000b1f4: 02812403 lw s0,40(sp) <== NOT EXECUTED
4000b1f8: 02412483 lw s1,36(sp) <== NOT EXECUTED
4000b1fc: 02012903 lw s2,32(sp) <== NOT EXECUTED
4000b200: 01c12983 lw s3,28(sp) <== NOT EXECUTED
4000b204: 01812a03 lw s4,24(sp) <== NOT EXECUTED
4000b208: 01412a83 lw s5,20(sp) <== NOT EXECUTED
4000b20c: 01012b03 lw s6,16(sp) <== NOT EXECUTED
4000b210: 00c12b83 lw s7,12(sp) <== NOT EXECUTED
4000b214: 00812c03 lw s8,8(sp) <== NOT EXECUTED
4000b218: 00412c83 lw s9,4(sp) <== NOT EXECUTED
4000b21c: 03010113 addi sp,sp,48 <== NOT EXECUTED
4000b220: 00008067 ret <== NOT EXECUTED
ret = jffs2_do_unlink(c, JFFS2_INODE_INFO(old_dir_i),
4000b224: 00098793 mv a5,s3 <== NOT EXECUTED
4000b228: 00000713 li a4,0 <== NOT EXECUTED
4000b22c: 000b0693 mv a3,s6 <== NOT EXECUTED
4000b230: 000a8613 mv a2,s5 <== NOT EXECUTED
4000b234: 04890593 addi a1,s2,72 <== NOT EXECUTED
4000b238: 000b8513 mv a0,s7 <== NOT EXECUTED
4000b23c: f6cfe0ef jal ra,400099a8 <jffs2_do_unlink> <== NOT EXECUTED
4000b240: 00050413 mv s0,a0 <== NOT EXECUTED
if (ret) {
4000b244: fa0504e3 beqz a0,4000b1ec <jffs2_rename+0x98> <== NOT EXECUTED
if (f->inocache)
4000b248: 05c4a783 lw a5,92(s1) <== NOT EXECUTED
4000b24c: 00078a63 beqz a5,4000b260 <jffs2_rename+0x10c> <== NOT EXECUTED
d_inode->i_nlink = f->inocache->pino_nlink++;
4000b250: 0147a703 lw a4,20(a5) <== NOT EXECUTED
4000b254: 00170693 addi a3,a4,1 # a001 <bsp_section_rodata_size+0x4f2d> <== NOT EXECUTED
4000b258: 00d7aa23 sw a3,20(a5) <== NOT EXECUTED
4000b25c: 00e49623 sh a4,12(s1) <== NOT EXECUTED
printk(KERN_NOTICE "jffs2_rename(): Link succeeded, unlink failed (err %d). You now have a hard link\n", ret);
4000b260: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000b264: 00040593 mv a1,s0 <== NOT EXECUTED
4000b268: 8d050513 addi a0,a0,-1840 # 4001f8d0 <__func__.0+0x74> <== NOT EXECUTED
4000b26c: d48ff0ef jal ra,4000a7b4 <jffs2_printk> <== NOT EXECUTED
4000b270: f7dff06f j 4000b1ec <jffs2_rename+0x98> <== NOT EXECUTED
400062a0 <jffs2_reserve_space>:
{
400062a0: fe010113 addi sp,sp,-32
400062a4: 00812c23 sw s0,24(sp)
400062a8: 01412423 sw s4,8(sp)
400062ac: 01512223 sw s5,4(sp)
400062b0: 00112e23 sw ra,28(sp)
400062b4: 00912a23 sw s1,20(sp)
400062b8: 01212823 sw s2,16(sp)
400062bc: 01312623 sw s3,12(sp)
400062c0: 01612023 sw s6,0(sp)
if (prio != ALLOC_DELETION && !jffs2_rp_can_write(c)) {
400062c4: 00100793 li a5,1
c->erasing_size - c->resv_blocks_write * c->sector_size
400062c8: 04454483 lbu s1,68(a0)
{
400062cc: 00050413 mv s0,a0
400062d0: 00068a93 mv s5,a3
400062d4: 00060a13 mv s4,a2
if (prio != ALLOC_DELETION && !jffs2_rp_can_write(c)) {
400062d8: 06f68463 beq a3,a5,40006340 <jffs2_reserve_space+0xa0>
c->erasing_size - c->resv_blocks_write * c->sector_size
400062dc: 03452703 lw a4,52(a0)
avail = c->dirty_size + c->free_size + c->unchecked_size +
400062e0: 02052783 lw a5,32(a0)
400062e4: 02852803 lw a6,40(a0)
c->erasing_size - c->resv_blocks_write * c->sector_size
400062e8: 02e48733 mul a4,s1,a4
avail = c->dirty_size + c->free_size + c->unchecked_size +
400062ec: 03852503 lw a0,56(a0)
400062f0: 02c42683 lw a3,44(s0)
400062f4: 04c42603 lw a2,76(s0)
400062f8: 010787b3 add a5,a5,a6
400062fc: 00a787b3 add a5,a5,a0
40006300: 00d787b3 add a5,a5,a3
if (avail > opts->rp_size)
40006304: 0d842683 lw a3,216(s0)
avail = c->dirty_size + c->free_size + c->unchecked_size +
40006308: 40c787b3 sub a5,a5,a2
4000630c: 40e787b3 sub a5,a5,a4
if (avail > opts->rp_size)
40006310: 02f6e863 bltu a3,a5,40006340 <jffs2_reserve_space+0xa0>
ret = -ENOSPC;
40006314: fe400513 li a0,-28
}
40006318: 01c12083 lw ra,28(sp)
4000631c: 01812403 lw s0,24(sp)
40006320: 01412483 lw s1,20(sp)
40006324: 01012903 lw s2,16(sp)
40006328: 00c12983 lw s3,12(sp)
4000632c: 00812a03 lw s4,8(sp)
40006330: 00412a83 lw s5,4(sp)
40006334: 00012b03 lw s6,0(sp)
40006338: 02010113 addi sp,sp,32
4000633c: 00008067 ret
minsize = PAD(minsize);
40006340: 00358593 addi a1,a1,3
40006344: ffc5f993 andi s3,a1,-4
while(ret == -EAGAIN) {
40006348: ff500913 li s2,-11
if (prio == ALLOC_DELETION && c->nr_free_blocks + c->nr_erasing_blocks >= c->resv_blocks_deletion) {
4000634c: 00100b13 li s6,1
while(c->nr_free_blocks + c->nr_erasing_blocks < blocksneeded) {
40006350: 04042703 lw a4,64(s0)
40006354: 03c42683 lw a3,60(s0)
ret = jffs2_garbage_collect_pass(c);
40006358: 00040513 mv a0,s0
while(c->nr_free_blocks + c->nr_erasing_blocks < blocksneeded) {
4000635c: 00d706b3 add a3,a4,a3
40006360: 0496fe63 bgeu a3,s1,400063bc <jffs2_reserve_space+0x11c>
dirty = c->dirty_size + c->erasing_size - c->nr_erasing_blocks * c->sector_size + c->unchecked_size;
40006364: 03442603 lw a2,52(s0)
40006368: 02c42583 lw a1,44(s0)
4000636c: 02042783 lw a5,32(s0)
40006370: 02e60733 mul a4,a2,a4
40006374: 03842803 lw a6,56(s0)
40006378: 00b787b3 add a5,a5,a1
if (dirty < c->nospc_dirty_size) {
4000637c: 04c42583 lw a1,76(s0)
40006380: 010787b3 add a5,a5,a6
dirty = c->dirty_size + c->erasing_size - c->nr_erasing_blocks * c->sector_size + c->unchecked_size;
40006384: 40e78733 sub a4,a5,a4
if (dirty < c->nospc_dirty_size) {
40006388: 08b76063 bltu a4,a1,40006408 <jffs2_reserve_space+0x168>
avail = c->free_size + c->dirty_size + c->erasing_size + c->unchecked_size;
4000638c: 02842703 lw a4,40(s0)
40006390: 00e787b3 add a5,a5,a4
if ( (avail / c->sector_size) <= blocksneeded) {
40006394: 02c7d7b3 divu a5,a5,a2
40006398: 06f4f863 bgeu s1,a5,40006408 <jffs2_reserve_space+0x168>
ret = jffs2_garbage_collect_pass(c);
4000639c: 9c8fd0ef jal ra,40003564 <jffs2_garbage_collect_pass>
if (ret == -EAGAIN) {
400063a0: fb2508e3 beq a0,s2,40006350 <jffs2_reserve_space+0xb0>
} else if (ret)
400063a4: f6051ae3 bnez a0,40006318 <jffs2_reserve_space+0x78> <== NEVER TAKEN
while(c->nr_free_blocks + c->nr_erasing_blocks < blocksneeded) {
400063a8: 04042703 lw a4,64(s0)
400063ac: 03c42683 lw a3,60(s0)
ret = jffs2_garbage_collect_pass(c);
400063b0: 00040513 mv a0,s0
while(c->nr_free_blocks + c->nr_erasing_blocks < blocksneeded) {
400063b4: 00d706b3 add a3,a4,a3
400063b8: fa96e6e3 bltu a3,s1,40006364 <jffs2_reserve_space+0xc4>
ret = jffs2_do_reserve_space(c, minsize, len, sumsize);
400063bc: 000a0613 mv a2,s4
400063c0: 00098593 mv a1,s3
400063c4: 00040513 mv a0,s0
400063c8: b29ff0ef jal ra,40005ef0 <jffs2_do_reserve_space.constprop.0>
while(ret == -EAGAIN) {
400063cc: f92502e3 beq a0,s2,40006350 <jffs2_reserve_space+0xb0>
if (!ret)
400063d0: f40514e3 bnez a0,40006318 <jffs2_reserve_space+0x78> <== NEVER TAKEN
ret = jffs2_prealloc_raw_node_refs(c, c->nextblock, 1);
400063d4: 05842583 lw a1,88(s0)
400063d8: 00040513 mv a0,s0
}
400063dc: 01812403 lw s0,24(sp)
400063e0: 01c12083 lw ra,28(sp)
400063e4: 01412483 lw s1,20(sp)
400063e8: 01012903 lw s2,16(sp)
400063ec: 00c12983 lw s3,12(sp)
400063f0: 00812a03 lw s4,8(sp)
400063f4: 00412a83 lw s5,4(sp)
400063f8: 00012b03 lw s6,0(sp)
ret = jffs2_prealloc_raw_node_refs(c, c->nextblock, 1);
400063fc: 00100613 li a2,1
}
40006400: 02010113 addi sp,sp,32
ret = jffs2_prealloc_raw_node_refs(c, c->nextblock, 1);
40006404: ca8fe06f j 400048ac <jffs2_prealloc_raw_node_refs>
if (prio == ALLOC_DELETION && c->nr_free_blocks + c->nr_erasing_blocks >= c->resv_blocks_deletion) {
40006408: f16a96e3 bne s5,s6,40006314 <jffs2_reserve_space+0x74>
4000640c: 04544783 lbu a5,69(s0) <== NOT EXECUTED
40006410: f0f6e2e3 bltu a3,a5,40006314 <jffs2_reserve_space+0x74> <== NOT EXECUTED
ret = jffs2_do_reserve_space(c, minsize, len, sumsize);
40006414: 000a0613 mv a2,s4 <== NOT EXECUTED
40006418: 00098593 mv a1,s3 <== NOT EXECUTED
4000641c: 00040513 mv a0,s0 <== NOT EXECUTED
40006420: ad1ff0ef jal ra,40005ef0 <jffs2_do_reserve_space.constprop.0> <== NOT EXECUTED
while(ret == -EAGAIN) {
40006424: f32506e3 beq a0,s2,40006350 <jffs2_reserve_space+0xb0> <== NOT EXECUTED
40006428: fa9ff06f j 400063d0 <jffs2_reserve_space+0x130> <== NOT EXECUTED
40006218 <jffs2_reserve_space_gc>:
{
40006218: fe010113 addi sp,sp,-32
minsize = PAD(minsize);
4000621c: 00358593 addi a1,a1,3
{
40006220: 00812c23 sw s0,24(sp)
40006224: 00912a23 sw s1,20(sp)
40006228: 01212823 sw s2,16(sp)
4000622c: 01312623 sw s3,12(sp)
40006230: 00112e23 sw ra,28(sp)
40006234: 00050493 mv s1,a0
40006238: 00060913 mv s2,a2
minsize = PAD(minsize);
4000623c: ffc5f413 andi s0,a1,-4
if (ret == -EAGAIN)
40006240: ff500993 li s3,-11
ret = jffs2_do_reserve_space(c, minsize, len, sumsize);
40006244: 00090613 mv a2,s2
40006248: 00040593 mv a1,s0
4000624c: 00048513 mv a0,s1
40006250: ca1ff0ef jal ra,40005ef0 <jffs2_do_reserve_space.constprop.0>
if (ret == -EAGAIN)
40006254: ff3508e3 beq a0,s3,40006244 <jffs2_reserve_space_gc+0x2c>
if (!ret)
40006258: 02050063 beqz a0,40006278 <jffs2_reserve_space_gc+0x60> <== ALWAYS TAKEN
}
4000625c: 01c12083 lw ra,28(sp) <== NOT EXECUTED
40006260: 01812403 lw s0,24(sp) <== NOT EXECUTED
40006264: 01412483 lw s1,20(sp) <== NOT EXECUTED
40006268: 01012903 lw s2,16(sp) <== NOT EXECUTED
4000626c: 00c12983 lw s3,12(sp) <== NOT EXECUTED
40006270: 02010113 addi sp,sp,32 <== NOT EXECUTED
40006274: 00008067 ret <== NOT EXECUTED
40006278: 01812403 lw s0,24(sp)
ret = jffs2_prealloc_raw_node_refs(c, c->nextblock, 1);
4000627c: 0584a583 lw a1,88(s1)
}
40006280: 01c12083 lw ra,28(sp)
40006284: 01012903 lw s2,16(sp)
40006288: 00c12983 lw s3,12(sp)
ret = jffs2_prealloc_raw_node_refs(c, c->nextblock, 1);
4000628c: 00048513 mv a0,s1
}
40006290: 01412483 lw s1,20(sp)
ret = jffs2_prealloc_raw_node_refs(c, c->nextblock, 1);
40006294: 00100613 li a2,1
}
40006298: 02010113 addi sp,sp,32
ret = jffs2_prealloc_raw_node_refs(c, c->nextblock, 1);
4000629c: e10fe06f j 400048ac <jffs2_prealloc_raw_node_refs>
4000b090 <jffs2_rmdir>:
int jffs2_rmdir (struct _inode *dir_i, struct _inode *d_inode, const unsigned char *d_name, size_t d_namelen)
{
struct jffs2_inode_info *f = JFFS2_INODE_INFO(d_inode);
struct jffs2_full_dirent *fd;
for (fd = f->dents ; fd; fd = fd->next) {
4000b090: 0545a783 lw a5,84(a1)
{
4000b094: fe010113 addi sp,sp,-32
4000b098: 00812c23 sw s0,24(sp)
4000b09c: 00912a23 sw s1,20(sp)
4000b0a0: 01212823 sw s2,16(sp)
4000b0a4: 01312623 sw s3,12(sp)
4000b0a8: 00112e23 sw ra,28(sp)
4000b0ac: 01412423 sw s4,8(sp)
4000b0b0: 00058413 mv s0,a1
4000b0b4: 00050493 mv s1,a0
4000b0b8: 00060913 mv s2,a2
4000b0bc: 00068993 mv s3,a3
for (fd = f->dents ; fd; fd = fd->next) {
4000b0c0: 00079863 bnez a5,4000b0d0 <jffs2_rmdir+0x40>
4000b0c4: 0380006f j 4000b0fc <jffs2_rmdir+0x6c>
4000b0c8: 0047a783 lw a5,4(a5) <== NOT EXECUTED
4000b0cc: 02078863 beqz a5,4000b0fc <jffs2_rmdir+0x6c> <== NOT EXECUTED
if (fd->ino)
4000b0d0: 00c7a703 lw a4,12(a5)
4000b0d4: fe070ae3 beqz a4,4000b0c8 <jffs2_rmdir+0x38> <== NEVER TAKEN
return -ENOTEMPTY;
4000b0d8: fa600513 li a0,-90
}
return jffs2_unlink(dir_i, d_inode, d_name, d_namelen);
}
4000b0dc: 01c12083 lw ra,28(sp)
4000b0e0: 01812403 lw s0,24(sp)
4000b0e4: 01412483 lw s1,20(sp)
4000b0e8: 01012903 lw s2,16(sp)
4000b0ec: 00c12983 lw s3,12(sp)
4000b0f0: 00812a03 lw s4,8(sp)
4000b0f4: 02010113 addi sp,sp,32
4000b0f8: 00008067 ret
struct jffs2_sb_info *c = JFFS2_SB_INFO(dir_i->i_sb);
4000b0fc: 0404aa03 lw s4,64(s1)
d_namelen, dead_f, get_seconds());
4000b100: 00000513 li a0,0
4000b104: 6b4110ef jal ra,4001c7b8 <time>
4000b108: 00050793 mv a5,a0
ret = jffs2_do_unlink(c, dir_f, (const char *)d_name,
4000b10c: 04840713 addi a4,s0,72
4000b110: 00098693 mv a3,s3
4000b114: 00090613 mv a2,s2
4000b118: 04848593 addi a1,s1,72
4000b11c: 000a0513 mv a0,s4
4000b120: 889fe0ef jal ra,400099a8 <jffs2_do_unlink>
if (dead_f->inocache)
4000b124: 05c42783 lw a5,92(s0)
4000b128: fa078ae3 beqz a5,4000b0dc <jffs2_rmdir+0x4c> <== NEVER TAKEN
d_inode->i_nlink = dead_f->inocache->pino_nlink;
4000b12c: 0147a783 lw a5,20(a5)
}
4000b130: 01c12083 lw ra,28(sp)
4000b134: 01412483 lw s1,20(sp)
d_inode->i_nlink = dead_f->inocache->pino_nlink;
4000b138: 00f41623 sh a5,12(s0)
}
4000b13c: 01812403 lw s0,24(sp)
4000b140: 01012903 lw s2,16(sp)
4000b144: 00c12983 lw s3,12(sp)
4000b148: 00812a03 lw s4,8(sp)
4000b14c: 02010113 addi sp,sp,32
4000b150: 00008067 ret
4000cf34 <jffs2_rotate_lists>:
static int count_list(struct list_head *l)
{
uint32_t count = 0;
struct list_head *tmp;
list_for_each(tmp, l) {
4000cf34: 06052603 lw a2,96(a0)
void jffs2_rotate_lists(struct jffs2_sb_info *c)
{
uint32_t x;
uint32_t rotateby;
x = count_list(&c->clean_list);
4000cf38: 06050693 addi a3,a0,96
list_for_each(tmp, l) {
4000cf3c: 00c68e63 beq a3,a2,4000cf58 <jffs2_rotate_lists+0x24>
4000cf40: 00060793 mv a5,a2 <== NOT EXECUTED
uint32_t count = 0;
4000cf44: 00000713 li a4,0 <== NOT EXECUTED
list_for_each(tmp, l) {
4000cf48: 0007a783 lw a5,0(a5) <== NOT EXECUTED
count++;
4000cf4c: 00170713 addi a4,a4,1 <== NOT EXECUTED
list_for_each(tmp, l) {
4000cf50: fef69ce3 bne a3,a5,4000cf48 <jffs2_rotate_lists+0x14> <== NOT EXECUTED
if (x) {
4000cf54: 1e071463 bnez a4,4000d13c <jffs2_rotate_lists+0x208> <== NOT EXECUTED
list_for_each(tmp, l) {
4000cf58: 06852603 lw a2,104(a0)
rotateby = pseudo_random % x;
rotate_list((&c->clean_list), rotateby);
}
x = count_list(&c->very_dirty_list);
4000cf5c: 06850693 addi a3,a0,104
list_for_each(tmp, l) {
4000cf60: 00c68e63 beq a3,a2,4000cf7c <jffs2_rotate_lists+0x48>
4000cf64: 00060793 mv a5,a2 <== NOT EXECUTED
uint32_t count = 0;
4000cf68: 00000713 li a4,0 <== NOT EXECUTED
list_for_each(tmp, l) {
4000cf6c: 0007a783 lw a5,0(a5) <== NOT EXECUTED
count++;
4000cf70: 00170713 addi a4,a4,1 <== NOT EXECUTED
list_for_each(tmp, l) {
4000cf74: fef69ce3 bne a3,a5,4000cf6c <jffs2_rotate_lists+0x38> <== NOT EXECUTED
if (x) {
4000cf78: 18071063 bnez a4,4000d0f8 <jffs2_rotate_lists+0x1c4> <== NOT EXECUTED
list_for_each(tmp, l) {
4000cf7c: 07052603 lw a2,112(a0)
rotateby = pseudo_random % x;
rotate_list((&c->very_dirty_list), rotateby);
}
x = count_list(&c->dirty_list);
4000cf80: 07050693 addi a3,a0,112
list_for_each(tmp, l) {
4000cf84: 00c68e63 beq a3,a2,4000cfa0 <jffs2_rotate_lists+0x6c>
4000cf88: 00060793 mv a5,a2 <== NOT EXECUTED
uint32_t count = 0;
4000cf8c: 00000713 li a4,0 <== NOT EXECUTED
list_for_each(tmp, l) {
4000cf90: 0007a783 lw a5,0(a5) <== NOT EXECUTED
count++;
4000cf94: 00170713 addi a4,a4,1 <== NOT EXECUTED
list_for_each(tmp, l) {
4000cf98: fef69ce3 bne a3,a5,4000cf90 <jffs2_rotate_lists+0x5c> <== NOT EXECUTED
if (x) {
4000cf9c: 10071c63 bnez a4,4000d0b4 <jffs2_rotate_lists+0x180> <== NOT EXECUTED
list_for_each(tmp, l) {
4000cfa0: 07852603 lw a2,120(a0)
rotateby = pseudo_random % x;
rotate_list((&c->dirty_list), rotateby);
}
x = count_list(&c->erasable_list);
4000cfa4: 07850693 addi a3,a0,120
list_for_each(tmp, l) {
4000cfa8: 00c68e63 beq a3,a2,4000cfc4 <jffs2_rotate_lists+0x90>
4000cfac: 00060793 mv a5,a2 <== NOT EXECUTED
uint32_t count = 0;
4000cfb0: 00000713 li a4,0 <== NOT EXECUTED
list_for_each(tmp, l) {
4000cfb4: 0007a783 lw a5,0(a5) <== NOT EXECUTED
count++;
4000cfb8: 00170713 addi a4,a4,1 <== NOT EXECUTED
list_for_each(tmp, l) {
4000cfbc: fef69ce3 bne a3,a5,4000cfb4 <jffs2_rotate_lists+0x80> <== NOT EXECUTED
if (x) {
4000cfc0: 0a071863 bnez a4,4000d070 <jffs2_rotate_lists+0x13c> <== NOT EXECUTED
rotateby = pseudo_random % x;
rotate_list((&c->erasable_list), rotateby);
}
if (c->nr_erasing_blocks) {
4000cfc4: 04052783 lw a5,64(a0)
4000cfc8: 04079e63 bnez a5,4000d024 <jffs2_rotate_lists+0xf0> <== ALWAYS TAKEN
rotateby = pseudo_random % c->nr_erasing_blocks;
rotate_list((&c->erase_pending_list), rotateby);
}
if (c->nr_free_blocks) {
4000cfcc: 03c52783 lw a5,60(a0)
4000cfd0: 00079463 bnez a5,4000cfd8 <jffs2_rotate_lists+0xa4> <== NEVER TAKEN
rotateby = pseudo_random % c->nr_free_blocks;
rotate_list((&c->free_list), rotateby);
}
}
4000cfd4: 00008067 ret
rotateby = pseudo_random % c->nr_free_blocks;
4000cfd8: 8bc1a683 lw a3,-1860(gp) # 40042f94 <pseudo_random> <== NOT EXECUTED
ent->prev->next = ent->next;
4000cfdc: 0ac52583 lw a1,172(a0) <== NOT EXECUTED
struct list_head *n = head->next;
4000cfe0: 0a852703 lw a4,168(a0) <== NOT EXECUTED
rotateby = pseudo_random % c->nr_free_blocks;
4000cfe4: 02f6f6b3 remu a3,a3,a5 <== NOT EXECUTED
rotate_list((&c->free_list), rotateby);
4000cfe8: 0a850613 addi a2,a0,168 <== NOT EXECUTED
4000cfec: 00e5a023 sw a4,0(a1) # 4000 <bsp_section_bss_size+0x1568> <== NOT EXECUTED
ent->next->prev = ent->prev;
4000cff0: 00b72223 sw a1,4(a4) <== NOT EXECUTED
while(count--) {
4000cff4: fff68793 addi a5,a3,-1 <== NOT EXECUTED
4000cff8: 00068a63 beqz a3,4000d00c <jffs2_rotate_lists+0xd8> <== NOT EXECUTED
4000cffc: fff00693 li a3,-1 <== NOT EXECUTED
4000d000: fff78793 addi a5,a5,-1 <== NOT EXECUTED
n = n->next;
4000d004: 00072703 lw a4,0(a4) <== NOT EXECUTED
while(count--) {
4000d008: fed79ce3 bne a5,a3,4000d000 <jffs2_rotate_lists+0xcc> <== NOT EXECUTED
struct list_head *next = afterthisent->next;
4000d00c: 00072783 lw a5,0(a4) <== NOT EXECUTED
newent->prev = afterthisent;
4000d010: 0ae52623 sw a4,172(a0) <== NOT EXECUTED
newent->next = next;
4000d014: 0af52423 sw a5,168(a0) <== NOT EXECUTED
afterthisent->next = newent;
4000d018: 00c72023 sw a2,0(a4) <== NOT EXECUTED
next->prev = newent;
4000d01c: 00c7a223 sw a2,4(a5) <== NOT EXECUTED
}
4000d020: 00008067 ret <== NOT EXECUTED
rotateby = pseudo_random % c->nr_erasing_blocks;
4000d024: 8bc1a683 lw a3,-1860(gp) # 40042f94 <pseudo_random>
ent->prev->next = ent->next;
4000d028: 09c52583 lw a1,156(a0)
struct list_head *n = head->next;
4000d02c: 09852703 lw a4,152(a0)
rotateby = pseudo_random % c->nr_erasing_blocks;
4000d030: 02f6f6b3 remu a3,a3,a5
rotate_list((&c->erase_pending_list), rotateby);
4000d034: 09850613 addi a2,a0,152
4000d038: 00e5a023 sw a4,0(a1)
ent->next->prev = ent->prev;
4000d03c: 00b72223 sw a1,4(a4)
while(count--) {
4000d040: fff68793 addi a5,a3,-1
4000d044: 00068a63 beqz a3,4000d058 <jffs2_rotate_lists+0x124> <== ALWAYS TAKEN
4000d048: fff00693 li a3,-1 <== NOT EXECUTED
4000d04c: fff78793 addi a5,a5,-1 <== NOT EXECUTED
n = n->next;
4000d050: 00072703 lw a4,0(a4) <== NOT EXECUTED
while(count--) {
4000d054: fed79ce3 bne a5,a3,4000d04c <jffs2_rotate_lists+0x118> <== NOT EXECUTED
struct list_head *next = afterthisent->next;
4000d058: 00072783 lw a5,0(a4)
newent->prev = afterthisent;
4000d05c: 08e52e23 sw a4,156(a0)
newent->next = next;
4000d060: 08f52c23 sw a5,152(a0)
afterthisent->next = newent;
4000d064: 00c72023 sw a2,0(a4)
next->prev = newent;
4000d068: 00c7a223 sw a2,4(a5)
}
4000d06c: f61ff06f j 4000cfcc <jffs2_rotate_lists+0x98>
rotateby = pseudo_random % x;
4000d070: 8bc1a683 lw a3,-1860(gp) # 40042f94 <pseudo_random> <== NOT EXECUTED
ent->prev->next = ent->next;
4000d074: 07c52583 lw a1,124(a0) <== NOT EXECUTED
4000d078: 02e6f733 remu a4,a3,a4 <== NOT EXECUTED
4000d07c: 00c5a023 sw a2,0(a1) <== NOT EXECUTED
ent->next->prev = ent->prev;
4000d080: 00b62223 sw a1,4(a2) <== NOT EXECUTED
while(count--) {
4000d084: fff70693 addi a3,a4,-1 <== NOT EXECUTED
4000d088: 00070a63 beqz a4,4000d09c <jffs2_rotate_lists+0x168> <== NOT EXECUTED
4000d08c: fff00713 li a4,-1 <== NOT EXECUTED
4000d090: fff68693 addi a3,a3,-1 <== NOT EXECUTED
n = n->next;
4000d094: 00062603 lw a2,0(a2) <== NOT EXECUTED
while(count--) {
4000d098: fee69ce3 bne a3,a4,4000d090 <jffs2_rotate_lists+0x15c> <== NOT EXECUTED
struct list_head *next = afterthisent->next;
4000d09c: 00062703 lw a4,0(a2) <== NOT EXECUTED
newent->prev = afterthisent;
4000d0a0: 06c52e23 sw a2,124(a0) <== NOT EXECUTED
newent->next = next;
4000d0a4: 06e52c23 sw a4,120(a0) <== NOT EXECUTED
afterthisent->next = newent;
4000d0a8: 00f62023 sw a5,0(a2) <== NOT EXECUTED
next->prev = newent;
4000d0ac: 00f72223 sw a5,4(a4) <== NOT EXECUTED
}
4000d0b0: f15ff06f j 4000cfc4 <jffs2_rotate_lists+0x90> <== NOT EXECUTED
rotateby = pseudo_random % x;
4000d0b4: 8bc1a683 lw a3,-1860(gp) # 40042f94 <pseudo_random> <== NOT EXECUTED
ent->prev->next = ent->next;
4000d0b8: 07452583 lw a1,116(a0) <== NOT EXECUTED
4000d0bc: 02e6f733 remu a4,a3,a4 <== NOT EXECUTED
4000d0c0: 00c5a023 sw a2,0(a1) <== NOT EXECUTED
ent->next->prev = ent->prev;
4000d0c4: 00b62223 sw a1,4(a2) <== NOT EXECUTED
while(count--) {
4000d0c8: fff70693 addi a3,a4,-1 <== NOT EXECUTED
4000d0cc: 00070a63 beqz a4,4000d0e0 <jffs2_rotate_lists+0x1ac> <== NOT EXECUTED
4000d0d0: fff00713 li a4,-1 <== NOT EXECUTED
4000d0d4: fff68693 addi a3,a3,-1 <== NOT EXECUTED
n = n->next;
4000d0d8: 00062603 lw a2,0(a2) <== NOT EXECUTED
while(count--) {
4000d0dc: fee69ce3 bne a3,a4,4000d0d4 <jffs2_rotate_lists+0x1a0> <== NOT EXECUTED
struct list_head *next = afterthisent->next;
4000d0e0: 00062703 lw a4,0(a2) <== NOT EXECUTED
newent->prev = afterthisent;
4000d0e4: 06c52a23 sw a2,116(a0) <== NOT EXECUTED
newent->next = next;
4000d0e8: 06e52823 sw a4,112(a0) <== NOT EXECUTED
afterthisent->next = newent;
4000d0ec: 00f62023 sw a5,0(a2) <== NOT EXECUTED
next->prev = newent;
4000d0f0: 00f72223 sw a5,4(a4) <== NOT EXECUTED
}
4000d0f4: eadff06f j 4000cfa0 <jffs2_rotate_lists+0x6c> <== NOT EXECUTED
rotateby = pseudo_random % x;
4000d0f8: 8bc1a683 lw a3,-1860(gp) # 40042f94 <pseudo_random> <== NOT EXECUTED
ent->prev->next = ent->next;
4000d0fc: 06c52583 lw a1,108(a0) <== NOT EXECUTED
4000d100: 02e6f733 remu a4,a3,a4 <== NOT EXECUTED
4000d104: 00c5a023 sw a2,0(a1) <== NOT EXECUTED
ent->next->prev = ent->prev;
4000d108: 00b62223 sw a1,4(a2) <== NOT EXECUTED
while(count--) {
4000d10c: fff70693 addi a3,a4,-1 <== NOT EXECUTED
4000d110: 00070a63 beqz a4,4000d124 <jffs2_rotate_lists+0x1f0> <== NOT EXECUTED
4000d114: fff00713 li a4,-1 <== NOT EXECUTED
4000d118: fff68693 addi a3,a3,-1 <== NOT EXECUTED
n = n->next;
4000d11c: 00062603 lw a2,0(a2) <== NOT EXECUTED
while(count--) {
4000d120: fee69ce3 bne a3,a4,4000d118 <jffs2_rotate_lists+0x1e4> <== NOT EXECUTED
struct list_head *next = afterthisent->next;
4000d124: 00062703 lw a4,0(a2) <== NOT EXECUTED
newent->prev = afterthisent;
4000d128: 06c52623 sw a2,108(a0) <== NOT EXECUTED
newent->next = next;
4000d12c: 06e52423 sw a4,104(a0) <== NOT EXECUTED
afterthisent->next = newent;
4000d130: 00f62023 sw a5,0(a2) <== NOT EXECUTED
next->prev = newent;
4000d134: 00f72223 sw a5,4(a4) <== NOT EXECUTED
}
4000d138: e45ff06f j 4000cf7c <jffs2_rotate_lists+0x48> <== NOT EXECUTED
rotateby = pseudo_random % x;
4000d13c: 8bc1a683 lw a3,-1860(gp) # 40042f94 <pseudo_random> <== NOT EXECUTED
ent->prev->next = ent->next;
4000d140: 06452583 lw a1,100(a0) <== NOT EXECUTED
4000d144: 02e6f733 remu a4,a3,a4 <== NOT EXECUTED
4000d148: 00c5a023 sw a2,0(a1) <== NOT EXECUTED
ent->next->prev = ent->prev;
4000d14c: 00b62223 sw a1,4(a2) <== NOT EXECUTED
while(count--) {
4000d150: fff70693 addi a3,a4,-1 <== NOT EXECUTED
4000d154: 00070a63 beqz a4,4000d168 <jffs2_rotate_lists+0x234> <== NOT EXECUTED
4000d158: fff00713 li a4,-1 <== NOT EXECUTED
4000d15c: fff68693 addi a3,a3,-1 <== NOT EXECUTED
n = n->next;
4000d160: 00062603 lw a2,0(a2) <== NOT EXECUTED
while(count--) {
4000d164: fee69ce3 bne a3,a4,4000d15c <jffs2_rotate_lists+0x228> <== NOT EXECUTED
struct list_head *next = afterthisent->next;
4000d168: 00062703 lw a4,0(a2) <== NOT EXECUTED
newent->prev = afterthisent;
4000d16c: 06c52223 sw a2,100(a0) <== NOT EXECUTED
newent->next = next;
4000d170: 06e52023 sw a4,96(a0) <== NOT EXECUTED
afterthisent->next = newent;
4000d174: 00f62023 sw a5,0(a2) <== NOT EXECUTED
next->prev = newent;
4000d178: 00f72223 sw a5,4(a4) <== NOT EXECUTED
}
4000d17c: dddff06f j 4000cf58 <jffs2_rotate_lists+0x24> <== NOT EXECUTED
4000bd08 <jffs2_scan_classify_jeb>:
return 0;
}
int jffs2_scan_classify_jeb(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb)
{
if ((jeb->used_size + jeb->unchecked_size) == PAD(c->cleanmarker_size) && !jeb->dirty_size
4000bd08: 01452703 lw a4,20(a0) <== NOT EXECUTED
4000bd0c: 0145a783 lw a5,20(a1) <== NOT EXECUTED
4000bd10: 0105a683 lw a3,16(a1) <== NOT EXECUTED
4000bd14: 00370713 addi a4,a4,3 <== NOT EXECUTED
4000bd18: ffc77713 andi a4,a4,-4 <== NOT EXECUTED
4000bd1c: 00d786b3 add a3,a5,a3 <== NOT EXECUTED
4000bd20: 02e68663 beq a3,a4,4000bd4c <jffs2_scan_classify_jeb+0x44> <== NOT EXECUTED
&& (!jeb->first_node || !ref_next(jeb->first_node)) )
return BLK_STATE_CLEANMARKER;
/* move blocks with max 4 byte dirty space to cleanlist */
else if (!ISDIRTY(c->sector_size - (jeb->used_size + jeb->unchecked_size))) {
4000bd24: 03452703 lw a4,52(a0) <== NOT EXECUTED
4000bd28: 0c400613 li a2,196 <== NOT EXECUTED
4000bd2c: 40d70733 sub a4,a4,a3 <== NOT EXECUTED
4000bd30: 04e67463 bgeu a2,a4,4000bd78 <jffs2_scan_classify_jeb+0x70> <== NOT EXECUTED
c->dirty_size -= jeb->dirty_size;
c->wasted_size += jeb->dirty_size;
jeb->wasted_size += jeb->dirty_size;
jeb->dirty_size = 0;
return BLK_STATE_CLEAN;
} else if (jeb->used_size || jeb->unchecked_size)
4000bd34: 00d7e533 or a0,a5,a3 <== NOT EXECUTED
return BLK_STATE_PARTDIRTY;
else
return BLK_STATE_ALLDIRTY;
4000bd38: 00a03533 snez a0,a0 <== NOT EXECUTED
4000bd3c: 40a00533 neg a0,a0 <== NOT EXECUTED
4000bd40: ffe57513 andi a0,a0,-2 <== NOT EXECUTED
4000bd44: 00450513 addi a0,a0,4 <== NOT EXECUTED
4000bd48: 00008067 ret <== NOT EXECUTED
if ((jeb->used_size + jeb->unchecked_size) == PAD(c->cleanmarker_size) && !jeb->dirty_size
4000bd4c: 0185a703 lw a4,24(a1) <== NOT EXECUTED
4000bd50: fc071ae3 bnez a4,4000bd24 <jffs2_scan_classify_jeb+0x1c> <== NOT EXECUTED
&& (!jeb->first_node || !ref_next(jeb->first_node)) )
4000bd54: 0285a703 lw a4,40(a1) <== NOT EXECUTED
4000bd58: 00070c63 beqz a4,4000bd70 <jffs2_scan_classify_jeb+0x68> <== NOT EXECUTED
if (ref->flash_offset == REF_LINK_NODE) {
4000bd5c: 00c72603 lw a2,12(a4) <== NOT EXECUTED
4000bd60: fff00813 li a6,-1 <== NOT EXECUTED
4000bd64: 05060463 beq a2,a6,4000bdac <jffs2_scan_classify_jeb+0xa4> <== NOT EXECUTED
if (ref->flash_offset == REF_EMPTY_NODE)
4000bd68: ffe00713 li a4,-2 <== NOT EXECUTED
4000bd6c: fae61ce3 bne a2,a4,4000bd24 <jffs2_scan_classify_jeb+0x1c> <== NOT EXECUTED
return BLK_STATE_CLEANMARKER;
4000bd70: 00300513 li a0,3 <== NOT EXECUTED
}
4000bd74: 00008067 ret <== NOT EXECUTED
c->dirty_size -= jeb->dirty_size;
4000bd78: 0185a703 lw a4,24(a1) <== NOT EXECUTED
4000bd7c: 02052603 lw a2,32(a0) <== NOT EXECUTED
c->wasted_size += jeb->dirty_size;
4000bd80: 02452683 lw a3,36(a0) <== NOT EXECUTED
jeb->wasted_size += jeb->dirty_size;
4000bd84: 01c5a783 lw a5,28(a1) <== NOT EXECUTED
c->dirty_size -= jeb->dirty_size;
4000bd88: 40e60633 sub a2,a2,a4 <== NOT EXECUTED
c->wasted_size += jeb->dirty_size;
4000bd8c: 00e686b3 add a3,a3,a4 <== NOT EXECUTED
c->dirty_size -= jeb->dirty_size;
4000bd90: 02c52023 sw a2,32(a0) <== NOT EXECUTED
c->wasted_size += jeb->dirty_size;
4000bd94: 02d52223 sw a3,36(a0) <== NOT EXECUTED
jeb->wasted_size += jeb->dirty_size;
4000bd98: 00e787b3 add a5,a5,a4 <== NOT EXECUTED
4000bd9c: 00f5ae23 sw a5,28(a1) <== NOT EXECUTED
jeb->dirty_size = 0;
4000bda0: 0005ac23 sw zero,24(a1) <== NOT EXECUTED
return BLK_STATE_CLEAN;
4000bda4: 00100513 li a0,1 <== NOT EXECUTED
4000bda8: 00008067 ret <== NOT EXECUTED
ref = ref->next_in_ino;
4000bdac: 00872703 lw a4,8(a4) <== NOT EXECUTED
if (!ref)
4000bdb0: fc0700e3 beqz a4,4000bd70 <jffs2_scan_classify_jeb+0x68> <== NOT EXECUTED
if (ref->flash_offset == REF_EMPTY_NODE)
4000bdb4: 00472603 lw a2,4(a4) <== NOT EXECUTED
4000bdb8: fb1ff06f j 4000bd68 <jffs2_scan_classify_jeb+0x60> <== NOT EXECUTED
40005748 <jffs2_scan_dirty_space>:
if (!size)
40005748: 06060063 beqz a2,400057a8 <jffs2_scan_dirty_space+0x60> <== NOT EXECUTED
if (unlikely(size > jeb->free_size)) {
4000574c: 0205a803 lw a6,32(a1) <== NOT EXECUTED
{
40005750: ff010113 addi sp,sp,-16 <== NOT EXECUTED
40005754: 00112623 sw ra,12(sp) <== NOT EXECUTED
40005758: 00060793 mv a5,a2 <== NOT EXECUTED
if (unlikely(size > jeb->free_size)) {
4000575c: 08c86863 bltu a6,a2,400057ec <jffs2_scan_dirty_space+0xa4> <== NOT EXECUTED
if (jeb->last_node && ref_obsolete(jeb->last_node)) {
40005760: 02c5a703 lw a4,44(a1) <== NOT EXECUTED
40005764: 00070a63 beqz a4,40005778 <jffs2_scan_dirty_space+0x30> <== NOT EXECUTED
40005768: 00472703 lw a4,4(a4) <== NOT EXECUTED
4000576c: 00100693 li a3,1 <== NOT EXECUTED
40005770: 00377713 andi a4,a4,3 <== NOT EXECUTED
40005774: 02d70e63 beq a4,a3,400057b0 <jffs2_scan_dirty_space+0x68> <== NOT EXECUTED
uint32_t ofs = jeb->offset + c->sector_size - jeb->free_size;
40005778: 00c5a603 lw a2,12(a1) <== NOT EXECUTED
4000577c: 03452883 lw a7,52(a0) <== NOT EXECUTED
jffs2_link_node_ref(c, jeb, ofs, size, NULL);
40005780: 00000713 li a4,0 <== NOT EXECUTED
40005784: 00078693 mv a3,a5 <== NOT EXECUTED
uint32_t ofs = jeb->offset + c->sector_size - jeb->free_size;
40005788: 01160633 add a2,a2,a7 <== NOT EXECUTED
4000578c: 41060633 sub a2,a2,a6 <== NOT EXECUTED
jffs2_link_node_ref(c, jeb, ofs, size, NULL);
40005790: 00166613 ori a2,a2,1 <== NOT EXECUTED
40005794: dd5ff0ef jal ra,40005568 <jffs2_link_node_ref> <== NOT EXECUTED
}
40005798: 00c12083 lw ra,12(sp) <== NOT EXECUTED
4000579c: 00000513 li a0,0 <== NOT EXECUTED
400057a0: 01010113 addi sp,sp,16 <== NOT EXECUTED
400057a4: 00008067 ret <== NOT EXECUTED
400057a8: 00000513 li a0,0 <== NOT EXECUTED
400057ac: 00008067 ret <== NOT EXECUTED
c->dirty_size += size;
400057b0: 02052603 lw a2,32(a0) <== NOT EXECUTED
c->free_size -= size;
400057b4: 02852683 lw a3,40(a0) <== NOT EXECUTED
jeb->dirty_size += size;
400057b8: 0185a703 lw a4,24(a1) <== NOT EXECUTED
}
400057bc: 00c12083 lw ra,12(sp) <== NOT EXECUTED
c->dirty_size += size;
400057c0: 00f60633 add a2,a2,a5 <== NOT EXECUTED
c->free_size -= size;
400057c4: 40f686b3 sub a3,a3,a5 <== NOT EXECUTED
c->dirty_size += size;
400057c8: 02c52023 sw a2,32(a0) <== NOT EXECUTED
c->free_size -= size;
400057cc: 02d52423 sw a3,40(a0) <== NOT EXECUTED
jeb->dirty_size += size;
400057d0: 00f70733 add a4,a4,a5 <== NOT EXECUTED
jeb->free_size -= size;
400057d4: 40f80633 sub a2,a6,a5 <== NOT EXECUTED
jeb->dirty_size += size;
400057d8: 00e5ac23 sw a4,24(a1) <== NOT EXECUTED
jeb->free_size -= size;
400057dc: 02c5a023 sw a2,32(a1) <== NOT EXECUTED
}
400057e0: 00000513 li a0,0 <== NOT EXECUTED
400057e4: 01010113 addi sp,sp,16 <== NOT EXECUTED
400057e8: 00008067 ret <== NOT EXECUTED
pr_crit("Dirty space 0x%x larger then free_size 0x%x (wasted 0x%x)\n",
400057ec: 01c5a683 lw a3,28(a1) <== NOT EXECUTED
400057f0: 4001e537 lui a0,0x4001e <== NOT EXECUTED
400057f4: 00080613 mv a2,a6 <== NOT EXECUTED
400057f8: 00078593 mv a1,a5 <== NOT EXECUTED
400057fc: e9450513 addi a0,a0,-364 # 4001de94 <__func__.4+0x130> <== NOT EXECUTED
40005800: a18ff0ef jal ra,40004a18 <jffs2_printk> <== NOT EXECUTED
BUG();
40005804: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
40005808: 4001e637 lui a2,0x4001e <== NOT EXECUTED
4000580c: 4001e537 lui a0,0x4001e <== NOT EXECUTED
40005810: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
40005814: f2c60613 addi a2,a2,-212 # 4001df2c <__func__.1> <== NOT EXECUTED
40005818: 2a000593 li a1,672 <== NOT EXECUTED
4000581c: db850513 addi a0,a0,-584 # 4001ddb8 <__func__.4+0x54> <== NOT EXECUTED
40005820: 281070ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
4000bdbc <jffs2_scan_make_ino_cache>:
return jffs2_scan_classify_jeb(c, jeb);
}
struct jffs2_inode_cache *jffs2_scan_make_ino_cache(struct jffs2_sb_info *c, uint32_t ino)
{
4000bdbc: ff010113 addi sp,sp,-16 <== NOT EXECUTED
4000bdc0: 00812423 sw s0,8(sp) <== NOT EXECUTED
4000bdc4: 00912223 sw s1,4(sp) <== NOT EXECUTED
4000bdc8: 01212023 sw s2,0(sp) <== NOT EXECUTED
4000bdcc: 00112623 sw ra,12(sp) <== NOT EXECUTED
4000bdd0: 00050913 mv s2,a0 <== NOT EXECUTED
4000bdd4: 00058493 mv s1,a1 <== NOT EXECUTED
struct jffs2_inode_cache *ic;
ic = jffs2_get_ino_cache(c, ino);
4000bdd8: c60f90ef jal ra,40005238 <jffs2_get_ino_cache> <== NOT EXECUTED
4000bddc: 00050413 mv s0,a0 <== NOT EXECUTED
if (ic)
4000bde0: 02050063 beqz a0,4000be00 <jffs2_scan_make_ino_cache+0x44> <== NOT EXECUTED
ic->nodes = (void *)ic;
jffs2_add_ino_cache(c, ic);
if (ino == 1)
ic->pino_nlink = 1;
return ic;
}
4000bde4: 00c12083 lw ra,12(sp) <== NOT EXECUTED
4000bde8: 00040513 mv a0,s0 <== NOT EXECUTED
4000bdec: 00812403 lw s0,8(sp) <== NOT EXECUTED
4000bdf0: 00412483 lw s1,4(sp) <== NOT EXECUTED
4000bdf4: 00012903 lw s2,0(sp) <== NOT EXECUTED
4000bdf8: 01010113 addi sp,sp,16 <== NOT EXECUTED
4000bdfc: 00008067 ret <== NOT EXECUTED
if (ino > c->highest_ino)
4000be00: 00492783 lw a5,4(s2) <== NOT EXECUTED
4000be04: 0097f463 bgeu a5,s1,4000be0c <jffs2_scan_make_ino_cache+0x50> <== NOT EXECUTED
c->highest_ino = ino;
4000be08: 00992223 sw s1,4(s2) <== NOT EXECUTED
ic = jffs2_alloc_inode_cache();
4000be0c: b95f80ef jal ra,400049a0 <jffs2_alloc_inode_cache> <== NOT EXECUTED
4000be10: 00050413 mv s0,a0 <== NOT EXECUTED
if (!ic) {
4000be14: 04050663 beqz a0,4000be60 <jffs2_scan_make_ino_cache+0xa4> <== NOT EXECUTED
memset(ic, 0, sizeof(*ic));
4000be18: 01800613 li a2,24 <== NOT EXECUTED
4000be1c: 00000593 li a1,0 <== NOT EXECUTED
4000be20: 2f8100ef jal ra,4001c118 <memset> <== NOT EXECUTED
jffs2_add_ino_cache(c, ic);
4000be24: 00040593 mv a1,s0 <== NOT EXECUTED
ic->ino = ino;
4000be28: 00942623 sw s1,12(s0) <== NOT EXECUTED
ic->nodes = (void *)ic;
4000be2c: 00842223 sw s0,4(s0) <== NOT EXECUTED
jffs2_add_ino_cache(c, ic);
4000be30: 00090513 mv a0,s2 <== NOT EXECUTED
4000be34: c4cf90ef jal ra,40005280 <jffs2_add_ino_cache> <== NOT EXECUTED
if (ino == 1)
4000be38: 00100793 li a5,1 <== NOT EXECUTED
4000be3c: faf494e3 bne s1,a5,4000bde4 <jffs2_scan_make_ino_cache+0x28> <== NOT EXECUTED
ic->pino_nlink = 1;
4000be40: 00942a23 sw s1,20(s0) <== NOT EXECUTED
}
4000be44: 00c12083 lw ra,12(sp) <== NOT EXECUTED
4000be48: 00040513 mv a0,s0 <== NOT EXECUTED
4000be4c: 00812403 lw s0,8(sp) <== NOT EXECUTED
4000be50: 00412483 lw s1,4(sp) <== NOT EXECUTED
4000be54: 00012903 lw s2,0(sp) <== NOT EXECUTED
4000be58: 01010113 addi sp,sp,16 <== NOT EXECUTED
4000be5c: 00008067 ret <== NOT EXECUTED
pr_notice("%s(): allocation of inode cache failed\n", __func__);
4000be60: 400205b7 lui a1,0x40020 <== NOT EXECUTED
4000be64: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000be68: 29858593 addi a1,a1,664 # 40020298 <__func__.0> <== NOT EXECUTED
4000be6c: bf050513 addi a0,a0,-1040 # 4001fbf0 <__func__.0+0x28> <== NOT EXECUTED
4000be70: d7dff0ef jal ra,4000bbec <jffs2_printk> <== NOT EXECUTED
return NULL;
4000be74: f71ff06f j 4000bde4 <jffs2_scan_make_ino_cache+0x28> <== NOT EXECUTED
4000be78 <jffs2_scan_medium>:
{
4000be78: f9010113 addi sp,sp,-112
4000be7c: 05a12023 sw s10,64(sp)
4000be80: 00050d13 mv s10,a0
flashbuf = mtd_kmalloc_up_to(c->mtd, &try_size);
4000be84: 00001537 lui a0,0x1
{
4000be88: 06112623 sw ra,108(sp)
4000be8c: 06812423 sw s0,104(sp)
4000be90: 06912223 sw s1,100(sp)
4000be94: 07212023 sw s2,96(sp)
4000be98: 05312e23 sw s3,92(sp)
4000be9c: 05412c23 sw s4,88(sp)
4000bea0: 05512a23 sw s5,84(sp)
4000bea4: 05612823 sw s6,80(sp)
4000bea8: 05712623 sw s7,76(sp)
4000beac: 05812423 sw s8,72(sp)
4000beb0: 05912223 sw s9,68(sp)
4000beb4: 03b12e23 sw s11,60(sp)
flashbuf = mtd_kmalloc_up_to(c->mtd, &try_size);
4000beb8: 3c5010ef jal ra,4000da7c <malloc>
if (!flashbuf)
4000bebc: 6a0508e3 beqz a0,4000cd6c <jffs2_scan_medium+0xef4> <== NEVER TAKEN
for (i=0; i<c->nr_blocks; i++) {
4000bec0: 050d2b83 lw s7,80(s10) # 1050 <_ISR_Stack_size+0x50>
4000bec4: 00050d93 mv s11,a0
4000bec8: 240b8ce3 beqz s7,4000c920 <jffs2_scan_medium+0xaa8> <== NEVER TAKEN
4000becc: 40020ab7 lui s5,0x40020
4000bed0: 00000913 li s2,0
4000bed4: 00000993 li s3,0
uint32_t empty_blocks = 0, bad_blocks = 0;
4000bed8: 00012623 sw zero,12(sp)
4000bedc: 00000b93 li s7,0
4000bee0: 280a8a93 addi s5,s5,640 # 40020280 <__func__.0+0x6b8>
struct jffs2_eraseblock *jeb = &c->blocks[i];
4000bee4: 054d2e83 lw t4,84(s10)
buf_len = EMPTY_SCAN_SIZE(c->sector_size);
4000bee8: 034d2403 lw s0,52(s10)
if (sector_size < DEFAULT_EMPTY_SCAN_SIZE)
4000beec: 0ff00793 li a5,255
struct jffs2_eraseblock *jeb = &c->blocks[i];
4000bef0: 012e8c33 add s8,t4,s2
ofs = jeb->offset;
4000bef4: 00cc2483 lw s1,12(s8)
if (sector_size < DEFAULT_EMPTY_SCAN_SIZE)
4000bef8: 0087f463 bgeu a5,s0,4000bf00 <jffs2_scan_medium+0x88>
return DEFAULT_EMPTY_SCAN_SIZE;
4000befc: 10000413 li s0,256
ret = jffs2_flash_read(c, ofs, len, &retlen, buf);
4000bf00: 000d8713 mv a4,s11
4000bf04: 02410693 addi a3,sp,36
4000bf08: 00040613 mv a2,s0
4000bf0c: 00048593 mv a1,s1
4000bf10: 000d0513 mv a0,s10
4000bf14: a65ff0ef jal ra,4000b978 <jffs2_flash_read>
4000bf18: 00050713 mv a4,a0
if (ret) {
4000bf1c: 14051e63 bnez a0,4000c078 <jffs2_scan_medium+0x200> <== NEVER TAKEN
if (retlen < len) {
4000bf20: 02412783 lw a5,36(sp)
4000bf24: 0287eae3 bltu a5,s0,4000c758 <jffs2_scan_medium+0x8e0>
max_ofs = EMPTY_SCAN_SIZE(c->sector_size);
4000bf28: 034d2603 lw a2,52(s10)
if (sector_size < DEFAULT_EMPTY_SCAN_SIZE)
4000bf2c: 0ff00793 li a5,255
return DEFAULT_EMPTY_SCAN_SIZE;
4000bf30: 10000693 li a3,256
if (sector_size < DEFAULT_EMPTY_SCAN_SIZE)
4000bf34: 00c7e663 bltu a5,a2,4000bf40 <jffs2_scan_medium+0xc8>
while(ofs < max_ofs && *(uint32_t *)(&buf[ofs]) == 0xFFFFFFFF)
4000bf38: 28060663 beqz a2,4000c1c4 <jffs2_scan_medium+0x34c> <== NOT EXECUTED
4000bf3c: 00060693 mv a3,a2 <== NOT EXECUTED
ofs = 0;
4000bf40: 00000c93 li s9,0
while(ofs < max_ofs && *(uint32_t *)(&buf[ofs]) == 0xFFFFFFFF)
4000bf44: fff00713 li a4,-1
4000bf48: 00c0006f j 4000bf54 <jffs2_scan_medium+0xdc>
ofs += 4;
4000bf4c: 004c8c93 addi s9,s9,4
while(ofs < max_ofs && *(uint32_t *)(&buf[ofs]) == 0xFFFFFFFF)
4000bf50: 26dcf863 bgeu s9,a3,4000c1c0 <jffs2_scan_medium+0x348>
4000bf54: 019d87b3 add a5,s11,s9
4000bf58: 0007a783 lw a5,0(a5)
4000bf5c: fee788e3 beq a5,a4,4000bf4c <jffs2_scan_medium+0xd4>
if (ofs) {
4000bf60: 480c9263 bnez s9,4000c3e4 <jffs2_scan_medium+0x56c> <== NOT EXECUTED
ofs += jeb->offset;
4000bf64: 00cc2783 lw a5,12(s8) <== NOT EXECUTED
prevofs = jeb->offset - 1;
4000bf68: fff48a13 addi s4,s1,-1 <== NOT EXECUTED
noise = 10;
4000bf6c: 00a00b13 li s6,10 <== NOT EXECUTED
ofs += jeb->offset;
4000bf70: 01978cb3 add s9,a5,s9 <== NOT EXECUTED
while(ofs < jeb->offset + c->sector_size) {
4000bf74: 00c787b3 add a5,a5,a2 <== NOT EXECUTED
4000bf78: 0cfcf063 bgeu s9,a5,4000c038 <jffs2_scan_medium+0x1c0> <== NOT EXECUTED
err = jffs2_prealloc_raw_node_refs(c, jeb, 2);
4000bf7c: 00200613 li a2,2 <== NOT EXECUTED
4000bf80: 000c0593 mv a1,s8 <== NOT EXECUTED
4000bf84: 000d0513 mv a0,s10 <== NOT EXECUTED
4000bf88: 925f80ef jal ra,400048ac <jffs2_prealloc_raw_node_refs> <== NOT EXECUTED
4000bf8c: 00050713 mv a4,a0 <== NOT EXECUTED
if (err)
4000bf90: 0e051463 bnez a0,4000c078 <jffs2_scan_medium+0x200> <== NOT EXECUTED
if (ofs & 3) {
4000bf94: 003cf793 andi a5,s9,3 <== NOT EXECUTED
4000bf98: 42079063 bnez a5,4000c3b8 <jffs2_scan_medium+0x540> <== NOT EXECUTED
if (ofs == prevofs) {
4000bf9c: 494c8063 beq s9,s4,4000c41c <jffs2_scan_medium+0x5a4> <== NOT EXECUTED
if (jeb->offset + c->sector_size < ofs + sizeof(*node)) {
4000bfa0: 00cc2603 lw a2,12(s8) <== NOT EXECUTED
4000bfa4: 034d2783 lw a5,52(s10) <== NOT EXECUTED
4000bfa8: 00cc8f93 addi t6,s9,12 <== NOT EXECUTED
4000bfac: 00f60633 add a2,a2,a5 <== NOT EXECUTED
4000bfb0: 7bf66863 bltu a2,t6,4000c760 <jffs2_scan_medium+0x8e8> <== NOT EXECUTED
node = (struct jffs2_unknown_node *)&buf[ofs-buf_ofs];
4000bfb4: 409c87b3 sub a5,s9,s1 <== NOT EXECUTED
if (buf_ofs + buf_len < ofs + sizeof(*node)) {
4000bfb8: 00848733 add a4,s1,s0 <== NOT EXECUTED
node = (struct jffs2_unknown_node *)&buf[ofs-buf_ofs];
4000bfbc: 00fd8a33 add s4,s11,a5 <== NOT EXECUTED
if (buf_ofs + buf_len < ofs + sizeof(*node)) {
4000bfc0: 2ff76e63 bltu a4,t6,4000c2bc <jffs2_scan_medium+0x444> <== NOT EXECUTED
if (*(uint32_t *)(&buf[ofs-buf_ofs]) == 0xffffffff) {
4000bfc4: 000a2683 lw a3,0(s4) <== NOT EXECUTED
4000bfc8: fff00713 li a4,-1 <== NOT EXECUTED
4000bfcc: 34e68263 beq a3,a4,4000c310 <jffs2_scan_medium+0x498> <== NOT EXECUTED
if (ofs == jeb->offset && je16_to_cpu(node->magic) == KSAMTIB_CIGAM_2SFFJ) {
4000bfd0: 001a4703 lbu a4,1(s4) <== NOT EXECUTED
4000bfd4: 000a4603 lbu a2,0(s4) <== NOT EXECUTED
4000bfd8: 00cc2683 lw a3,12(s8) <== NOT EXECUTED
4000bfdc: 00871713 slli a4,a4,0x8 <== NOT EXECUTED
4000bfe0: 00c76733 or a4,a4,a2 <== NOT EXECUTED
4000bfe4: 0b968863 beq a3,s9,4000c094 <jffs2_scan_medium+0x21c> <== NOT EXECUTED
if (je16_to_cpu(node->magic) == JFFS2_DIRTY_BITMASK) {
4000bfe8: 02070063 beqz a4,4000c008 <jffs2_scan_medium+0x190> <== NOT EXECUTED
if (je16_to_cpu(node->magic) == JFFS2_OLD_MAGIC_BITMASK) {
4000bfec: 000027b7 lui a5,0x2 <== NOT EXECUTED
4000bff0: 98478793 addi a5,a5,-1660 # 1984 <_ISR_Stack_size+0x984> <== NOT EXECUTED
4000bff4: 50f70063 beq a4,a5,4000c4f4 <jffs2_scan_medium+0x67c> <== NOT EXECUTED
if (je16_to_cpu(node->magic) != JFFS2_MAGIC_BITMASK) {
4000bff8: 000027b7 lui a5,0x2 <== NOT EXECUTED
4000bffc: 98578613 addi a2,a5,-1659 # 1985 <_ISR_Stack_size+0x985> <== NOT EXECUTED
4000c000: 50c70a63 beq a4,a2,4000c514 <jffs2_scan_medium+0x69c> <== NOT EXECUTED
noisy_printk(&noise, "%s(): Magic bitmask 0x%04x not found at 0x%08x: 0x%04x instead\n",
4000c004: 4c0b1263 bnez s6,4000c4c8 <jffs2_scan_medium+0x650> <== NOT EXECUTED
if ((err = jffs2_scan_dirty_space(c, jeb, 4)))
4000c008: 00400613 li a2,4 <== NOT EXECUTED
4000c00c: 000c0593 mv a1,s8 <== NOT EXECUTED
4000c010: 000d0513 mv a0,s10 <== NOT EXECUTED
4000c014: f34f90ef jal ra,40005748 <jffs2_scan_dirty_space> <== NOT EXECUTED
4000c018: 00050713 mv a4,a0 <== NOT EXECUTED
4000c01c: 04051e63 bnez a0,4000c078 <jffs2_scan_medium+0x200> <== NOT EXECUTED
while(ofs < jeb->offset + c->sector_size) {
4000c020: 034d2703 lw a4,52(s10) <== NOT EXECUTED
4000c024: 00cc2783 lw a5,12(s8) <== NOT EXECUTED
continue;
4000c028: 000c8a13 mv s4,s9 <== NOT EXECUTED
ofs += 4;
4000c02c: 004c8c93 addi s9,s9,4 <== NOT EXECUTED
while(ofs < jeb->offset + c->sector_size) {
4000c030: 00f70733 add a4,a4,a5 <== NOT EXECUTED
4000c034: f4ece4e3 bltu s9,a4,4000bf7c <jffs2_scan_medium+0x104> <== NOT EXECUTED
if (jeb->wasted_size) {
4000c038: 01cc2783 lw a5,28(s8) <== NOT EXECUTED
4000c03c: 02078663 beqz a5,4000c068 <jffs2_scan_medium+0x1f0> <== NOT EXECUTED
jeb->dirty_size += jeb->wasted_size;
4000c040: 018c2603 lw a2,24(s8) <== NOT EXECUTED
c->dirty_size += jeb->wasted_size;
4000c044: 020d2683 lw a3,32(s10) <== NOT EXECUTED
c->wasted_size -= jeb->wasted_size;
4000c048: 024d2703 lw a4,36(s10) <== NOT EXECUTED
jeb->dirty_size += jeb->wasted_size;
4000c04c: 00f60633 add a2,a2,a5 <== NOT EXECUTED
4000c050: 00cc2c23 sw a2,24(s8) <== NOT EXECUTED
c->dirty_size += jeb->wasted_size;
4000c054: 00f686b3 add a3,a3,a5 <== NOT EXECUTED
c->wasted_size -= jeb->wasted_size;
4000c058: 40f707b3 sub a5,a4,a5 <== NOT EXECUTED
c->dirty_size += jeb->wasted_size;
4000c05c: 02dd2023 sw a3,32(s10) <== NOT EXECUTED
c->wasted_size -= jeb->wasted_size;
4000c060: 02fd2223 sw a5,36(s10) <== NOT EXECUTED
jeb->wasted_size = 0;
4000c064: 000c2e23 sw zero,28(s8) <== NOT EXECUTED
return jffs2_scan_classify_jeb(c, jeb);
4000c068: 000c0593 mv a1,s8 <== NOT EXECUTED
4000c06c: 000d0513 mv a0,s10 <== NOT EXECUTED
4000c070: c99ff0ef jal ra,4000bd08 <jffs2_scan_classify_jeb> <== NOT EXECUTED
4000c074: 00050713 mv a4,a0 <== NOT EXECUTED
if (ret < 0)
4000c078: 0e074c63 bltz a4,4000c170 <jffs2_scan_medium+0x2f8> <== NOT EXECUTED
switch(ret) {
4000c07c: 00500793 li a5,5 <== NOT EXECUTED
4000c080: 2ce7e6e3 bltu a5,a4,4000cb4c <jffs2_scan_medium+0xcd4> <== NOT EXECUTED
4000c084: 00271513 slli a0,a4,0x2 <== NOT EXECUTED
4000c088: 01550733 add a4,a0,s5 <== NOT EXECUTED
4000c08c: 00072783 lw a5,0(a4) <== NOT EXECUTED
4000c090: 00078067 jr a5 <== NOT EXECUTED
if (ofs == jeb->offset && je16_to_cpu(node->magic) == KSAMTIB_CIGAM_2SFFJ) {
4000c094: 000086b7 lui a3,0x8 <== NOT EXECUTED
4000c098: 51968693 addi a3,a3,1305 # 8519 <bsp_section_rodata_size+0x3445><== NOT EXECUTED
4000c09c: f4d716e3 bne a4,a3,4000bfe8 <jffs2_scan_medium+0x170> <== NOT EXECUTED
pr_warn("Magic bitmask is backwards at offset 0x%08x. Wrong endian filesystem?\n",
4000c0a0: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000c0a4: 000c8593 mv a1,s9 <== NOT EXECUTED
4000c0a8: cbc50513 addi a0,a0,-836 # 4001fcbc <__func__.0+0xf4> <== NOT EXECUTED
4000c0ac: b41ff0ef jal ra,4000bbec <jffs2_printk> <== NOT EXECUTED
if ((err = jffs2_scan_dirty_space(c, jeb, 4)))
4000c0b0: 00400613 li a2,4 <== NOT EXECUTED
4000c0b4: 000c0593 mv a1,s8 <== NOT EXECUTED
4000c0b8: 000d0513 mv a0,s10 <== NOT EXECUTED
4000c0bc: e8cf90ef jal ra,40005748 <jffs2_scan_dirty_space> <== NOT EXECUTED
4000c0c0: 00050713 mv a4,a0 <== NOT EXECUTED
4000c0c4: fa051ae3 bnez a0,4000c078 <jffs2_scan_medium+0x200> <== NOT EXECUTED
while(ofs < jeb->offset + c->sector_size) {
4000c0c8: 00cc2703 lw a4,12(s8) <== NOT EXECUTED
4000c0cc: 034d2783 lw a5,52(s10) <== NOT EXECUTED
continue;
4000c0d0: 000c8a13 mv s4,s9 <== NOT EXECUTED
ofs += 4;
4000c0d4: 004c8c93 addi s9,s9,4 <== NOT EXECUTED
while(ofs < jeb->offset + c->sector_size) {
4000c0d8: 00f70733 add a4,a4,a5 <== NOT EXECUTED
4000c0dc: eaece0e3 bltu s9,a4,4000bf7c <jffs2_scan_medium+0x104> <== NOT EXECUTED
4000c0e0: f59ff06f j 4000c038 <jffs2_scan_medium+0x1c0> <== NOT EXECUTED
struct list_head *next = afterthisent->next;
4000c0e4: 098d2703 lw a4,152(s10) <== NOT EXECUTED
c->nr_erasing_blocks++;
4000c0e8: 040d2783 lw a5,64(s10) <== NOT EXECUTED
list_add(&jeb->list, &c->erase_pending_list);
4000c0ec: 098d0693 addi a3,s10,152 <== NOT EXECUTED
newent->next = next;
4000c0f0: 00ec2023 sw a4,0(s8) <== NOT EXECUTED
newent->prev = afterthisent;
4000c0f4: 00dc2223 sw a3,4(s8) <== NOT EXECUTED
afterthisent->next = newent;
4000c0f8: 098d2c23 sw s8,152(s10) <== NOT EXECUTED
next->prev = newent;
4000c0fc: 01872223 sw s8,4(a4) <== NOT EXECUTED
c->nr_erasing_blocks++;
4000c100: 00178793 addi a5,a5,1 <== NOT EXECUTED
4000c104: 04fd2023 sw a5,64(s10) <== NOT EXECUTED
for (i=0; i<c->nr_blocks; i++) {
4000c108: 050d2783 lw a5,80(s10)
4000c10c: 00198993 addi s3,s3,1
4000c110: 03490913 addi s2,s2,52
4000c114: dcf9e8e3 bltu s3,a5,4000bee4 <jffs2_scan_medium+0x6c>
if (c->nextblock && (c->nextblock->dirty_size)) {
4000c118: 058d2703 lw a4,88(s10)
4000c11c: 00070663 beqz a4,4000c128 <jffs2_scan_medium+0x2b0> <== ALWAYS TAKEN
4000c120: 01872683 lw a3,24(a4) <== NOT EXECUTED
4000c124: 66069063 bnez a3,4000c784 <jffs2_scan_medium+0x90c> <== NOT EXECUTED
if (c->nr_erasing_blocks) {
4000c128: 040d2683 lw a3,64(s10)
ret = 0;
4000c12c: 00000713 li a4,0
if (c->nr_erasing_blocks) {
4000c130: 04068063 beqz a3,4000c170 <jffs2_scan_medium+0x2f8> <== NEVER TAKEN
if ( !c->used_size && ((c->nr_free_blocks+empty_blocks+bad_blocks)!= c->nr_blocks || bad_blocks == c->nr_blocks) ) {
4000c134: 01cd2703 lw a4,28(s10)
4000c138: 00071e63 bnez a4,4000c154 <jffs2_scan_medium+0x2dc> <== NEVER TAKEN
4000c13c: 00c12703 lw a4,12(sp)
4000c140: 03cd2683 lw a3,60(s10)
4000c144: 00eb8733 add a4,s7,a4
4000c148: 00d70733 add a4,a4,a3
4000c14c: 5ef71463 bne a4,a5,4000c734 <jffs2_scan_medium+0x8bc>
4000c150: 5efb8263 beq s7,a5,4000c734 <jffs2_scan_medium+0x8bc>
rtems_jffs2_flash_control *fc = sb->s_flash_control;
4000c154: 0e4d2503 lw a0,228(s10)
ret = 0;
4000c158: 00000713 li a4,0
if (fc->trigger_garbage_collection != NULL) {
4000c15c: 02052783 lw a5,32(a0)
4000c160: 00078863 beqz a5,4000c170 <jffs2_scan_medium+0x2f8> <== ALWAYS TAKEN
4000c164: 00e12623 sw a4,12(sp) <== NOT EXECUTED
(*fc->trigger_garbage_collection)(fc);
4000c168: 000780e7 jalr a5 <== NOT EXECUTED
4000c16c: 00c12703 lw a4,12(sp) <== NOT EXECUTED
kfree(flashbuf);
4000c170: 000d8513 mv a0,s11
4000c174: 00e12623 sw a4,12(sp)
4000c178: 55c010ef jal ra,4000d6d4 <free>
return ret;
4000c17c: 00c12703 lw a4,12(sp)
}
4000c180: 06c12083 lw ra,108(sp)
4000c184: 06812403 lw s0,104(sp)
4000c188: 06412483 lw s1,100(sp)
4000c18c: 06012903 lw s2,96(sp)
4000c190: 05c12983 lw s3,92(sp)
4000c194: 05812a03 lw s4,88(sp)
4000c198: 05412a83 lw s5,84(sp)
4000c19c: 05012b03 lw s6,80(sp)
4000c1a0: 04c12b83 lw s7,76(sp)
4000c1a4: 04812c03 lw s8,72(sp)
4000c1a8: 04412c83 lw s9,68(sp)
4000c1ac: 04012d03 lw s10,64(sp)
4000c1b0: 03c12d83 lw s11,60(sp)
4000c1b4: 00070513 mv a0,a4
4000c1b8: 07010113 addi sp,sp,112
4000c1bc: 00008067 ret
if (ofs == max_ofs) {
4000c1c0: 22dc9263 bne s9,a3,4000c3e4 <jffs2_scan_medium+0x56c>
if (c->cleanmarker_size == 0)
4000c1c4: 014d2783 lw a5,20(s10)
4000c1c8: 08079263 bnez a5,4000c24c <jffs2_scan_medium+0x3d4> <== ALWAYS TAKEN
if (!jeb->dirty_size) {
4000c1cc: 018c2783 lw a5,24(s8) <== NOT EXECUTED
4000c1d0: f0079ae3 bnez a5,4000c0e4 <jffs2_scan_medium+0x26c> <== NOT EXECUTED
struct list_head *next = afterthisent->next;
4000c1d4: 0a8d2703 lw a4,168(s10) <== NOT EXECUTED
c->nr_free_blocks++;
4000c1d8: 03cd2783 lw a5,60(s10) <== NOT EXECUTED
list_add(&jeb->list, &c->free_list);
4000c1dc: 0a8d0693 addi a3,s10,168 <== NOT EXECUTED
newent->next = next;
4000c1e0: 00ec2023 sw a4,0(s8) <== NOT EXECUTED
newent->prev = afterthisent;
4000c1e4: 00dc2223 sw a3,4(s8) <== NOT EXECUTED
afterthisent->next = newent;
4000c1e8: 0b8d2423 sw s8,168(s10) <== NOT EXECUTED
next->prev = newent;
4000c1ec: 01872223 sw s8,4(a4) <== NOT EXECUTED
c->nr_free_blocks++;
4000c1f0: 00178793 addi a5,a5,1 <== NOT EXECUTED
4000c1f4: 02fd2e23 sw a5,60(s10) <== NOT EXECUTED
4000c1f8: f11ff06f j 4000c108 <jffs2_scan_medium+0x290> <== NOT EXECUTED
if (jeb->free_size > min_free(c) &&
4000c1fc: 020c2783 lw a5,32(s8) <== NOT EXECUTED
4000c200: 08800713 li a4,136 <== NOT EXECUTED
4000c204: 24f77c63 bgeu a4,a5,4000c45c <jffs2_scan_medium+0x5e4> <== NOT EXECUTED
(!c->nextblock || c->nextblock->free_size < jeb->free_size)) {
4000c208: 058d2583 lw a1,88(s10) <== NOT EXECUTED
if (jeb->free_size > min_free(c) &&
4000c20c: 00058e63 beqz a1,4000c228 <jffs2_scan_medium+0x3b0> <== NOT EXECUTED
(!c->nextblock || c->nextblock->free_size < jeb->free_size)) {
4000c210: 0205a703 lw a4,32(a1) <== NOT EXECUTED
4000c214: 24f77463 bgeu a4,a5,4000c45c <jffs2_scan_medium+0x5e4> <== NOT EXECUTED
ret = file_dirty(c, c->nextblock);
4000c218: 000d0513 mv a0,s10 <== NOT EXECUTED
4000c21c: a11ff0ef jal ra,4000bc2c <file_dirty> <== NOT EXECUTED
4000c220: 00050713 mv a4,a0 <== NOT EXECUTED
if (ret)
4000c224: f40516e3 bnez a0,4000c170 <jffs2_scan_medium+0x2f8> <== NOT EXECUTED
c->nextblock = jeb;
4000c228: 058d2c23 sw s8,88(s10) <== NOT EXECUTED
4000c22c: eddff06f j 4000c108 <jffs2_scan_medium+0x290> <== NOT EXECUTED
struct list_head *next = afterthisent->next;
4000c230: 060d2783 lw a5,96(s10) <== NOT EXECUTED
list_add(&jeb->list, &c->clean_list);
4000c234: 060d0713 addi a4,s10,96 <== NOT EXECUTED
newent->prev = afterthisent;
4000c238: 00ec2223 sw a4,4(s8) <== NOT EXECUTED
newent->next = next;
4000c23c: 00fc2023 sw a5,0(s8) <== NOT EXECUTED
afterthisent->next = newent;
4000c240: 078d2023 sw s8,96(s10) <== NOT EXECUTED
next->prev = newent;
4000c244: 0187a223 sw s8,4(a5) <== NOT EXECUTED
} /* list_add() */
4000c248: ec1ff06f j 4000c108 <jffs2_scan_medium+0x290> <== NOT EXECUTED
struct list_head *next = afterthisent->next;
4000c24c: 098d2703 lw a4,152(s10)
list_add(&jeb->list, &c->erase_pending_list);
4000c250: 098d0693 addi a3,s10,152
c->nr_erasing_blocks++;
4000c254: 040d2783 lw a5,64(s10)
newent->next = next;
4000c258: 00ec2023 sw a4,0(s8)
newent->prev = afterthisent;
4000c25c: 00dc2223 sw a3,4(s8)
afterthisent->next = newent;
4000c260: 098d2c23 sw s8,152(s10)
next->prev = newent;
4000c264: 01872223 sw s8,4(a4)
empty_blocks++;
4000c268: 00c12703 lw a4,12(sp)
c->nr_erasing_blocks++;
4000c26c: 00178793 addi a5,a5,1
4000c270: 04fd2023 sw a5,64(s10)
empty_blocks++;
4000c274: 00170713 addi a4,a4,1
4000c278: 00e12623 sw a4,12(sp)
break;
4000c27c: e8dff06f j 4000c108 <jffs2_scan_medium+0x290>
struct list_head *next = afterthisent->next;
4000c280: 0b0d2603 lw a2,176(s10) <== NOT EXECUTED
c->bad_size += c->sector_size;
4000c284: 034d2683 lw a3,52(s10) <== NOT EXECUTED
4000c288: 030d2703 lw a4,48(s10) <== NOT EXECUTED
c->free_size -= c->sector_size;
4000c28c: 028d2783 lw a5,40(s10) <== NOT EXECUTED
list_add(&jeb->list, &c->bad_list);
4000c290: 0b0d0593 addi a1,s10,176 <== NOT EXECUTED
newent->next = next;
4000c294: 00cc2023 sw a2,0(s8) <== NOT EXECUTED
newent->prev = afterthisent;
4000c298: 00bc2223 sw a1,4(s8) <== NOT EXECUTED
afterthisent->next = newent;
4000c29c: 0b8d2823 sw s8,176(s10) <== NOT EXECUTED
next->prev = newent;
4000c2a0: 01862223 sw s8,4(a2) <== NOT EXECUTED
c->bad_size += c->sector_size;
4000c2a4: 00d70733 add a4,a4,a3 <== NOT EXECUTED
c->free_size -= c->sector_size;
4000c2a8: 40d787b3 sub a5,a5,a3 <== NOT EXECUTED
c->bad_size += c->sector_size;
4000c2ac: 02ed2823 sw a4,48(s10) <== NOT EXECUTED
c->free_size -= c->sector_size;
4000c2b0: 02fd2423 sw a5,40(s10) <== NOT EXECUTED
bad_blocks++;
4000c2b4: 001b8b93 addi s7,s7,1 <== NOT EXECUTED
break;
4000c2b8: e51ff06f j 4000c108 <jffs2_scan_medium+0x290> <== NOT EXECUTED
buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs);
4000c2bc: 41960433 sub s0,a2,s9 <== NOT EXECUTED
4000c2c0: 000017b7 lui a5,0x1 <== NOT EXECUTED
4000c2c4: 0087f463 bgeu a5,s0,4000c2cc <jffs2_scan_medium+0x454> <== NOT EXECUTED
4000c2c8: 00001437 lui s0,0x1 <== NOT EXECUTED
ret = jffs2_flash_read(c, ofs, len, &retlen, buf);
4000c2cc: 000d8713 mv a4,s11 <== NOT EXECUTED
4000c2d0: 02010693 addi a3,sp,32 <== NOT EXECUTED
4000c2d4: 00040613 mv a2,s0 <== NOT EXECUTED
4000c2d8: 000c8593 mv a1,s9 <== NOT EXECUTED
4000c2dc: 000d0513 mv a0,s10 <== NOT EXECUTED
4000c2e0: 01f12823 sw t6,16(sp) <== NOT EXECUTED
4000c2e4: e94ff0ef jal ra,4000b978 <jffs2_flash_read> <== NOT EXECUTED
4000c2e8: 00050713 mv a4,a0 <== NOT EXECUTED
if (ret) {
4000c2ec: d80516e3 bnez a0,4000c078 <jffs2_scan_medium+0x200> <== NOT EXECUTED
if (retlen < len) {
4000c2f0: 02012783 lw a5,32(sp) <== NOT EXECUTED
4000c2f4: 01012f83 lw t6,16(sp) <== NOT EXECUTED
4000c2f8: 4687e063 bltu a5,s0,4000c758 <jffs2_scan_medium+0x8e0> <== NOT EXECUTED
if (err)
4000c2fc: 000d8a13 mv s4,s11 <== NOT EXECUTED
if (*(uint32_t *)(&buf[ofs-buf_ofs]) == 0xffffffff) {
4000c300: 000a2683 lw a3,0(s4) <== NOT EXECUTED
4000c304: fff00713 li a4,-1 <== NOT EXECUTED
4000c308: 000c8493 mv s1,s9 <== NOT EXECUTED
4000c30c: cce692e3 bne a3,a4,4000bfd0 <jffs2_scan_medium+0x158> <== NOT EXECUTED
scan_end = min_t(uint32_t, EMPTY_SCAN_SIZE(c->sector_size)/8, buf_len);
4000c310: 034d2703 lw a4,52(s10) <== NOT EXECUTED
if (sector_size < DEFAULT_EMPTY_SCAN_SIZE)
4000c314: 0ff00693 li a3,255 <== NOT EXECUTED
ofs += 4;
4000c318: 004c8813 addi a6,s9,4 <== NOT EXECUTED
if (sector_size < DEFAULT_EMPTY_SCAN_SIZE)
4000c31c: 02000793 li a5,32 <== NOT EXECUTED
4000c320: 00e6e463 bltu a3,a4,4000c328 <jffs2_scan_medium+0x4b0> <== NOT EXECUTED
scan_end = min_t(uint32_t, EMPTY_SCAN_SIZE(c->sector_size)/8, buf_len);
4000c324: 00375793 srli a5,a4,0x3 <== NOT EXECUTED
4000c328: 00040713 mv a4,s0 <== NOT EXECUTED
4000c32c: 0087f463 bgeu a5,s0,4000c334 <jffs2_scan_medium+0x4bc> <== NOT EXECUTED
4000c330: 00078713 mv a4,a5 <== NOT EXECUTED
if (unlikely(*(uint32_t *)(&buf[inbuf_ofs]) != 0xffffffff)) {
4000c334: fff00893 li a7,-1 <== NOT EXECUTED
buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs);
4000c338: 00001a37 lui s4,0x1 <== NOT EXECUTED
4000c33c: 0140006f j 4000c350 <jffs2_scan_medium+0x4d8> <== NOT EXECUTED
if (unlikely(*(uint32_t *)(&buf[inbuf_ofs]) != 0xffffffff)) {
4000c340: 00fd87b3 add a5,s11,a5 <== NOT EXECUTED
4000c344: 0007a783 lw a5,0(a5) # 1000 <_ISR_Stack_size> <== NOT EXECUTED
4000c348: 13179663 bne a5,a7,4000c474 <jffs2_scan_medium+0x5fc> <== NOT EXECUTED
ofs += 4;
4000c34c: 00480813 addi a6,a6,4 <== NOT EXECUTED
while (inbuf_ofs < scan_end) {
4000c350: 409807b3 sub a5,a6,s1 <== NOT EXECUTED
4000c354: fee7e6e3 bltu a5,a4,4000c340 <jffs2_scan_medium+0x4c8> <== NOT EXECUTED
if (buf_ofs == jeb->offset && jeb->used_size == PAD(c->cleanmarker_size) &&
4000c358: 00cc2783 lw a5,12(s8) <== NOT EXECUTED
4000c35c: 2cf48063 beq s1,a5,4000c61c <jffs2_scan_medium+0x7a4> <== NOT EXECUTED
buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs);
4000c360: 034d2703 lw a4,52(s10) <== NOT EXECUTED
4000c364: 00e787b3 add a5,a5,a4 <== NOT EXECUTED
4000c368: 41078433 sub s0,a5,a6 <== NOT EXECUTED
4000c36c: 008a7463 bgeu s4,s0,4000c374 <jffs2_scan_medium+0x4fc> <== NOT EXECUTED
4000c370: 00001437 lui s0,0x1 <== NOT EXECUTED
if (!buf_len) {
4000c374: cd0782e3 beq a5,a6,4000c038 <jffs2_scan_medium+0x1c0> <== NOT EXECUTED
ret = jffs2_flash_read(c, ofs, len, &retlen, buf);
4000c378: 000d8713 mv a4,s11 <== NOT EXECUTED
4000c37c: 02010693 addi a3,sp,32 <== NOT EXECUTED
4000c380: 00040613 mv a2,s0 <== NOT EXECUTED
4000c384: 00080593 mv a1,a6 <== NOT EXECUTED
4000c388: 000d0513 mv a0,s10 <== NOT EXECUTED
4000c38c: 01012823 sw a6,16(sp) <== NOT EXECUTED
4000c390: de8ff0ef jal ra,4000b978 <jffs2_flash_read> <== NOT EXECUTED
4000c394: 00050713 mv a4,a0 <== NOT EXECUTED
if (ret) {
4000c398: ce0510e3 bnez a0,4000c078 <jffs2_scan_medium+0x200> <== NOT EXECUTED
if (retlen < len) {
4000c39c: 02012783 lw a5,32(sp) <== NOT EXECUTED
4000c3a0: 01012803 lw a6,16(sp) <== NOT EXECUTED
4000c3a4: fff00893 li a7,-1 <== NOT EXECUTED
4000c3a8: 3a87e863 bltu a5,s0,4000c758 <jffs2_scan_medium+0x8e0> <== NOT EXECUTED
if (err)
4000c3ac: 00040713 mv a4,s0 <== NOT EXECUTED
4000c3b0: 00080493 mv s1,a6 <== NOT EXECUTED
4000c3b4: f9dff06f j 4000c350 <jffs2_scan_medium+0x4d8> <== NOT EXECUTED
pr_warn("Eep. ofs 0x%08x not word-aligned!\n", ofs);
4000c3b8: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000c3bc: 000c8593 mv a1,s9 <== NOT EXECUTED
4000c3c0: c2450513 addi a0,a0,-988 # 4001fc24 <__func__.0+0x5c> <== NOT EXECUTED
4000c3c4: 829ff0ef jal ra,4000bbec <jffs2_printk> <== NOT EXECUTED
while(ofs < jeb->offset + c->sector_size) {
4000c3c8: 034d2703 lw a4,52(s10) <== NOT EXECUTED
4000c3cc: 00cc2783 lw a5,12(s8) <== NOT EXECUTED
ofs = PAD(ofs);
4000c3d0: 003c8313 addi t1,s9,3 <== NOT EXECUTED
4000c3d4: ffc37c93 andi s9,t1,-4 <== NOT EXECUTED
while(ofs < jeb->offset + c->sector_size) {
4000c3d8: 00f70733 add a4,a4,a5 <== NOT EXECUTED
4000c3dc: baece0e3 bltu s9,a4,4000bf7c <jffs2_scan_medium+0x104> <== NOT EXECUTED
4000c3e0: c59ff06f j 4000c038 <jffs2_scan_medium+0x1c0> <== NOT EXECUTED
if ((err = jffs2_prealloc_raw_node_refs(c, jeb, 1)))
4000c3e4: 00100613 li a2,1 <== NOT EXECUTED
4000c3e8: 000c0593 mv a1,s8 <== NOT EXECUTED
4000c3ec: 000d0513 mv a0,s10 <== NOT EXECUTED
4000c3f0: cbcf80ef jal ra,400048ac <jffs2_prealloc_raw_node_refs> <== NOT EXECUTED
4000c3f4: 00050713 mv a4,a0 <== NOT EXECUTED
4000c3f8: c80510e3 bnez a0,4000c078 <jffs2_scan_medium+0x200> <== NOT EXECUTED
if ((err = jffs2_scan_dirty_space(c, jeb, ofs)))
4000c3fc: 000c8613 mv a2,s9 <== NOT EXECUTED
4000c400: 000c0593 mv a1,s8 <== NOT EXECUTED
4000c404: 000d0513 mv a0,s10 <== NOT EXECUTED
4000c408: b40f90ef jal ra,40005748 <jffs2_scan_dirty_space> <== NOT EXECUTED
4000c40c: 00050713 mv a4,a0 <== NOT EXECUTED
4000c410: c60514e3 bnez a0,4000c078 <jffs2_scan_medium+0x200> <== NOT EXECUTED
while(ofs < jeb->offset + c->sector_size) {
4000c414: 034d2603 lw a2,52(s10) <== NOT EXECUTED
4000c418: b4dff06f j 4000bf64 <jffs2_scan_medium+0xec> <== NOT EXECUTED
pr_warn("ofs 0x%08x has already been seen. Skipping\n",
4000c41c: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000c420: 000c8593 mv a1,s9 <== NOT EXECUTED
4000c424: c5450513 addi a0,a0,-940 # 4001fc54 <__func__.0+0x8c> <== NOT EXECUTED
4000c428: fc4ff0ef jal ra,4000bbec <jffs2_printk> <== NOT EXECUTED
if ((err = jffs2_scan_dirty_space(c, jeb, 4)))
4000c42c: 00400613 li a2,4 <== NOT EXECUTED
4000c430: 000c0593 mv a1,s8 <== NOT EXECUTED
4000c434: 000d0513 mv a0,s10 <== NOT EXECUTED
4000c438: b10f90ef jal ra,40005748 <jffs2_scan_dirty_space> <== NOT EXECUTED
4000c43c: 00050713 mv a4,a0 <== NOT EXECUTED
4000c440: c2051ce3 bnez a0,4000c078 <jffs2_scan_medium+0x200> <== NOT EXECUTED
while(ofs < jeb->offset + c->sector_size) {
4000c444: 034d2703 lw a4,52(s10) <== NOT EXECUTED
4000c448: 00cc2783 lw a5,12(s8) <== NOT EXECUTED
ofs += 4;
4000c44c: 004c8c93 addi s9,s9,4 <== NOT EXECUTED
while(ofs < jeb->offset + c->sector_size) {
4000c450: 00f70733 add a4,a4,a5 <== NOT EXECUTED
4000c454: b2ece4e3 bltu s9,a4,4000bf7c <jffs2_scan_medium+0x104> <== NOT EXECUTED
4000c458: be1ff06f j 4000c038 <jffs2_scan_medium+0x1c0> <== NOT EXECUTED
ret = file_dirty(c, jeb);
4000c45c: 000c0593 mv a1,s8 <== NOT EXECUTED
4000c460: 000d0513 mv a0,s10 <== NOT EXECUTED
4000c464: fc8ff0ef jal ra,4000bc2c <file_dirty> <== NOT EXECUTED
4000c468: 00050713 mv a4,a0 <== NOT EXECUTED
if (ret)
4000c46c: c8050ee3 beqz a0,4000c108 <jffs2_scan_medium+0x290> <== NOT EXECUTED
4000c470: d01ff06f j 4000c170 <jffs2_scan_medium+0x2f8> <== NOT EXECUTED
pr_warn("Empty flash at 0x%08x ends at 0x%08x\n",
4000c474: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000c478: 00080613 mv a2,a6 <== NOT EXECUTED
4000c47c: 000c8593 mv a1,s9 <== NOT EXECUTED
4000c480: c8c50513 addi a0,a0,-884 # 4001fc8c <__func__.0+0xc4> <== NOT EXECUTED
4000c484: 01012823 sw a6,16(sp) <== NOT EXECUTED
4000c488: f64ff0ef jal ra,4000bbec <jffs2_printk> <== NOT EXECUTED
if ((err = jffs2_scan_dirty_space(c, jeb, ofs-empty_start)))
4000c48c: 01012803 lw a6,16(sp) <== NOT EXECUTED
4000c490: 000c0593 mv a1,s8 <== NOT EXECUTED
4000c494: 000d0513 mv a0,s10 <== NOT EXECUTED
4000c498: 41980633 sub a2,a6,s9 <== NOT EXECUTED
4000c49c: aacf90ef jal ra,40005748 <jffs2_scan_dirty_space> <== NOT EXECUTED
4000c4a0: 00050713 mv a4,a0 <== NOT EXECUTED
4000c4a4: bc051ae3 bnez a0,4000c078 <jffs2_scan_medium+0x200> <== NOT EXECUTED
while(ofs < jeb->offset + c->sector_size) {
4000c4a8: 034d2703 lw a4,52(s10) <== NOT EXECUTED
4000c4ac: 00cc2783 lw a5,12(s8) <== NOT EXECUTED
4000c4b0: 01012803 lw a6,16(sp) <== NOT EXECUTED
4000c4b4: 000c8a13 mv s4,s9 <== NOT EXECUTED
4000c4b8: 00f70733 add a4,a4,a5 <== NOT EXECUTED
4000c4bc: 00080c93 mv s9,a6 <== NOT EXECUTED
4000c4c0: aaeceee3 bltu s9,a4,4000bf7c <jffs2_scan_medium+0x104> <== NOT EXECUTED
4000c4c4: b75ff06f j 4000c038 <jffs2_scan_medium+0x1c0> <== NOT EXECUTED
noisy_printk(&noise, "%s(): Magic bitmask 0x%04x not found at 0x%08x: 0x%04x instead\n",
4000c4c8: 400205b7 lui a1,0x40020 <== NOT EXECUTED
4000c4cc: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000c4d0: fffb0b13 addi s6,s6,-1 <== NOT EXECUTED
4000c4d4: 000c8693 mv a3,s9 <== NOT EXECUTED
4000c4d8: 2e458593 addi a1,a1,740 # 400202e4 <__func__.3> <== NOT EXECUTED
4000c4dc: d8850513 addi a0,a0,-632 # 4001fd88 <__func__.0+0x1c0> <== NOT EXECUTED
4000c4e0: f0cff0ef jal ra,4000bbec <jffs2_printk> <== NOT EXECUTED
4000c4e4: b20b12e3 bnez s6,4000c008 <jffs2_scan_medium+0x190> <== NOT EXECUTED
noisy_printk(&noise, "%s(): Node at 0x%08x {0x%04x, 0x%04x, 0x%08x) has invalid CRC 0x%08x (calculated 0x%08x)\n",
4000c4e8: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000c4ec: dd450513 addi a0,a0,-556 # 4001fdd4 <__func__.0+0x20c> <== NOT EXECUTED
4000c4f0: 01c0006f j 4000c50c <jffs2_scan_medium+0x694> <== NOT EXECUTED
pr_warn("Old JFFS2 bitmask found at 0x%08x\n", ofs);
4000c4f4: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000c4f8: 000c8593 mv a1,s9 <== NOT EXECUTED
4000c4fc: d1050513 addi a0,a0,-752 # 4001fd10 <__func__.0+0x148> <== NOT EXECUTED
4000c500: eecff0ef jal ra,4000bbec <jffs2_printk> <== NOT EXECUTED
pr_warn("You cannot use older JFFS2 filesystems with newer kernels\n");
4000c504: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000c508: d4050513 addi a0,a0,-704 # 4001fd40 <__func__.0+0x178> <== NOT EXECUTED
noisy_printk(&noise, "%s(): Node at 0x%08x {0x%04x, 0x%04x, 0x%08x) has invalid CRC 0x%08x (calculated 0x%08x)\n",
4000c50c: ee0ff0ef jal ra,4000bbec <jffs2_printk> <== NOT EXECUTED
4000c510: af9ff06f j 4000c008 <jffs2_scan_medium+0x190> <== NOT EXECUTED
4000c514: 01f12823 sw t6,16(sp) <== NOT EXECUTED
crcnode.nodetype = cpu_to_je16( je16_to_cpu(node->nodetype) | JFFS2_NODE_ACCURATE);
4000c518: 003a4703 lbu a4,3(s4) # 1003 <_ISR_Stack_size+0x3> <== NOT EXECUTED
4000c51c: 002a4603 lbu a2,2(s4) <== NOT EXECUTED
crcnode.totlen = node->totlen;
4000c520: 005a4803 lbu a6,5(s4) <== NOT EXECUTED
4000c524: 006a4683 lbu a3,6(s4) <== NOT EXECUTED
crcnode.magic = node->magic;
4000c528: 000a4383 lbu t2,0(s4) <== NOT EXECUTED
4000c52c: 001a4283 lbu t0,1(s4) <== NOT EXECUTED
crcnode.totlen = node->totlen;
4000c530: 004a4883 lbu a7,4(s4) <== NOT EXECUTED
4000c534: 007a4083 lbu ra,7(s4) <== NOT EXECUTED
crcnode.nodetype = cpu_to_je16( je16_to_cpu(node->nodetype) | JFFS2_NODE_ACCURATE);
4000c538: 00871713 slli a4,a4,0x8 <== NOT EXECUTED
4000c53c: 000027b7 lui a5,0x2 <== NOT EXECUTED
4000c540: 00c76733 or a4,a4,a2 <== NOT EXECUTED
4000c544: 00f76733 or a4,a4,a5 <== NOT EXECUTED
hdr_crc = crc32(0, &crcnode, sizeof(crcnode)-4);
4000c548: 00800613 li a2,8 <== NOT EXECUTED
4000c54c: 02410593 addi a1,sp,36 <== NOT EXECUTED
4000c550: 00000513 li a0,0 <== NOT EXECUTED
crcnode.nodetype = cpu_to_je16( je16_to_cpu(node->nodetype) | JFFS2_NODE_ACCURATE);
4000c554: 02e11323 sh a4,38(sp) <== NOT EXECUTED
crcnode.totlen = node->totlen;
4000c558: 030104a3 sb a6,41(sp) <== NOT EXECUTED
4000c55c: 02d10523 sb a3,42(sp) <== NOT EXECUTED
crcnode.magic = node->magic;
4000c560: 02710223 sb t2,36(sp) <== NOT EXECUTED
4000c564: 025102a3 sb t0,37(sp) <== NOT EXECUTED
crcnode.totlen = node->totlen;
4000c568: 03110423 sb a7,40(sp) <== NOT EXECUTED
4000c56c: 021105a3 sb ra,43(sp) <== NOT EXECUTED
hdr_crc = crc32(0, &crcnode, sizeof(crcnode)-4);
4000c570: f21fd0ef jal ra,4000a490 <cyg_crc32_accumulate> <== NOT EXECUTED
if (hdr_crc != je32_to_cpu(node->hdr_crc)) {
4000c574: 009a4683 lbu a3,9(s4) <== NOT EXECUTED
4000c578: 008a4583 lbu a1,8(s4) <== NOT EXECUTED
4000c57c: 00aa4703 lbu a4,10(s4) <== NOT EXECUTED
4000c580: 00ba4603 lbu a2,11(s4) <== NOT EXECUTED
4000c584: 00869693 slli a3,a3,0x8 <== NOT EXECUTED
4000c588: 00b6e6b3 or a3,a3,a1 <== NOT EXECUTED
4000c58c: 01071713 slli a4,a4,0x10 <== NOT EXECUTED
4000c590: 00d76733 or a4,a4,a3 <== NOT EXECUTED
4000c594: 01861693 slli a3,a2,0x18 <== NOT EXECUTED
4000c598: 00e6e833 or a6,a3,a4 <== NOT EXECUTED
4000c59c: 01012f83 lw t6,16(sp) <== NOT EXECUTED
4000c5a0: 000027b7 lui a5,0x2 <== NOT EXECUTED
4000c5a4: 0b050863 beq a0,a6,4000c654 <jffs2_scan_medium+0x7dc> <== NOT EXECUTED
noisy_printk(&noise, "%s(): Node at 0x%08x {0x%04x, 0x%04x, 0x%08x) has invalid CRC 0x%08x (calculated 0x%08x)\n",
4000c5a8: a60b00e3 beqz s6,4000c008 <jffs2_scan_medium+0x190> <== NOT EXECUTED
4000c5ac: 005a4603 lbu a2,5(s4) <== NOT EXECUTED
4000c5b0: 006a4883 lbu a7,6(s4) <== NOT EXECUTED
4000c5b4: 004a4383 lbu t2,4(s4) <== NOT EXECUTED
4000c5b8: 001a4583 lbu a1,1(s4) <== NOT EXECUTED
4000c5bc: 007a4283 lbu t0,7(s4) <== NOT EXECUTED
4000c5c0: 003a4f83 lbu t6,3(s4) <== NOT EXECUTED
4000c5c4: 000a4683 lbu a3,0(s4) <== NOT EXECUTED
4000c5c8: 00861793 slli a5,a2,0x8 <== NOT EXECUTED
4000c5cc: 002a4703 lbu a4,2(s4) <== NOT EXECUTED
4000c5d0: 01089613 slli a2,a7,0x10 <== NOT EXECUTED
4000c5d4: 00859593 slli a1,a1,0x8 <== NOT EXECUTED
4000c5d8: 0077e7b3 or a5,a5,t2 <== NOT EXECUTED
4000c5dc: 00f667b3 or a5,a2,a5 <== NOT EXECUTED
4000c5e0: 01829293 slli t0,t0,0x18 <== NOT EXECUTED
4000c5e4: 008f9f93 slli t6,t6,0x8 <== NOT EXECUTED
4000c5e8: 00050893 mv a7,a0 <== NOT EXECUTED
4000c5ec: 00d5e6b3 or a3,a1,a3 <== NOT EXECUTED
4000c5f0: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000c5f4: 400205b7 lui a1,0x40020 <== NOT EXECUTED
4000c5f8: fffb0b13 addi s6,s6,-1 <== NOT EXECUTED
4000c5fc: 00f2e7b3 or a5,t0,a5 <== NOT EXECUTED
4000c600: 00efe733 or a4,t6,a4 <== NOT EXECUTED
4000c604: 000c8613 mv a2,s9 <== NOT EXECUTED
4000c608: 2e458593 addi a1,a1,740 # 400202e4 <__func__.3> <== NOT EXECUTED
4000c60c: e1c50513 addi a0,a0,-484 # 4001fe1c <__func__.0+0x254> <== NOT EXECUTED
4000c610: ddcff0ef jal ra,4000bbec <jffs2_printk> <== NOT EXECUTED
4000c614: 9e0b1ae3 bnez s6,4000c008 <jffs2_scan_medium+0x190> <== NOT EXECUTED
4000c618: ed1ff06f j 4000c4e8 <jffs2_scan_medium+0x670> <== NOT EXECUTED
if (buf_ofs == jeb->offset && jeb->used_size == PAD(c->cleanmarker_size) &&
4000c61c: 014d2683 lw a3,20(s10) <== NOT EXECUTED
4000c620: 014c2603 lw a2,20(s8) <== NOT EXECUTED
4000c624: 00368713 addi a4,a3,3 <== NOT EXECUTED
4000c628: ffc77713 andi a4,a4,-4 <== NOT EXECUTED
4000c62c: d2e61ae3 bne a2,a4,4000c360 <jffs2_scan_medium+0x4e8> <== NOT EXECUTED
4000c630: d20688e3 beqz a3,4000c360 <jffs2_scan_medium+0x4e8> <== NOT EXECUTED
c->cleanmarker_size && !jeb->dirty_size && !ref_next(jeb->first_node)) {
4000c634: 018c2703 lw a4,24(s8) <== NOT EXECUTED
4000c638: d20714e3 bnez a4,4000c360 <jffs2_scan_medium+0x4e8> <== NOT EXECUTED
4000c63c: 028c2683 lw a3,40(s8) <== NOT EXECUTED
if (ref->flash_offset == REF_LINK_NODE) {
4000c640: 00c6a703 lw a4,12(a3) <== NOT EXECUTED
4000c644: 3f170063 beq a4,a7,4000ca24 <jffs2_scan_medium+0xbac> <== NOT EXECUTED
if (ref->flash_offset == REF_EMPTY_NODE)
4000c648: ffe00693 li a3,-2 <== NOT EXECUTED
4000c64c: d0d71ae3 bne a4,a3,4000c360 <jffs2_scan_medium+0x4e8> <== NOT EXECUTED
4000c650: b85ff06f j 4000c1d4 <jffs2_scan_medium+0x35c> <== NOT EXECUTED
if (ofs + je32_to_cpu(node->totlen) > jeb->offset + c->sector_size) {
4000c654: 005a4583 lbu a1,5(s4) <== NOT EXECUTED
4000c658: 004a4803 lbu a6,4(s4) <== NOT EXECUTED
4000c65c: 006a4683 lbu a3,6(s4) <== NOT EXECUTED
4000c660: 007a4603 lbu a2,7(s4) <== NOT EXECUTED
4000c664: 00859593 slli a1,a1,0x8 <== NOT EXECUTED
4000c668: 00cc2503 lw a0,12(s8) <== NOT EXECUTED
4000c66c: 034d2703 lw a4,52(s10) <== NOT EXECUTED
4000c670: 0105e5b3 or a1,a1,a6 <== NOT EXECUTED
4000c674: 01069693 slli a3,a3,0x10 <== NOT EXECUTED
4000c678: 00b6e6b3 or a3,a3,a1 <== NOT EXECUTED
4000c67c: 01861613 slli a2,a2,0x18 <== NOT EXECUTED
4000c680: 00d66633 or a2,a2,a3 <== NOT EXECUTED
4000c684: 019606b3 add a3,a2,s9 <== NOT EXECUTED
4000c688: 00e50733 add a4,a0,a4 <== NOT EXECUTED
4000c68c: 26d76c63 bltu a4,a3,4000c904 <jffs2_scan_medium+0xa8c> <== NOT EXECUTED
if (!(je16_to_cpu(node->nodetype) & JFFS2_NODE_ACCURATE)) {
4000c690: 003a4583 lbu a1,3(s4) <== NOT EXECUTED
4000c694: 002a4803 lbu a6,2(s4) <== NOT EXECUTED
4000c698: 00859593 slli a1,a1,0x8 <== NOT EXECUTED
4000c69c: 0105e5b3 or a1,a1,a6 <== NOT EXECUTED
4000c6a0: 00f5f7b3 and a5,a1,a5 <== NOT EXECUTED
4000c6a4: 02078463 beqz a5,4000c6cc <jffs2_scan_medium+0x854> <== NOT EXECUTED
switch(je16_to_cpu(node->nodetype)) {
4000c6a8: 0000e7b7 lui a5,0xe <== NOT EXECUTED
4000c6ac: 00178813 addi a6,a5,1 # e001 <bsp_section_rodata_size+0x8f2d> <== NOT EXECUTED
4000c6b0: 2d058863 beq a1,a6,4000c980 <jffs2_scan_medium+0xb08> <== NOT EXECUTED
4000c6b4: 0eb86e63 bltu a6,a1,4000c7b0 <jffs2_scan_medium+0x938> <== NOT EXECUTED
4000c6b8: 000027b7 lui a5,0x2 <== NOT EXECUTED
4000c6bc: 00378693 addi a3,a5,3 # 2003 <bsp_section_rtemsstack_size+0x3> <== NOT EXECUTED
4000c6c0: 26d58663 beq a1,a3,4000c92c <jffs2_scan_medium+0xab4> <== NOT EXECUTED
4000c6c4: 00478693 addi a3,a5,4 <== NOT EXECUTED
4000c6c8: 54d59663 bne a1,a3,4000cc14 <jffs2_scan_medium+0xd9c> <== NOT EXECUTED
if ((err = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(node->totlen)))))
4000c6cc: 00360613 addi a2,a2,3 <== NOT EXECUTED
4000c6d0: ffc67613 andi a2,a2,-4 <== NOT EXECUTED
4000c6d4: 000c0593 mv a1,s8 <== NOT EXECUTED
4000c6d8: 000d0513 mv a0,s10 <== NOT EXECUTED
4000c6dc: 86cf90ef jal ra,40005748 <jffs2_scan_dirty_space> <== NOT EXECUTED
4000c6e0: 00050713 mv a4,a0 <== NOT EXECUTED
4000c6e4: 98051ae3 bnez a0,4000c078 <jffs2_scan_medium+0x200> <== NOT EXECUTED
ofs += PAD(je32_to_cpu(node->totlen));
4000c6e8: 005a4703 lbu a4,5(s4) <== NOT EXECUTED
4000c6ec: 004a4583 lbu a1,4(s4) <== NOT EXECUTED
4000c6f0: 006a4603 lbu a2,6(s4) <== NOT EXECUTED
4000c6f4: 00871793 slli a5,a4,0x8 <== NOT EXECUTED
4000c6f8: 00b7e7b3 or a5,a5,a1 <== NOT EXECUTED
4000c6fc: 007a4683 lbu a3,7(s4) <== NOT EXECUTED
4000c700: 01061613 slli a2,a2,0x10 <== NOT EXECUTED
4000c704: 00f66633 or a2,a2,a5 <== NOT EXECUTED
while(ofs < jeb->offset + c->sector_size) {
4000c708: 034d2703 lw a4,52(s10) <== NOT EXECUTED
4000c70c: 00cc2783 lw a5,12(s8) <== NOT EXECUTED
ofs += PAD(je32_to_cpu(node->totlen));
4000c710: 01869693 slli a3,a3,0x18 <== NOT EXECUTED
ofs += PAD(je32_to_cpu(node->totlen));
4000c714: 00c6e6b3 or a3,a3,a2 <== NOT EXECUTED
4000c718: 00368693 addi a3,a3,3 <== NOT EXECUTED
4000c71c: ffc6f693 andi a3,a3,-4 <== NOT EXECUTED
break;
4000c720: 000c8a13 mv s4,s9 <== NOT EXECUTED
while(ofs < jeb->offset + c->sector_size) {
4000c724: 00f70733 add a4,a4,a5 <== NOT EXECUTED
ofs += PAD(je32_to_cpu(node->totlen));
4000c728: 01968cb3 add s9,a3,s9 <== NOT EXECUTED
while(ofs < jeb->offset + c->sector_size) {
4000c72c: 84ece8e3 bltu s9,a4,4000bf7c <jffs2_scan_medium+0x104> <== NOT EXECUTED
4000c730: 909ff06f j 4000c038 <jffs2_scan_medium+0x1c0> <== NOT EXECUTED
pr_notice("Cowardly refusing to erase blocks on filesystem with no valid JFFS2 nodes\n");
4000c734: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000c738: 1ec50513 addi a0,a0,492 # 400201ec <__func__.0+0x624> <== NOT EXECUTED
4000c73c: cb0ff0ef jal ra,4000bbec <jffs2_printk> <== NOT EXECUTED
pr_notice("empty_blocks %d, bad_blocks %d, c->nr_blocks %d\n",
4000c740: 050d2683 lw a3,80(s10) <== NOT EXECUTED
4000c744: 00c12583 lw a1,12(sp) <== NOT EXECUTED
4000c748: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000c74c: 000b8613 mv a2,s7 <== NOT EXECUTED
4000c750: 24450513 addi a0,a0,580 # 40020244 <__func__.0+0x67c> <== NOT EXECUTED
4000c754: c98ff0ef jal ra,4000bbec <jffs2_printk> <== NOT EXECUTED
ret = -EIO;
4000c758: ffb00713 li a4,-5 <== NOT EXECUTED
goto out;
4000c75c: a15ff06f j 4000c170 <jffs2_scan_medium+0x2f8> <== NOT EXECUTED
if ((err = jffs2_scan_dirty_space(c, jeb, (jeb->offset + c->sector_size)-ofs)))
4000c760: 41960633 sub a2,a2,s9 <== NOT EXECUTED
4000c764: 000c0593 mv a1,s8 <== NOT EXECUTED
4000c768: 000d0513 mv a0,s10 <== NOT EXECUTED
4000c76c: fddf80ef jal ra,40005748 <jffs2_scan_dirty_space> <== NOT EXECUTED
4000c770: 00050713 mv a4,a0 <== NOT EXECUTED
4000c774: 900512e3 bnez a0,4000c078 <jffs2_scan_medium+0x200> <== NOT EXECUTED
if (jeb->wasted_size) {
4000c778: 01cc2783 lw a5,28(s8) <== NOT EXECUTED
4000c77c: 8c0792e3 bnez a5,4000c040 <jffs2_scan_medium+0x1c8> <== NOT EXECUTED
4000c780: 8e9ff06f j 4000c068 <jffs2_scan_medium+0x1f0> <== NOT EXECUTED
c->nextblock->wasted_size += c->nextblock->dirty_size;
4000c784: 01c72503 lw a0,28(a4) <== NOT EXECUTED
c->wasted_size += c->nextblock->dirty_size;
4000c788: 024d2583 lw a1,36(s10) <== NOT EXECUTED
c->dirty_size -= c->nextblock->dirty_size;
4000c78c: 020d2603 lw a2,32(s10) <== NOT EXECUTED
c->nextblock->wasted_size += c->nextblock->dirty_size;
4000c790: 00d50533 add a0,a0,a3 <== NOT EXECUTED
4000c794: 00a72e23 sw a0,28(a4) <== NOT EXECUTED
c->wasted_size += c->nextblock->dirty_size;
4000c798: 00d585b3 add a1,a1,a3 <== NOT EXECUTED
c->dirty_size -= c->nextblock->dirty_size;
4000c79c: 40d606b3 sub a3,a2,a3 <== NOT EXECUTED
c->wasted_size += c->nextblock->dirty_size;
4000c7a0: 02bd2223 sw a1,36(s10) <== NOT EXECUTED
c->dirty_size -= c->nextblock->dirty_size;
4000c7a4: 02dd2023 sw a3,32(s10) <== NOT EXECUTED
c->nextblock->dirty_size = 0;
4000c7a8: 00072c23 sw zero,24(a4) <== NOT EXECUTED
4000c7ac: 97dff06f j 4000c128 <jffs2_scan_medium+0x2b0> <== NOT EXECUTED
switch(je16_to_cpu(node->nodetype)) {
4000c7b0: 0000e7b7 lui a5,0xe <== NOT EXECUTED
4000c7b4: 00278693 addi a3,a5,2 # e002 <bsp_section_rodata_size+0x8f2e> <== NOT EXECUTED
4000c7b8: 50d59263 bne a1,a3,4000ccbc <jffs2_scan_medium+0xe44> <== NOT EXECUTED
if (buf_ofs + buf_len < ofs + sizeof(struct jffs2_raw_inode)) {
4000c7bc: 008486b3 add a3,s1,s0 <== NOT EXECUTED
4000c7c0: 044c8613 addi a2,s9,68 <== NOT EXECUTED
4000c7c4: 04c6f263 bgeu a3,a2,4000c808 <jffs2_scan_medium+0x990> <== NOT EXECUTED
buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs);
4000c7c8: 41970433 sub s0,a4,s9 <== NOT EXECUTED
4000c7cc: 000017b7 lui a5,0x1 <== NOT EXECUTED
4000c7d0: 0087f463 bgeu a5,s0,4000c7d8 <jffs2_scan_medium+0x960> <== NOT EXECUTED
4000c7d4: 00001437 lui s0,0x1 <== NOT EXECUTED
ret = jffs2_flash_read(c, ofs, len, &retlen, buf);
4000c7d8: 000d8713 mv a4,s11 <== NOT EXECUTED
4000c7dc: 02010693 addi a3,sp,32 <== NOT EXECUTED
4000c7e0: 00040613 mv a2,s0 <== NOT EXECUTED
4000c7e4: 000c8593 mv a1,s9 <== NOT EXECUTED
4000c7e8: 000d0513 mv a0,s10 <== NOT EXECUTED
4000c7ec: 98cff0ef jal ra,4000b978 <jffs2_flash_read> <== NOT EXECUTED
4000c7f0: 00050713 mv a4,a0 <== NOT EXECUTED
if (ret) {
4000c7f4: 880512e3 bnez a0,4000c078 <jffs2_scan_medium+0x200> <== NOT EXECUTED
if (retlen < len) {
4000c7f8: 02012783 lw a5,32(sp) <== NOT EXECUTED
4000c7fc: f487eee3 bltu a5,s0,4000c758 <jffs2_scan_medium+0x8e0> <== NOT EXECUTED
if (err)
4000c800: 000c8493 mv s1,s9 <== NOT EXECUTED
4000c804: 000d8a13 mv s4,s11 <== NOT EXECUTED
static int jffs2_scan_inode_node(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
struct jffs2_raw_inode *ri, uint32_t ofs, struct jffs2_summary *s)
{
struct jffs2_inode_cache *ic;
uint32_t crc, ino = je32_to_cpu(ri->ino);
4000c808: 00da4783 lbu a5,13(s4) <== NOT EXECUTED
4000c80c: 00ca4603 lbu a2,12(s4) <== NOT EXECUTED
4000c810: 00ea4703 lbu a4,14(s4) <== NOT EXECUTED
4000c814: 00fa4683 lbu a3,15(s4) <== NOT EXECUTED
4000c818: 00879793 slli a5,a5,0x8 <== NOT EXECUTED
4000c81c: 00c7e7b3 or a5,a5,a2 <== NOT EXECUTED
4000c820: 01071713 slli a4,a4,0x10 <== NOT EXECUTED
4000c824: 00f76733 or a4,a4,a5 <== NOT EXECUTED
4000c828: 01869793 slli a5,a3,0x18 <== NOT EXECUTED
4000c82c: 00e7e7b3 or a5,a5,a4 <== NOT EXECUTED
but we have to go _back_ to the flash in order to finish the CRC checking, etc.
Which means that the _full_ amount of time to get to proper write mode with GC
operational may actually be _longer_ than before. Sucks to be me. */
/* Check the node CRC in any case. */
crc = crc32(0, ri, sizeof(*ri)-8);
4000c830: 03c00613 li a2,60 <== NOT EXECUTED
4000c834: 000a0593 mv a1,s4 <== NOT EXECUTED
4000c838: 00000513 li a0,0 <== NOT EXECUTED
uint32_t crc, ino = je32_to_cpu(ri->ino);
4000c83c: 00f12823 sw a5,16(sp) <== NOT EXECUTED
crc = crc32(0, ri, sizeof(*ri)-8);
4000c840: c51fd0ef jal ra,4000a490 <cyg_crc32_accumulate> <== NOT EXECUTED
if (crc != je32_to_cpu(ri->node_crc)) {
4000c844: 041a4703 lbu a4,65(s4) <== NOT EXECUTED
4000c848: 040a4583 lbu a1,64(s4) <== NOT EXECUTED
4000c84c: 042a4603 lbu a2,66(s4) <== NOT EXECUTED
4000c850: 043a4683 lbu a3,67(s4) <== NOT EXECUTED
4000c854: 00871713 slli a4,a4,0x8 <== NOT EXECUTED
4000c858: 00b76733 or a4,a4,a1 <== NOT EXECUTED
4000c85c: 01061613 slli a2,a2,0x10 <== NOT EXECUTED
4000c860: 00e66633 or a2,a2,a4 <== NOT EXECUTED
4000c864: 01869693 slli a3,a3,0x18 <== NOT EXECUTED
4000c868: 00c6e6b3 or a3,a3,a2 <== NOT EXECUTED
4000c86c: 01012783 lw a5,16(sp) <== NOT EXECUTED
crc = crc32(0, ri, sizeof(*ri)-8);
4000c870: 00050713 mv a4,a0 <== NOT EXECUTED
if (crc != je32_to_cpu(ri->node_crc)) {
4000c874: 30d50463 beq a0,a3,4000cb7c <jffs2_scan_medium+0xd04> <== NOT EXECUTED
pr_notice("%s(): CRC failed on node at 0x%08x: Read 0x%08x, calculated 0x%08x\n",
4000c878: 400205b7 lui a1,0x40020 <== NOT EXECUTED
4000c87c: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000c880: 000c8613 mv a2,s9 <== NOT EXECUTED
4000c884: 2cc58593 addi a1,a1,716 # 400202cc <__func__.2> <== NOT EXECUTED
4000c888: f2450513 addi a0,a0,-220 # 4001ff24 <__func__.0+0x35c> <== NOT EXECUTED
4000c88c: b60ff0ef jal ra,4000bbec <jffs2_printk> <== NOT EXECUTED
jffs2_dbg(1, "Name for which CRC failed is (now) '%s', ino #%d\n",
fd->name, je32_to_cpu(rd->ino));
jffs2_free_full_dirent(fd);
/* FIXME: Why do we believe totlen? */
/* We believe totlen because the CRC on the node _header_ was OK, just the name failed. */
if ((err = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(rd->totlen)))))
4000c890: 005a4683 lbu a3,5(s4) <== NOT EXECUTED
4000c894: 004a4583 lbu a1,4(s4) <== NOT EXECUTED
4000c898: 006a4703 lbu a4,6(s4) <== NOT EXECUTED
4000c89c: 007a4603 lbu a2,7(s4) <== NOT EXECUTED
4000c8a0: 00869693 slli a3,a3,0x8 <== NOT EXECUTED
4000c8a4: 00b6e6b3 or a3,a3,a1 <== NOT EXECUTED
4000c8a8: 01071713 slli a4,a4,0x10 <== NOT EXECUTED
4000c8ac: 00d76733 or a4,a4,a3 <== NOT EXECUTED
4000c8b0: 01861613 slli a2,a2,0x18 <== NOT EXECUTED
4000c8b4: 00e66633 or a2,a2,a4 <== NOT EXECUTED
4000c8b8: 00360613 addi a2,a2,3 <== NOT EXECUTED
4000c8bc: ffc67613 andi a2,a2,-4 <== NOT EXECUTED
4000c8c0: 000c0593 mv a1,s8 <== NOT EXECUTED
4000c8c4: 000d0513 mv a0,s10 <== NOT EXECUTED
4000c8c8: e81f80ef jal ra,40005748 <jffs2_scan_dirty_space> <== NOT EXECUTED
4000c8cc: 00050713 mv a4,a0 <== NOT EXECUTED
4000c8d0: fa051463 bnez a0,4000c078 <jffs2_scan_medium+0x200> <== NOT EXECUTED
ofs += PAD(je32_to_cpu(node->totlen));
4000c8d4: 005a4703 lbu a4,5(s4) <== NOT EXECUTED
4000c8d8: 004a4583 lbu a1,4(s4) <== NOT EXECUTED
4000c8dc: 006a4603 lbu a2,6(s4) <== NOT EXECUTED
4000c8e0: 007a4683 lbu a3,7(s4) <== NOT EXECUTED
4000c8e4: 00871793 slli a5,a4,0x8 <== NOT EXECUTED
4000c8e8: 00b7e7b3 or a5,a5,a1 <== NOT EXECUTED
4000c8ec: 01061613 slli a2,a2,0x10 <== NOT EXECUTED
4000c8f0: 00f66633 or a2,a2,a5 <== NOT EXECUTED
while(ofs < jeb->offset + c->sector_size) {
4000c8f4: 00cc2703 lw a4,12(s8) <== NOT EXECUTED
4000c8f8: 034d2783 lw a5,52(s10) <== NOT EXECUTED
ofs += PAD(je32_to_cpu(node->totlen));
4000c8fc: 01869693 slli a3,a3,0x18 <== NOT EXECUTED
4000c900: e15ff06f j 4000c714 <jffs2_scan_medium+0x89c> <== NOT EXECUTED
pr_warn("Node at 0x%08x with length 0x%08x would run over the end of the erase block\n",
4000c904: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000c908: 000c8593 mv a1,s9 <== NOT EXECUTED
4000c90c: e8050513 addi a0,a0,-384 # 4001fe80 <__func__.0+0x2b8> <== NOT EXECUTED
4000c910: adcff0ef jal ra,4000bbec <jffs2_printk> <== NOT EXECUTED
pr_warn("Perhaps the file system was created with the wrong erase size?\n");
4000c914: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000c918: ed850513 addi a0,a0,-296 # 4001fed8 <__func__.0+0x310> <== NOT EXECUTED
4000c91c: bf1ff06f j 4000c50c <jffs2_scan_medium+0x694> <== NOT EXECUTED
for (i=0; i<c->nr_blocks; i++) {
4000c920: 00000793 li a5,0 <== NOT EXECUTED
uint32_t empty_blocks = 0, bad_blocks = 0;
4000c924: 00012623 sw zero,12(sp) <== NOT EXECUTED
4000c928: ff0ff06f j 4000c118 <jffs2_scan_medium+0x2a0> <== NOT EXECUTED
if (je32_to_cpu(node->totlen) != c->cleanmarker_size) {
4000c92c: 014d2683 lw a3,20(s10) <== NOT EXECUTED
4000c930: 01f12823 sw t6,16(sp) <== NOT EXECUTED
4000c934: 32d60063 beq a2,a3,4000cc54 <jffs2_scan_medium+0xddc> <== NOT EXECUTED
pr_notice("CLEANMARKER node found at 0x%08x has totlen 0x%x != normal 0x%x\n",
4000c938: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000c93c: 000c8593 mv a1,s9 <== NOT EXECUTED
4000c940: 06450513 addi a0,a0,100 # 40020064 <__func__.0+0x49c> <== NOT EXECUTED
4000c944: aa8ff0ef jal ra,4000bbec <jffs2_printk> <== NOT EXECUTED
if ((err = jffs2_scan_dirty_space(c, jeb, PAD(sizeof(struct jffs2_unknown_node)))))
4000c948: 00c00613 li a2,12 <== NOT EXECUTED
4000c94c: 000c0593 mv a1,s8 <== NOT EXECUTED
4000c950: 000d0513 mv a0,s10 <== NOT EXECUTED
4000c954: df5f80ef jal ra,40005748 <jffs2_scan_dirty_space> <== NOT EXECUTED
4000c958: 00050713 mv a4,a0 <== NOT EXECUTED
4000c95c: f0051e63 bnez a0,4000c078 <jffs2_scan_medium+0x200> <== NOT EXECUTED
while(ofs < jeb->offset + c->sector_size) {
4000c960: 00cc2703 lw a4,12(s8) <== NOT EXECUTED
4000c964: 034d2783 lw a5,52(s10) <== NOT EXECUTED
4000c968: 01012f83 lw t6,16(sp) <== NOT EXECUTED
4000c96c: 000c8a13 mv s4,s9 <== NOT EXECUTED
4000c970: 00f70733 add a4,a4,a5 <== NOT EXECUTED
4000c974: 000f8c93 mv s9,t6 <== NOT EXECUTED
4000c978: e0ece263 bltu s9,a4,4000bf7c <jffs2_scan_medium+0x104> <== NOT EXECUTED
4000c97c: ebcff06f j 4000c038 <jffs2_scan_medium+0x1c0> <== NOT EXECUTED
if (buf_ofs + buf_len < ofs + je32_to_cpu(node->totlen)) {
4000c980: 00848633 add a2,s1,s0 <== NOT EXECUTED
4000c984: 04d67263 bgeu a2,a3,4000c9c8 <jffs2_scan_medium+0xb50> <== NOT EXECUTED
buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs);
4000c988: 41970433 sub s0,a4,s9 <== NOT EXECUTED
4000c98c: 000017b7 lui a5,0x1 <== NOT EXECUTED
4000c990: 0087f463 bgeu a5,s0,4000c998 <jffs2_scan_medium+0xb20> <== NOT EXECUTED
4000c994: 00001437 lui s0,0x1 <== NOT EXECUTED
ret = jffs2_flash_read(c, ofs, len, &retlen, buf);
4000c998: 000d8713 mv a4,s11 <== NOT EXECUTED
4000c99c: 02010693 addi a3,sp,32 <== NOT EXECUTED
4000c9a0: 00040613 mv a2,s0 <== NOT EXECUTED
4000c9a4: 000c8593 mv a1,s9 <== NOT EXECUTED
4000c9a8: 000d0513 mv a0,s10 <== NOT EXECUTED
4000c9ac: fcdfe0ef jal ra,4000b978 <jffs2_flash_read> <== NOT EXECUTED
4000c9b0: 00050713 mv a4,a0 <== NOT EXECUTED
if (ret) {
4000c9b4: ec051263 bnez a0,4000c078 <jffs2_scan_medium+0x200> <== NOT EXECUTED
if (retlen < len) {
4000c9b8: 02012783 lw a5,32(sp) <== NOT EXECUTED
4000c9bc: d887eee3 bltu a5,s0,4000c758 <jffs2_scan_medium+0x8e0> <== NOT EXECUTED
if (err)
4000c9c0: 000c8493 mv s1,s9 <== NOT EXECUTED
4000c9c4: 000d8a13 mv s4,s11 <== NOT EXECUTED
crc = crc32(0, rd, sizeof(*rd)-8);
4000c9c8: 02000613 li a2,32 <== NOT EXECUTED
4000c9cc: 000a0593 mv a1,s4 <== NOT EXECUTED
4000c9d0: 00000513 li a0,0 <== NOT EXECUTED
4000c9d4: abdfd0ef jal ra,4000a490 <cyg_crc32_accumulate> <== NOT EXECUTED
if (crc != je32_to_cpu(rd->node_crc)) {
4000c9d8: 021a4703 lbu a4,33(s4) <== NOT EXECUTED
4000c9dc: 020a4583 lbu a1,32(s4) <== NOT EXECUTED
4000c9e0: 022a4603 lbu a2,34(s4) <== NOT EXECUTED
4000c9e4: 023a4683 lbu a3,35(s4) <== NOT EXECUTED
4000c9e8: 00871713 slli a4,a4,0x8 <== NOT EXECUTED
4000c9ec: 00b76733 or a4,a4,a1 <== NOT EXECUTED
4000c9f0: 01061613 slli a2,a2,0x10 <== NOT EXECUTED
4000c9f4: 00e66633 or a2,a2,a4 <== NOT EXECUTED
4000c9f8: 01869693 slli a3,a3,0x18 <== NOT EXECUTED
4000c9fc: 00c6e6b3 or a3,a3,a2 <== NOT EXECUTED
crc = crc32(0, rd, sizeof(*rd)-8);
4000ca00: 00050713 mv a4,a0 <== NOT EXECUTED
if (crc != je32_to_cpu(rd->node_crc)) {
4000ca04: 02d50863 beq a0,a3,4000ca34 <jffs2_scan_medium+0xbbc> <== NOT EXECUTED
pr_notice("%s(): Node CRC failed on node at 0x%08x: Read 0x%08x, calculated 0x%08x\n",
4000ca08: 400207b7 lui a5,0x40020 <== NOT EXECUTED
4000ca0c: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000ca10: 000c8613 mv a2,s9 <== NOT EXECUTED
4000ca14: 2b478593 addi a1,a5,692 # 400202b4 <__func__.1> <== NOT EXECUTED
4000ca18: f7450513 addi a0,a0,-140 # 4001ff74 <__func__.0+0x3ac> <== NOT EXECUTED
4000ca1c: 9d0ff0ef jal ra,4000bbec <jffs2_printk> <== NOT EXECUTED
if ((err = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(rd->totlen)))))
4000ca20: e71ff06f j 4000c890 <jffs2_scan_medium+0xa18> <== NOT EXECUTED
ref = ref->next_in_ino;
4000ca24: 0086a703 lw a4,8(a3) <== NOT EXECUTED
if (!ref)
4000ca28: fa070663 beqz a4,4000c1d4 <jffs2_scan_medium+0x35c> <== NOT EXECUTED
if (ref->flash_offset == REF_EMPTY_NODE)
4000ca2c: 00472703 lw a4,4(a4) <== NOT EXECUTED
4000ca30: c19ff06f j 4000c648 <jffs2_scan_medium+0x7d0> <== NOT EXECUTED
pseudo_random += je32_to_cpu(rd->version);
4000ca34: 011a4503 lbu a0,17(s4) <== NOT EXECUTED
4000ca38: 010a4583 lbu a1,16(s4) <== NOT EXECUTED
4000ca3c: 012a4683 lbu a3,18(s4) <== NOT EXECUTED
4000ca40: 013a4703 lbu a4,19(s4) <== NOT EXECUTED
4000ca44: 8bc18613 addi a2,gp,-1860 # 40042f94 <pseudo_random> <== NOT EXECUTED
4000ca48: 00851513 slli a0,a0,0x8 <== NOT EXECUTED
4000ca4c: 00062803 lw a6,0(a2) <== NOT EXECUTED
4000ca50: 00b56533 or a0,a0,a1 <== NOT EXECUTED
4000ca54: 01069693 slli a3,a3,0x10 <== NOT EXECUTED
checkedlen = strnlen(rd->name, rd->nsize);
4000ca58: 01ca4583 lbu a1,28(s4) <== NOT EXECUTED
pseudo_random += je32_to_cpu(rd->version);
4000ca5c: 00a6e6b3 or a3,a3,a0 <== NOT EXECUTED
4000ca60: 01871713 slli a4,a4,0x18 <== NOT EXECUTED
4000ca64: 00d76733 or a4,a4,a3 <== NOT EXECUTED
4000ca68: 01070733 add a4,a4,a6 <== NOT EXECUTED
checkedlen = strnlen(rd->name, rd->nsize);
4000ca6c: 028a0513 addi a0,s4,40 <== NOT EXECUTED
4000ca70: 00b12a23 sw a1,20(sp) <== NOT EXECUTED
4000ca74: 00a12823 sw a0,16(sp) <== NOT EXECUTED
pseudo_random += je32_to_cpu(rd->version);
4000ca78: 00e62023 sw a4,0(a2) <== NOT EXECUTED
checkedlen = strnlen(rd->name, rd->nsize);
4000ca7c: 5050f0ef jal ra,4001c780 <strnlen> <== NOT EXECUTED
if (checkedlen < rd->nsize) {
4000ca80: 01412583 lw a1,20(sp) <== NOT EXECUTED
checkedlen = strnlen(rd->name, rd->nsize);
4000ca84: 00050813 mv a6,a0 <== NOT EXECUTED
if (checkedlen < rd->nsize) {
4000ca88: 46b56e63 bltu a0,a1,4000cf04 <jffs2_scan_medium+0x108c> <== NOT EXECUTED
fd = jffs2_alloc_full_dirent(checkedlen+1);
4000ca8c: 00180513 addi a0,a6,1 <== NOT EXECUTED
4000ca90: 01012a23 sw a6,20(sp) <== NOT EXECUTED
4000ca94: dddf70ef jal ra,40004870 <jffs2_alloc_full_dirent> <== NOT EXECUTED
if (!fd) {
4000ca98: 2a050063 beqz a0,4000cd38 <jffs2_scan_medium+0xec0> <== NOT EXECUTED
memcpy(&fd->name, rd->name, checkedlen);
4000ca9c: 01412803 lw a6,20(sp) <== NOT EXECUTED
4000caa0: 01012583 lw a1,16(sp) <== NOT EXECUTED
4000caa4: 01550f93 addi t6,a0,21 <== NOT EXECUTED
4000caa8: 00080613 mv a2,a6 <== NOT EXECUTED
4000caac: 00a12c23 sw a0,24(sp) <== NOT EXECUTED
4000cab0: 000f8513 mv a0,t6 <== NOT EXECUTED
4000cab4: 53c0f0ef jal ra,4001bff0 <memcpy> <== NOT EXECUTED
fd->name[checkedlen] = 0;
4000cab8: 01412803 lw a6,20(sp) <== NOT EXECUTED
4000cabc: 01812883 lw a7,24(sp) <== NOT EXECUTED
crc = crc32(0, fd->name, rd->nsize);
4000cac0: 00050593 mv a1,a0 <== NOT EXECUTED
4000cac4: 00a12823 sw a0,16(sp) <== NOT EXECUTED
fd->name[checkedlen] = 0;
4000cac8: 01088733 add a4,a7,a6 <== NOT EXECUTED
4000cacc: 00070aa3 sb zero,21(a4) <== NOT EXECUTED
crc = crc32(0, fd->name, rd->nsize);
4000cad0: 01ca4603 lbu a2,28(s4) <== NOT EXECUTED
4000cad4: 00000513 li a0,0 <== NOT EXECUTED
fd->name[checkedlen] = 0;
4000cad8: 01012c23 sw a6,24(sp) <== NOT EXECUTED
4000cadc: 01112a23 sw a7,20(sp) <== NOT EXECUTED
crc = crc32(0, fd->name, rd->nsize);
4000cae0: 9b1fd0ef jal ra,4000a490 <cyg_crc32_accumulate> <== NOT EXECUTED
if (crc != je32_to_cpu(rd->name_crc)) {
4000cae4: 025a4703 lbu a4,37(s4) <== NOT EXECUTED
4000cae8: 024a4583 lbu a1,36(s4) <== NOT EXECUTED
4000caec: 026a4603 lbu a2,38(s4) <== NOT EXECUTED
4000caf0: 027a4683 lbu a3,39(s4) <== NOT EXECUTED
4000caf4: 00871713 slli a4,a4,0x8 <== NOT EXECUTED
4000caf8: 00b76733 or a4,a4,a1 <== NOT EXECUTED
4000cafc: 01061613 slli a2,a2,0x10 <== NOT EXECUTED
4000cb00: 00e66633 or a2,a2,a4 <== NOT EXECUTED
4000cb04: 01869693 slli a3,a3,0x18 <== NOT EXECUTED
4000cb08: 00c6e6b3 or a3,a3,a2 <== NOT EXECUTED
4000cb0c: 01012f83 lw t6,16(sp) <== NOT EXECUTED
4000cb10: 01412883 lw a7,20(sp) <== NOT EXECUTED
4000cb14: 01812803 lw a6,24(sp) <== NOT EXECUTED
crc = crc32(0, fd->name, rd->nsize);
4000cb18: 00050713 mv a4,a0 <== NOT EXECUTED
if (crc != je32_to_cpu(rd->name_crc)) {
4000cb1c: 24d50c63 beq a0,a3,4000cd74 <jffs2_scan_medium+0xefc> <== NOT EXECUTED
pr_notice("%s(): Name CRC failed on node at 0x%08x: Read 0x%08x, calculated 0x%08x\n",
4000cb20: 400207b7 lui a5,0x40020 <== NOT EXECUTED
4000cb24: 2b478593 addi a1,a5,692 # 400202b4 <__func__.1> <== NOT EXECUTED
4000cb28: 400207b7 lui a5,0x40020 <== NOT EXECUTED
4000cb2c: 000c8613 mv a2,s9 <== NOT EXECUTED
4000cb30: 01078513 addi a0,a5,16 # 40020010 <__func__.0+0x448> <== NOT EXECUTED
4000cb34: 01112823 sw a7,16(sp) <== NOT EXECUTED
4000cb38: 8b4ff0ef jal ra,4000bbec <jffs2_printk> <== NOT EXECUTED
jffs2_free_full_dirent(fd);
4000cb3c: 01012883 lw a7,16(sp) <== NOT EXECUTED
4000cb40: 00088513 mv a0,a7 <== NOT EXECUTED
4000cb44: d35f70ef jal ra,40004878 <jffs2_free_full_dirent> <== NOT EXECUTED
4000cb48: d49ff06f j 4000c890 <jffs2_scan_medium+0xa18> <== NOT EXECUTED
pr_warn("%s(): unknown block state\n", __func__);
4000cb4c: 40020437 lui s0,0x40020 <== NOT EXECUTED
4000cb50: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000cb54: 2fc40593 addi a1,s0,764 # 400202fc <__func__.4> <== NOT EXECUTED
4000cb58: 19850513 addi a0,a0,408 # 40020198 <__func__.0+0x5d0> <== NOT EXECUTED
4000cb5c: 890ff0ef jal ra,4000bbec <jffs2_printk> <== NOT EXECUTED
BUG();
4000cb60: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
4000cb64: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000cb68: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
4000cb6c: 2fc40613 addi a2,s0,764 <== NOT EXECUTED
4000cb70: 0f100593 li a1,241 <== NOT EXECUTED
4000cb74: 1c050513 addi a0,a0,448 # 400201c0 <__func__.0+0x5f8> <== NOT EXECUTED
4000cb78: 728000ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
ic = jffs2_get_ino_cache(c, ino);
4000cb7c: 00078593 mv a1,a5 <== NOT EXECUTED
4000cb80: 000d0513 mv a0,s10 <== NOT EXECUTED
4000cb84: 00f12823 sw a5,16(sp) <== NOT EXECUTED
4000cb88: eb0f80ef jal ra,40005238 <jffs2_get_ino_cache> <== NOT EXECUTED
if (!ic) {
4000cb8c: 01012783 lw a5,16(sp) <== NOT EXECUTED
ic = jffs2_get_ino_cache(c, ino);
4000cb90: 00050713 mv a4,a0 <== NOT EXECUTED
if (!ic) {
4000cb94: 18050863 beqz a0,4000cd24 <jffs2_scan_medium+0xeac> <== NOT EXECUTED
jffs2_link_node_ref(c, jeb, ofs | REF_UNCHECKED, PAD(je32_to_cpu(ri->totlen)), ic);
4000cb98: 005a4583 lbu a1,5(s4) <== NOT EXECUTED
4000cb9c: 004a4503 lbu a0,4(s4) <== NOT EXECUTED
4000cba0: 006a4603 lbu a2,6(s4) <== NOT EXECUTED
4000cba4: 007a4683 lbu a3,7(s4) <== NOT EXECUTED
4000cba8: 00859593 slli a1,a1,0x8 <== NOT EXECUTED
4000cbac: 00a5e5b3 or a1,a1,a0 <== NOT EXECUTED
4000cbb0: 01061613 slli a2,a2,0x10 <== NOT EXECUTED
4000cbb4: 00b66633 or a2,a2,a1 <== NOT EXECUTED
4000cbb8: 01869693 slli a3,a3,0x18 <== NOT EXECUTED
4000cbbc: 00c6e6b3 or a3,a3,a2 <== NOT EXECUTED
4000cbc0: 00368693 addi a3,a3,3 <== NOT EXECUTED
4000cbc4: ffc6f693 andi a3,a3,-4 <== NOT EXECUTED
4000cbc8: 000c8613 mv a2,s9 <== NOT EXECUTED
4000cbcc: 000c0593 mv a1,s8 <== NOT EXECUTED
4000cbd0: 000d0513 mv a0,s10 <== NOT EXECUTED
4000cbd4: 995f80ef jal ra,40005568 <jffs2_link_node_ref> <== NOT EXECUTED
pseudo_random += je32_to_cpu(ri->version);
4000cbd8: 011a4603 lbu a2,17(s4) <== NOT EXECUTED
4000cbdc: 010a4803 lbu a6,16(s4) <== NOT EXECUTED
4000cbe0: 012a4683 lbu a3,18(s4) <== NOT EXECUTED
4000cbe4: 013a4703 lbu a4,19(s4) <== NOT EXECUTED
4000cbe8: 8bc18593 addi a1,gp,-1860 # 40042f94 <pseudo_random> <== NOT EXECUTED
4000cbec: 00861613 slli a2,a2,0x8 <== NOT EXECUTED
4000cbf0: 0005a503 lw a0,0(a1) <== NOT EXECUTED
4000cbf4: 01066633 or a2,a2,a6 <== NOT EXECUTED
4000cbf8: 01069693 slli a3,a3,0x10 <== NOT EXECUTED
4000cbfc: 00c6e6b3 or a3,a3,a2 <== NOT EXECUTED
4000cc00: 01871713 slli a4,a4,0x18 <== NOT EXECUTED
4000cc04: 00d76733 or a4,a4,a3 <== NOT EXECUTED
4000cc08: 00a70733 add a4,a4,a0 <== NOT EXECUTED
4000cc0c: 00e5a023 sw a4,0(a1) <== NOT EXECUTED
if (err) return err;
4000cc10: cc5ff06f j 4000c8d4 <jffs2_scan_medium+0xa5c> <== NOT EXECUTED
switch (je16_to_cpu(node->nodetype) & JFFS2_COMPAT_MASK) {
4000cc14: ffffc6b7 lui a3,0xffffc <== NOT EXECUTED
4000cc18: 00d5f6b3 and a3,a1,a3 <== NOT EXECUTED
4000cc1c: 00008537 lui a0,0x8 <== NOT EXECUTED
4000cc20: 0aa68a63 beq a3,a0,4000ccd4 <jffs2_scan_medium+0xe5c> <== NOT EXECUTED
4000cc24: 08d56863 bltu a0,a3,4000ccb4 <jffs2_scan_medium+0xe3c> <== NOT EXECUTED
4000cc28: aa0682e3 beqz a3,4000c6cc <jffs2_scan_medium+0x854> <== NOT EXECUTED
4000cc2c: 000045b7 lui a1,0x4 <== NOT EXECUTED
4000cc30: 06b69c63 bne a3,a1,4000cca8 <jffs2_scan_medium+0xe30> <== NOT EXECUTED
jffs2_link_node_ref(c, jeb, ofs | REF_PRISTINE, PAD(je32_to_cpu(node->totlen)), NULL);
4000cc34: 00360693 addi a3,a2,3 <== NOT EXECUTED
4000cc38: 00000713 li a4,0 <== NOT EXECUTED
4000cc3c: 002ce613 ori a2,s9,2 <== NOT EXECUTED
4000cc40: ffc6f693 andi a3,a3,-4 <== NOT EXECUTED
4000cc44: 000c0593 mv a1,s8 <== NOT EXECUTED
4000cc48: 000d0513 mv a0,s10 <== NOT EXECUTED
4000cc4c: 91df80ef jal ra,40005568 <jffs2_link_node_ref> <== NOT EXECUTED
4000cc50: c85ff06f j 4000c8d4 <jffs2_scan_medium+0xa5c> <== NOT EXECUTED
} else if (jeb->first_node) {
4000cc54: 028c2783 lw a5,40(s8) <== NOT EXECUTED
4000cc58: 0e078463 beqz a5,4000cd40 <jffs2_scan_medium+0xec8> <== NOT EXECUTED
pr_notice("CLEANMARKER node found at 0x%08x, not first node in block (0x%08x)\n",
4000cc5c: 00050613 mv a2,a0 <== NOT EXECUTED
4000cc60: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000cc64: 000c8593 mv a1,s9 <== NOT EXECUTED
4000cc68: 0b050513 addi a0,a0,176 # 400200b0 <__func__.0+0x4e8> <== NOT EXECUTED
4000cc6c: f81fe0ef jal ra,4000bbec <jffs2_printk> <== NOT EXECUTED
if ((err = jffs2_scan_dirty_space(c, jeb, PAD(sizeof(struct jffs2_unknown_node)))))
4000cc70: 00c00613 li a2,12 <== NOT EXECUTED
4000cc74: 000c0593 mv a1,s8 <== NOT EXECUTED
4000cc78: 000d0513 mv a0,s10 <== NOT EXECUTED
4000cc7c: acdf80ef jal ra,40005748 <jffs2_scan_dirty_space> <== NOT EXECUTED
4000cc80: 00050713 mv a4,a0 <== NOT EXECUTED
4000cc84: be051a63 bnez a0,4000c078 <jffs2_scan_medium+0x200> <== NOT EXECUTED
while(ofs < jeb->offset + c->sector_size) {
4000cc88: 034d2703 lw a4,52(s10) <== NOT EXECUTED
4000cc8c: 00cc2783 lw a5,12(s8) <== NOT EXECUTED
4000cc90: 01012f83 lw t6,16(sp) <== NOT EXECUTED
4000cc94: 000c8a13 mv s4,s9 <== NOT EXECUTED
4000cc98: 00f70733 add a4,a4,a5 <== NOT EXECUTED
4000cc9c: 000f8c93 mv s9,t6 <== NOT EXECUTED
4000cca0: acecee63 bltu s9,a4,4000bf7c <jffs2_scan_medium+0x104> <== NOT EXECUTED
4000cca4: b94ff06f j 4000c038 <jffs2_scan_medium+0x1c0> <== NOT EXECUTED
4000cca8: 000c8a13 mv s4,s9 <== NOT EXECUTED
4000ccac: acece863 bltu s9,a4,4000bf7c <jffs2_scan_medium+0x104> <== NOT EXECUTED
4000ccb0: b88ff06f j 4000c038 <jffs2_scan_medium+0x1c0> <== NOT EXECUTED
4000ccb4: 0000c7b7 lui a5,0xc <== NOT EXECUTED
4000ccb8: fef698e3 bne a3,a5,4000cca8 <jffs2_scan_medium+0xe30> <== NOT EXECUTED
pr_notice("Incompatible feature node (0x%04x) found at offset 0x%08x\n",
4000ccbc: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000ccc0: 000c8613 mv a2,s9 <== NOT EXECUTED
4000ccc4: 15050513 addi a0,a0,336 # 40020150 <__func__.0+0x588> <== NOT EXECUTED
4000ccc8: f25fe0ef jal ra,4000bbec <jffs2_printk> <== NOT EXECUTED
return -EINVAL;
4000cccc: fea00713 li a4,-22 <== NOT EXECUTED
4000ccd0: ca0ff06f j 4000c170 <jffs2_scan_medium+0x2f8> <== NOT EXECUTED
pr_notice("Read-only compatible feature node (0x%04x) found at offset 0x%08x\n",
4000ccd4: 40020537 lui a0,0x40020 <== NOT EXECUTED
4000ccd8: 000c8613 mv a2,s9 <== NOT EXECUTED
4000ccdc: 10050513 addi a0,a0,256 # 40020100 <__func__.0+0x538> <== NOT EXECUTED
4000cce0: f0dfe0ef jal ra,4000bbec <jffs2_printk> <== NOT EXECUTED
c->flags |= JFFS2_SB_FLAG_RO;
4000cce4: 00cd2703 lw a4,12(s10) <== NOT EXECUTED
if (!(jffs2_is_readonly(c)))
4000cce8: 0ecd4683 lbu a3,236(s10) <== NOT EXECUTED
c->flags |= JFFS2_SB_FLAG_RO;
4000ccec: 00176713 ori a4,a4,1 <== NOT EXECUTED
4000ccf0: 00ed2623 sw a4,12(s10) <== NOT EXECUTED
if (!(jffs2_is_readonly(c)))
4000ccf4: 06068863 beqz a3,4000cd64 <jffs2_scan_medium+0xeec> <== NOT EXECUTED
if ((err = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(node->totlen)))))
4000ccf8: 005a4683 lbu a3,5(s4) <== NOT EXECUTED
4000ccfc: 004a4583 lbu a1,4(s4) <== NOT EXECUTED
4000cd00: 006a4703 lbu a4,6(s4) <== NOT EXECUTED
4000cd04: 007a4603 lbu a2,7(s4) <== NOT EXECUTED
4000cd08: 00869693 slli a3,a3,0x8 <== NOT EXECUTED
4000cd0c: 00b6e6b3 or a3,a3,a1 <== NOT EXECUTED
4000cd10: 01071713 slli a4,a4,0x10 <== NOT EXECUTED
4000cd14: 00d76733 or a4,a4,a3 <== NOT EXECUTED
4000cd18: 01861613 slli a2,a2,0x18 <== NOT EXECUTED
4000cd1c: 00e66633 or a2,a2,a4 <== NOT EXECUTED
4000cd20: 9adff06f j 4000c6cc <jffs2_scan_medium+0x854> <== NOT EXECUTED
ic = jffs2_scan_make_ino_cache(c, ino);
4000cd24: 00078593 mv a1,a5 <== NOT EXECUTED
4000cd28: 000d0513 mv a0,s10 <== NOT EXECUTED
4000cd2c: 890ff0ef jal ra,4000bdbc <jffs2_scan_make_ino_cache> <== NOT EXECUTED
4000cd30: 00050713 mv a4,a0 <== NOT EXECUTED
if (!ic)
4000cd34: e60512e3 bnez a0,4000cb98 <jffs2_scan_medium+0xd20> <== NOT EXECUTED
return -ENOMEM;
4000cd38: ff400713 li a4,-12 <== NOT EXECUTED
4000cd3c: c34ff06f j 4000c170 <jffs2_scan_medium+0x2f8> <== NOT EXECUTED
jffs2_link_node_ref(c, jeb, ofs | REF_NORMAL, c->cleanmarker_size, NULL);
4000cd40: 00000713 li a4,0 <== NOT EXECUTED
4000cd44: 003ce613 ori a2,s9,3 <== NOT EXECUTED
4000cd48: 000c0593 mv a1,s8 <== NOT EXECUTED
4000cd4c: 000d0513 mv a0,s10 <== NOT EXECUTED
4000cd50: 819f80ef jal ra,40005568 <jffs2_link_node_ref> <== NOT EXECUTED
ofs += PAD(c->cleanmarker_size);
4000cd54: 014d2683 lw a3,20(s10) <== NOT EXECUTED
while(ofs < jeb->offset + c->sector_size) {
4000cd58: 034d2703 lw a4,52(s10) <== NOT EXECUTED
4000cd5c: 00cc2783 lw a5,12(s8) <== NOT EXECUTED
4000cd60: 9b9ff06f j 4000c718 <jffs2_scan_medium+0x8a0> <== NOT EXECUTED
return -EROFS;
4000cd64: fe200713 li a4,-30 <== NOT EXECUTED
if (ret < 0)
4000cd68: c08ff06f j 4000c170 <jffs2_scan_medium+0x2f8> <== NOT EXECUTED
return -ENOMEM;
4000cd6c: ff400713 li a4,-12 <== NOT EXECUTED
4000cd70: c10ff06f j 4000c180 <jffs2_scan_medium+0x308> <== NOT EXECUTED
return err;
return 0;
}
ic = jffs2_scan_make_ino_cache(c, je32_to_cpu(rd->pino));
4000cd74: 01012c23 sw a6,24(sp) <== NOT EXECUTED
4000cd78: 01f12a23 sw t6,20(sp) <== NOT EXECUTED
4000cd7c: 01112823 sw a7,16(sp) <== NOT EXECUTED
4000cd80: 00da4683 lbu a3,13(s4) <== NOT EXECUTED
4000cd84: 00ca4603 lbu a2,12(s4) <== NOT EXECUTED
4000cd88: 00ea4703 lbu a4,14(s4) <== NOT EXECUTED
4000cd8c: 00fa4583 lbu a1,15(s4) <== NOT EXECUTED
4000cd90: 00869693 slli a3,a3,0x8 <== NOT EXECUTED
4000cd94: 00c6e6b3 or a3,a3,a2 <== NOT EXECUTED
4000cd98: 01071713 slli a4,a4,0x10 <== NOT EXECUTED
4000cd9c: 00d76733 or a4,a4,a3 <== NOT EXECUTED
4000cda0: 01859593 slli a1,a1,0x18 <== NOT EXECUTED
4000cda4: 00e5e5b3 or a1,a1,a4 <== NOT EXECUTED
4000cda8: 000d0513 mv a0,s10 <== NOT EXECUTED
4000cdac: 810ff0ef jal ra,4000bdbc <jffs2_scan_make_ino_cache> <== NOT EXECUTED
if (!ic) {
4000cdb0: 01012883 lw a7,16(sp) <== NOT EXECUTED
4000cdb4: 01412f83 lw t6,20(sp) <== NOT EXECUTED
4000cdb8: 01812803 lw a6,24(sp) <== NOT EXECUTED
ic = jffs2_scan_make_ino_cache(c, je32_to_cpu(rd->pino));
4000cdbc: 00050793 mv a5,a0 <== NOT EXECUTED
if (!ic) {
4000cdc0: 16050263 beqz a0,4000cf24 <jffs2_scan_medium+0x10ac> <== NOT EXECUTED
jffs2_free_full_dirent(fd);
return -ENOMEM;
}
fd->raw = jffs2_link_node_ref(c, jeb, ofs | dirent_node_state(rd),
4000cdc4: 01012e23 sw a6,28(sp) <== NOT EXECUTED
4000cdc8: 01112a23 sw a7,20(sp) <== NOT EXECUTED
4000cdcc: 01f12c23 sw t6,24(sp) <== NOT EXECUTED
4000cdd0: 015a4503 lbu a0,21(s4) <== NOT EXECUTED
4000cdd4: 014a4383 lbu t2,20(s4) <== NOT EXECUTED
PAD(je32_to_cpu(rd->totlen)), ic);
4000cdd8: 005a4603 lbu a2,5(s4) <== NOT EXECUTED
fd->raw = jffs2_link_node_ref(c, jeb, ofs | dirent_node_state(rd),
4000cddc: 016a4583 lbu a1,22(s4) <== NOT EXECUTED
4000cde0: 017a4683 lbu a3,23(s4) <== NOT EXECUTED
PAD(je32_to_cpu(rd->totlen)), ic);
4000cde4: 004a4283 lbu t0,4(s4) <== NOT EXECUTED
4000cde8: 006a4703 lbu a4,6(s4) <== NOT EXECUTED
4000cdec: 007a4083 lbu ra,7(s4) <== NOT EXECUTED
fd->raw = jffs2_link_node_ref(c, jeb, ofs | dirent_node_state(rd),
4000cdf0: 00851513 slli a0,a0,0x8 <== NOT EXECUTED
4000cdf4: 00756533 or a0,a0,t2 <== NOT EXECUTED
4000cdf8: 01059593 slli a1,a1,0x10 <== NOT EXECUTED
PAD(je32_to_cpu(rd->totlen)), ic);
4000cdfc: 00861393 slli t2,a2,0x8 <== NOT EXECUTED
fd->raw = jffs2_link_node_ref(c, jeb, ofs | dirent_node_state(rd),
4000ce00: 00a5e5b3 or a1,a1,a0 <== NOT EXECUTED
4000ce04: 01869693 slli a3,a3,0x18 <== NOT EXECUTED
PAD(je32_to_cpu(rd->totlen)), ic);
4000ce08: 0053e2b3 or t0,t2,t0 <== NOT EXECUTED
4000ce0c: 01071713 slli a4,a4,0x10 <== NOT EXECUTED
fd->raw = jffs2_link_node_ref(c, jeb, ofs | dirent_node_state(rd),
4000ce10: 00b6e633 or a2,a3,a1 <== NOT EXECUTED
PAD(je32_to_cpu(rd->totlen)), ic);
4000ce14: 00576733 or a4,a4,t0 <== NOT EXECUTED
4000ce18: 01809693 slli a3,ra,0x18 <== NOT EXECUTED
4000ce1c: 00e6e6b3 or a3,a3,a4 <== NOT EXECUTED
fd->raw = jffs2_link_node_ref(c, jeb, ofs | dirent_node_state(rd),
4000ce20: 00163613 seqz a2,a2 <== NOT EXECUTED
4000ce24: 00260613 addi a2,a2,2 <== NOT EXECUTED
PAD(je32_to_cpu(rd->totlen)), ic);
4000ce28: 00368693 addi a3,a3,3 # ffffc003 <RamEnd+0xbeffc003> <== NOT EXECUTED
fd->raw = jffs2_link_node_ref(c, jeb, ofs | dirent_node_state(rd),
4000ce2c: 00078713 mv a4,a5 <== NOT EXECUTED
4000ce30: ffc6f693 andi a3,a3,-4 <== NOT EXECUTED
4000ce34: 00cce633 or a2,s9,a2 <== NOT EXECUTED
4000ce38: 000c0593 mv a1,s8 <== NOT EXECUTED
4000ce3c: 000d0513 mv a0,s10 <== NOT EXECUTED
4000ce40: 00f12823 sw a5,16(sp) <== NOT EXECUTED
4000ce44: f24f80ef jal ra,40005568 <jffs2_link_node_ref> <== NOT EXECUTED
4000ce48: 01412883 lw a7,20(sp) <== NOT EXECUTED
while (len--) {
4000ce4c: 01c12803 lw a6,28(sp) <== NOT EXECUTED
4000ce50: 01012783 lw a5,16(sp) <== NOT EXECUTED
4000ce54: 00a8a023 sw a0,0(a7) <== NOT EXECUTED
fd->next = NULL;
4000ce58: 0008a223 sw zero,4(a7) <== NOT EXECUTED
fd->version = je32_to_cpu(rd->version);
4000ce5c: 011a4603 lbu a2,17(s4) <== NOT EXECUTED
4000ce60: 010a4583 lbu a1,16(s4) <== NOT EXECUTED
4000ce64: 012a4683 lbu a3,18(s4) <== NOT EXECUTED
4000ce68: 013a4703 lbu a4,19(s4) <== NOT EXECUTED
4000ce6c: 00861613 slli a2,a2,0x8 <== NOT EXECUTED
4000ce70: 00b66633 or a2,a2,a1 <== NOT EXECUTED
4000ce74: 01069693 slli a3,a3,0x10 <== NOT EXECUTED
4000ce78: 00c6e6b3 or a3,a3,a2 <== NOT EXECUTED
4000ce7c: 01871713 slli a4,a4,0x18 <== NOT EXECUTED
4000ce80: 00d76733 or a4,a4,a3 <== NOT EXECUTED
4000ce84: 00e8a423 sw a4,8(a7) <== NOT EXECUTED
fd->ino = je32_to_cpu(rd->ino);
4000ce88: 015a4603 lbu a2,21(s4) <== NOT EXECUTED
4000ce8c: 014a4583 lbu a1,20(s4) <== NOT EXECUTED
4000ce90: 016a4683 lbu a3,22(s4) <== NOT EXECUTED
4000ce94: 017a4703 lbu a4,23(s4) <== NOT EXECUTED
4000ce98: 00861613 slli a2,a2,0x8 <== NOT EXECUTED
4000ce9c: 00b66633 or a2,a2,a1 <== NOT EXECUTED
4000cea0: 01069693 slli a3,a3,0x10 <== NOT EXECUTED
4000cea4: 00c6e6b3 or a3,a3,a2 <== NOT EXECUTED
4000cea8: 01871713 slli a4,a4,0x18 <== NOT EXECUTED
4000ceac: 00d76733 or a4,a4,a3 <== NOT EXECUTED
4000ceb0: 00e8a623 sw a4,12(a7) <== NOT EXECUTED
4000ceb4: 02080863 beqz a6,4000cee4 <jffs2_scan_medium+0x106c> <== NOT EXECUTED
uint32_t hash = 0;
4000ceb8: 01812f83 lw t6,24(sp) <== NOT EXECUTED
4000cebc: 01580713 addi a4,a6,21 <== NOT EXECUTED
4000cec0: 00e88733 add a4,a7,a4 <== NOT EXECUTED
4000cec4: 00000813 li a6,0 <== NOT EXECUTED
hash ^= *(name++);
4000cec8: 000fc683 lbu a3,0(t6) <== NOT EXECUTED
hash = (hash << 4) | (hash >> 28);
4000cecc: 00481613 slli a2,a6,0x4 <== NOT EXECUTED
4000ced0: 01c85813 srli a6,a6,0x1c <== NOT EXECUTED
4000ced4: 00c86833 or a6,a6,a2 <== NOT EXECUTED
hash ^= *(name++);
4000ced8: 001f8f93 addi t6,t6,1 <== NOT EXECUTED
4000cedc: 0106c833 xor a6,a3,a6 <== NOT EXECUTED
while (len--) {
4000cee0: feef94e3 bne t6,a4,4000cec8 <jffs2_scan_medium+0x1050> <== NOT EXECUTED
fd->nhash = full_name_hash(NULL, fd->name, checkedlen);
4000cee4: 0108a823 sw a6,16(a7) <== NOT EXECUTED
fd->type = rd->type;
4000cee8: 01da4703 lbu a4,29(s4) <== NOT EXECUTED
jffs2_add_fd_to_list(c, fd, &ic->scan_dents);
4000ceec: 00078613 mv a2,a5 <== NOT EXECUTED
4000cef0: 00088593 mv a1,a7 <== NOT EXECUTED
fd->type = rd->type;
4000cef4: 00e88a23 sb a4,20(a7) <== NOT EXECUTED
jffs2_add_fd_to_list(c, fd, &ic->scan_dents);
4000cef8: 000d0513 mv a0,s10 <== NOT EXECUTED
4000cefc: bfdf70ef jal ra,40004af8 <jffs2_add_fd_to_list> <== NOT EXECUTED
if (err) return err;
4000cf00: 9d5ff06f j 4000c8d4 <jffs2_scan_medium+0xa5c> <== NOT EXECUTED
pr_err("Dirent at %08x has zeroes in name. Truncating to %d chars\n",
4000cf04: 400207b7 lui a5,0x40020 <== NOT EXECUTED
4000cf08: 00050613 mv a2,a0 <== NOT EXECUTED
4000cf0c: 00a12a23 sw a0,20(sp) <== NOT EXECUTED
4000cf10: 000c8593 mv a1,s9 <== NOT EXECUTED
4000cf14: fc878513 addi a0,a5,-56 # 4001ffc8 <__func__.0+0x400> <== NOT EXECUTED
4000cf18: cd5fe0ef jal ra,4000bbec <jffs2_printk> <== NOT EXECUTED
4000cf1c: 01412803 lw a6,20(sp) <== NOT EXECUTED
4000cf20: b6dff06f j 4000ca8c <jffs2_scan_medium+0xc14> <== NOT EXECUTED
jffs2_free_full_dirent(fd);
4000cf24: 00088513 mv a0,a7 <== NOT EXECUTED
4000cf28: 951f70ef jal ra,40004878 <jffs2_free_full_dirent> <== NOT EXECUTED
return -ENOMEM;
4000cf2c: ff400713 li a4,-12 <== NOT EXECUTED
4000cf30: a40ff06f j 4000c170 <jffs2_scan_medium+0x2f8> <== NOT EXECUTED
4000642c <jffs2_thread_should_wake>:
int ret = 0;
uint32_t dirty;
int nr_very_dirty = 0;
struct jffs2_eraseblock *jeb;
if (!list_empty(&c->erase_complete_list) ||
4000642c: 0a052683 lw a3,160(a0)
40006430: 0a050713 addi a4,a0,160
{
40006434: 00050793 mv a5,a0
if (!list_empty(&c->erase_complete_list) ||
40006438: 00e68663 beq a3,a4,40006444 <jffs2_thread_should_wake+0x18>
!list_empty(&c->erase_pending_list))
return 1;
4000643c: 00100513 li a0,1 <== NOT EXECUTED
jffs2_dbg(1, "%s(): nr_free_blocks %d, nr_erasing_blocks %d, dirty_size 0x%x, vdirty_blocks %d: %s\n",
__func__, c->nr_free_blocks, c->nr_erasing_blocks,
c->dirty_size, nr_very_dirty, ret ? "yes" : "no");
return ret;
}
40006440: 00008067 ret
if (!list_empty(&c->erase_complete_list) ||
40006444: 09852683 lw a3,152(a0)
!list_empty(&c->erase_pending_list))
40006448: 09850713 addi a4,a0,152
return 1;
4000644c: 00100513 li a0,1
if (!list_empty(&c->erase_complete_list) ||
40006450: fee698e3 bne a3,a4,40006440 <jffs2_thread_should_wake+0x14>
if (c->unchecked_size) {
40006454: 0387a703 lw a4,56(a5)
40006458: fe0714e3 bnez a4,40006440 <jffs2_thread_should_wake+0x14> <== NEVER TAKEN
dirty = c->dirty_size + c->erasing_size - c->nr_erasing_blocks * c->sector_size;
4000645c: 0407a683 lw a3,64(a5)
if (c->nr_free_blocks + c->nr_erasing_blocks < c->resv_blocks_gctrigger &&
40006460: 03c7a703 lw a4,60(a5)
40006464: 0467c603 lbu a2,70(a5)
int ret = 0;
40006468: 00000513 li a0,0
if (c->nr_free_blocks + c->nr_erasing_blocks < c->resv_blocks_gctrigger &&
4000646c: 00e68733 add a4,a3,a4
40006470: 02c77263 bgeu a4,a2,40006494 <jffs2_thread_should_wake+0x68>
dirty = c->dirty_size + c->erasing_size - c->nr_erasing_blocks * c->sector_size;
40006474: 0347a503 lw a0,52(a5) <== NOT EXECUTED
40006478: 0207a703 lw a4,32(a5) <== NOT EXECUTED
4000647c: 02c7a603 lw a2,44(a5) <== NOT EXECUTED
40006480: 02a686b3 mul a3,a3,a0 <== NOT EXECUTED
if (c->nr_free_blocks + c->nr_erasing_blocks < c->resv_blocks_gctrigger &&
40006484: 04c7a503 lw a0,76(a5) <== NOT EXECUTED
dirty = c->dirty_size + c->erasing_size - c->nr_erasing_blocks * c->sector_size;
40006488: 00c70733 add a4,a4,a2 <== NOT EXECUTED
4000648c: 40d706b3 sub a3,a4,a3 <== NOT EXECUTED
if (c->nr_free_blocks + c->nr_erasing_blocks < c->resv_blocks_gctrigger &&
40006490: 00d53533 sltu a0,a0,a3 <== NOT EXECUTED
list_for_each_entry(jeb, &c->very_dirty_list, list) {
40006494: 0687a703 lw a4,104(a5)
40006498: 06878693 addi a3,a5,104
4000649c: fad702e3 beq a4,a3,40006440 <jffs2_thread_should_wake+0x14>
if (nr_very_dirty == c->vdirty_blocks_gctrigger) {
400064a0: 0497c603 lbu a2,73(a5)
int nr_very_dirty = 0;
400064a4: 00000793 li a5,0
400064a8: 00c0006f j 400064b4 <jffs2_thread_should_wake+0x88>
list_for_each_entry(jeb, &c->very_dirty_list, list) {
400064ac: 00072703 lw a4,0(a4)
400064b0: 00d70a63 beq a4,a3,400064c4 <jffs2_thread_should_wake+0x98>
nr_very_dirty++;
400064b4: 00178793 addi a5,a5,1
if (nr_very_dirty == c->vdirty_blocks_gctrigger) {
400064b8: fef61ae3 bne a2,a5,400064ac <jffs2_thread_should_wake+0x80>
return 1;
400064bc: 00100513 li a0,1 <== NOT EXECUTED
400064c0: f81ff06f j 40006440 <jffs2_thread_should_wake+0x14> <== NOT EXECUTED
400064c4: 00008067 ret
40004bf8 <jffs2_truncate_fragtree>:
struct jffs2_node_frag *prev = NULL;
struct jffs2_node_frag *frag = NULL;
dbg_fragtree2("root %p, offset %d\n", fragtree, offset);
next = fragtree->rb_node;
40004bf8: 0005a783 lw a5,0(a1)
{
40004bfc: fe010113 addi sp,sp,-32
40004c00: 00812c23 sw s0,24(sp)
40004c04: 01212823 sw s2,16(sp)
40004c08: 01312623 sw s3,12(sp)
40004c0c: 01412423 sw s4,8(sp)
40004c10: 00112e23 sw ra,28(sp)
40004c14: 00912a23 sw s1,20(sp)
40004c18: 00058993 mv s3,a1
40004c1c: 00060913 mv s2,a2
while(next) {
40004c20: 00050a13 mv s4,a0
40004c24: 00000413 li s0,0
40004c28: 08078863 beqz a5,40004cb8 <jffs2_truncate_fragtree+0xc0>
frag = rb_entry(next, struct jffs2_node_frag, rb);
if (frag->ofs + frag->size <= offset) {
40004c2c: 0187a703 lw a4,24(a5)
40004c30: 0147a683 lw a3,20(a5)
40004c34: 00d706b3 add a3,a4,a3
40004c38: 0ad96463 bltu s2,a3,40004ce0 <jffs2_truncate_fragtree+0xe8>
/* Remember the closest smaller match on the way down */
if (!prev || frag->ofs > prev->ofs)
40004c3c: 00040663 beqz s0,40004c48 <jffs2_truncate_fragtree+0x50>
40004c40: 01842683 lw a3,24(s0)
40004c44: 00e6f463 bgeu a3,a4,40004c4c <jffs2_truncate_fragtree+0x54>
40004c48: 00078413 mv s0,a5
prev = frag;
next = frag->rb.rb_right;
40004c4c: 0047a783 lw a5,4(a5)
while(next) {
40004c50: fc079ee3 bnez a5,40004c2c <jffs2_truncate_fragtree+0x34>
if (frag && frag->ofs != size) {
40004c54: 06040263 beqz s0,40004cb8 <jffs2_truncate_fragtree+0xc0> <== NEVER TAKEN
40004c58: 01842703 lw a4,24(s0)
40004c5c: 05270a63 beq a4,s2,40004cb0 <jffs2_truncate_fragtree+0xb8>
if (frag->ofs+frag->size > size) {
40004c60: 01442783 lw a5,20(s0)
40004c64: 00f707b3 add a5,a4,a5
40004c68: 10f96463 bltu s2,a5,40004d70 <jffs2_truncate_fragtree+0x178>
return _RBTree_Successor( node );
40004c6c: 00040513 mv a0,s0
40004c70: 1b10f0ef jal ra,40014620 <_RBTree_Successor>
40004c74: 00050413 mv s0,a0
while (frag && frag->ofs >= size) {
40004c78: 04050063 beqz a0,40004cb8 <jffs2_truncate_fragtree+0xc0> <== ALWAYS TAKEN
40004c7c: 01852703 lw a4,24(a0) <== NOT EXECUTED
40004c80: 0300006f j 40004cb0 <jffs2_truncate_fragtree+0xb8> <== NOT EXECUTED
40004c84: 19d0f0ef jal ra,40014620 <_RBTree_Successor>
40004c88: 00050493 mv s1,a0
_RBTree_Extract( (RBTree_Control *) root, node );
40004c8c: 00040593 mv a1,s0
40004c90: 00098513 mv a0,s3
40004c94: 34c0f0ef jal ra,40013fe0 <_RBTree_Extract>
jffs2_obsolete_node_frag(c, frag);
40004c98: 00040593 mv a1,s0
40004c9c: 000a0513 mv a0,s4
40004ca0: d0dff0ef jal ra,400049ac <jffs2_obsolete_node_frag>
while (frag && frag->ofs >= size) {
40004ca4: 00048a63 beqz s1,40004cb8 <jffs2_truncate_fragtree+0xc0>
40004ca8: 0184a703 lw a4,24(s1)
40004cac: 00048413 mv s0,s1
return _RBTree_Successor( node );
40004cb0: 00040513 mv a0,s0
40004cb4: fd2778e3 bgeu a4,s2,40004c84 <jffs2_truncate_fragtree+0x8c>
if (size == 0)
40004cb8: 02091c63 bnez s2,40004cf0 <jffs2_truncate_fragtree+0xf8>
return 0;
40004cbc: 00000513 li a0,0
}
40004cc0: 01c12083 lw ra,28(sp)
40004cc4: 01812403 lw s0,24(sp)
40004cc8: 01412483 lw s1,20(sp)
40004ccc: 01012903 lw s2,16(sp)
40004cd0: 00c12983 lw s3,12(sp)
40004cd4: 00812a03 lw s4,8(sp)
40004cd8: 02010113 addi sp,sp,32
40004cdc: 00008067 ret
} else if (frag->ofs > offset) {
40004ce0: 06e97c63 bgeu s2,a4,40004d58 <jffs2_truncate_fragtree+0x160>
next = frag->rb.rb_left;
40004ce4: 0007a783 lw a5,0(a5)
while(next) {
40004ce8: f40792e3 bnez a5,40004c2c <jffs2_truncate_fragtree+0x34> <== ALWAYS TAKEN
40004cec: f69ff06f j 40004c54 <jffs2_truncate_fragtree+0x5c> <== NOT EXECUTED
return _RBTree_Maximum( (RBTree_Control *) root );
40004cf0: 00098513 mv a0,s3
40004cf4: 10d0f0ef jal ra,40014600 <_RBTree_Maximum>
40004cf8: 00050713 mv a4,a0
40004cfc: fc0500e3 beqz a0,40004cbc <jffs2_truncate_fragtree+0xc4> <== NEVER TAKEN
if (frag->ofs + frag->size < size)
40004d00: 01852683 lw a3,24(a0)
40004d04: 01452783 lw a5,20(a0)
40004d08: 00f68533 add a0,a3,a5
40004d0c: fb256ae3 bltu a0,s2,40004cc0 <jffs2_truncate_fragtree+0xc8>
if (frag->node && (frag->ofs & (PAGE_SIZE - 1)) == 0) {
40004d10: 01072783 lw a5,16(a4)
40004d14: 00090513 mv a0,s2
40004d18: fa0784e3 beqz a5,40004cc0 <jffs2_truncate_fragtree+0xc8> <== NEVER TAKEN
40004d1c: 01469693 slli a3,a3,0x14
40004d20: fa0690e3 bnez a3,40004cc0 <jffs2_truncate_fragtree+0xc8>
frag->node->raw->flash_offset = ref_offset(frag->node->raw) | REF_PRISTINE;
40004d24: 0007a703 lw a4,0(a5)
}
40004d28: 01c12083 lw ra,28(sp)
40004d2c: 01812403 lw s0,24(sp)
frag->node->raw->flash_offset = ref_offset(frag->node->raw) | REF_PRISTINE;
40004d30: 00472783 lw a5,4(a4)
}
40004d34: 01412483 lw s1,20(sp)
40004d38: 01012903 lw s2,16(sp)
frag->node->raw->flash_offset = ref_offset(frag->node->raw) | REF_PRISTINE;
40004d3c: ffc7f793 andi a5,a5,-4
40004d40: 0027e793 ori a5,a5,2
40004d44: 00f72223 sw a5,4(a4)
}
40004d48: 00c12983 lw s3,12(sp)
40004d4c: 00812a03 lw s4,8(sp)
40004d50: 02010113 addi sp,sp,32
40004d54: 00008067 ret
if (frag && frag->ofs != size) {
40004d58: 00078413 mv s0,a5
40004d5c: f4e90ae3 beq s2,a4,40004cb0 <jffs2_truncate_fragtree+0xb8>
frag->size = size - frag->ofs;
40004d60: 40e90733 sub a4,s2,a4
40004d64: 00e7aa23 sw a4,20(a5)
40004d68: 00078413 mv s0,a5
40004d6c: f01ff06f j 40004c6c <jffs2_truncate_fragtree+0x74>
40004d70: 00040793 mv a5,s0 <== NOT EXECUTED
40004d74: fedff06f j 40004d60 <jffs2_truncate_fragtree+0x168> <== NOT EXECUTED
4000aa74 <jffs2_unlink>:
/***********************************************************************/
int jffs2_unlink(struct _inode *dir_i, struct _inode *d_inode, const unsigned char *d_name, size_t d_namelen)
{
4000aa74: fe010113 addi sp,sp,-32 <== NOT EXECUTED
4000aa78: 01412423 sw s4,8(sp) <== NOT EXECUTED
struct jffs2_sb_info *c = JFFS2_SB_INFO(dir_i->i_sb);
4000aa7c: 04052a03 lw s4,64(a0) <== NOT EXECUTED
{
4000aa80: 00912a23 sw s1,20(sp) <== NOT EXECUTED
4000aa84: 00050493 mv s1,a0 <== NOT EXECUTED
struct jffs2_inode_info *dir_f = JFFS2_INODE_INFO(dir_i);
struct jffs2_inode_info *dead_f = JFFS2_INODE_INFO(d_inode);
int ret;
ret = jffs2_do_unlink(c, dir_f, (const char *)d_name,
d_namelen, dead_f, get_seconds());
4000aa88: 00000513 li a0,0 <== NOT EXECUTED
{
4000aa8c: 00112e23 sw ra,28(sp) <== NOT EXECUTED
4000aa90: 00812c23 sw s0,24(sp) <== NOT EXECUTED
4000aa94: 01212823 sw s2,16(sp) <== NOT EXECUTED
4000aa98: 00058413 mv s0,a1 <== NOT EXECUTED
4000aa9c: 01312623 sw s3,12(sp) <== NOT EXECUTED
4000aaa0: 00060913 mv s2,a2 <== NOT EXECUTED
4000aaa4: 00068993 mv s3,a3 <== NOT EXECUTED
d_namelen, dead_f, get_seconds());
4000aaa8: 511110ef jal ra,4001c7b8 <time> <== NOT EXECUTED
4000aaac: 00050793 mv a5,a0 <== NOT EXECUTED
ret = jffs2_do_unlink(c, dir_f, (const char *)d_name,
4000aab0: 04840713 addi a4,s0,72 <== NOT EXECUTED
4000aab4: 00098693 mv a3,s3 <== NOT EXECUTED
4000aab8: 00090613 mv a2,s2 <== NOT EXECUTED
4000aabc: 04848593 addi a1,s1,72 <== NOT EXECUTED
4000aac0: 000a0513 mv a0,s4 <== NOT EXECUTED
4000aac4: ee5fe0ef jal ra,400099a8 <jffs2_do_unlink> <== NOT EXECUTED
if (dead_f->inocache)
4000aac8: 05c42783 lw a5,92(s0) <== NOT EXECUTED
4000aacc: 00078663 beqz a5,4000aad8 <jffs2_unlink+0x64> <== NOT EXECUTED
d_inode->i_nlink = dead_f->inocache->pino_nlink;
4000aad0: 0147a783 lw a5,20(a5) <== NOT EXECUTED
4000aad4: 00f41623 sh a5,12(s0) <== NOT EXECUTED
return ret;
}
4000aad8: 01c12083 lw ra,28(sp) <== NOT EXECUTED
4000aadc: 01812403 lw s0,24(sp) <== NOT EXECUTED
4000aae0: 01412483 lw s1,20(sp) <== NOT EXECUTED
4000aae4: 01012903 lw s2,16(sp) <== NOT EXECUTED
4000aae8: 00c12983 lw s3,12(sp) <== NOT EXECUTED
4000aaec: 00812a03 lw s4,8(sp) <== NOT EXECUTED
4000aaf0: 02010113 addi sp,sp,32 <== NOT EXECUTED
4000aaf4: 00008067 ret <== NOT EXECUTED
40008e0c <jffs2_write_dirent>:
struct jffs2_full_dirent *jffs2_write_dirent(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
struct jffs2_raw_dirent *rd, const unsigned char *name,
uint32_t namelen, int alloc_mode)
{
40008e0c: f9010113 addi sp,sp,-112
40008e10: 07212023 sw s2,96(sp)
40008e14: 05412c23 sw s4,88(sp)
40008e18: 00050913 mv s2,a0
40008e1c: 00058a13 mv s4,a1
D1(if(je32_to_cpu(rd->hdr_crc) != crc32(0, rd, sizeof(struct jffs2_unknown_node)-4)) {
pr_crit("Eep. CRC not correct in jffs2_write_dirent()\n");
BUG();
});
if (strnlen(name, namelen) != namelen) {
40008e20: 00068513 mv a0,a3
40008e24: 00070593 mv a1,a4
{
40008e28: 06812423 sw s0,104(sp)
40008e2c: 06912223 sw s1,100(sp)
40008e30: 05312e23 sw s3,92(sp)
40008e34: 05512a23 sw s5,84(sp)
40008e38: 06112623 sw ra,108(sp)
40008e3c: 05612823 sw s6,80(sp)
40008e40: 05712623 sw s7,76(sp)
40008e44: 05812423 sw s8,72(sp)
40008e48: 05912223 sw s9,68(sp)
40008e4c: 05a12023 sw s10,64(sp)
40008e50: 03b12e23 sw s11,60(sp)
40008e54: 00070493 mv s1,a4
40008e58: 00068a93 mv s5,a3
40008e5c: 00060413 mv s0,a2
40008e60: 00078993 mv s3,a5
if (strnlen(name, namelen) != namelen) {
40008e64: 11d130ef jal ra,4001c780 <strnlen>
40008e68: 0e950063 beq a0,s1,40008f48 <jffs2_write_dirent+0x13c>
/* This should never happen, but seems to have done on at least one
occasion: https://dev.laptop.org/ticket/4184 */
pr_crit("Error in jffs2_write_dirent() -- name contains zero bytes!\n");
40008e6c: 4001f537 lui a0,0x4001f <== NOT EXECUTED
40008e70: 0a050513 addi a0,a0,160 # 4001f0a0 <__func__.9+0xe8> <== NOT EXECUTED
40008e74: 989ff0ef jal ra,400087fc <jffs2_printk> <== NOT EXECUTED
pr_crit("Directory inode #%u, name at *0x%p \"%s\"->ino #%u, name_crc 0x%08x\n",
40008e78: 02544503 lbu a0,37(s0) <== NOT EXECUTED
40008e7c: 01544603 lbu a2,21(s0) <== NOT EXECUTED
40008e80: 00d44683 lbu a3,13(s0) <== NOT EXECUTED
40008e84: 02444f03 lbu t5,36(s0) <== NOT EXECUTED
40008e88: 02644783 lbu a5,38(s0) <== NOT EXECUTED
40008e8c: 01444e83 lbu t4,20(s0) <== NOT EXECUTED
40008e90: 01644703 lbu a4,22(s0) <== NOT EXECUTED
40008e94: 00c44e03 lbu t3,12(s0) <== NOT EXECUTED
40008e98: 00e44583 lbu a1,14(s0) <== NOT EXECUTED
40008e9c: 02744303 lbu t1,39(s0) <== NOT EXECUTED
40008ea0: 01744883 lbu a7,23(s0) <== NOT EXECUTED
40008ea4: 00f44803 lbu a6,15(s0) <== NOT EXECUTED
40008ea8: 00851513 slli a0,a0,0x8 <== NOT EXECUTED
40008eac: 00861613 slli a2,a2,0x8 <== NOT EXECUTED
40008eb0: 00869693 slli a3,a3,0x8 <== NOT EXECUTED
40008eb4: 01e56533 or a0,a0,t5 <== NOT EXECUTED
40008eb8: 01d66633 or a2,a2,t4 <== NOT EXECUTED
40008ebc: 01c6e6b3 or a3,a3,t3 <== NOT EXECUTED
40008ec0: 01079793 slli a5,a5,0x10 <== NOT EXECUTED
40008ec4: 01071713 slli a4,a4,0x10 <== NOT EXECUTED
40008ec8: 01059593 slli a1,a1,0x10 <== NOT EXECUTED
40008ecc: 00a7e7b3 or a5,a5,a0 <== NOT EXECUTED
40008ed0: 01831313 slli t1,t1,0x18 <== NOT EXECUTED
40008ed4: 00c76733 or a4,a4,a2 <== NOT EXECUTED
40008ed8: 01889893 slli a7,a7,0x18 <== NOT EXECUTED
40008edc: 00d5e5b3 or a1,a1,a3 <== NOT EXECUTED
40008ee0: 01881813 slli a6,a6,0x18 <== NOT EXECUTED
40008ee4: 4001f537 lui a0,0x4001f <== NOT EXECUTED
40008ee8: 00f367b3 or a5,t1,a5 <== NOT EXECUTED
40008eec: 00e8e733 or a4,a7,a4 <== NOT EXECUTED
40008ef0: 000a8693 mv a3,s5 <== NOT EXECUTED
40008ef4: 000a8613 mv a2,s5 <== NOT EXECUTED
40008ef8: 00b865b3 or a1,a6,a1 <== NOT EXECUTED
40008efc: 0e850513 addi a0,a0,232 # 4001f0e8 <__func__.9+0x130> <== NOT EXECUTED
40008f00: 8fdff0ef jal ra,400087fc <jffs2_printk> <== NOT EXECUTED
je32_to_cpu(rd->pino), name, name, je32_to_cpu(rd->ino),
je32_to_cpu(rd->name_crc));
WARN_ON(1);
return ERR_PTR(-EIO);
40008f04: ffb00d13 li s10,-5 <== NOT EXECUTED
if (retried) {
jffs2_dbg_acct_sanity_check(c,NULL);
}
return fd;
}
40008f08: 06c12083 lw ra,108(sp)
40008f0c: 06812403 lw s0,104(sp)
40008f10: 06412483 lw s1,100(sp)
40008f14: 06012903 lw s2,96(sp)
40008f18: 05c12983 lw s3,92(sp)
40008f1c: 05812a03 lw s4,88(sp)
40008f20: 05412a83 lw s5,84(sp)
40008f24: 05012b03 lw s6,80(sp)
40008f28: 04c12b83 lw s7,76(sp)
40008f2c: 04812c03 lw s8,72(sp)
40008f30: 04412c83 lw s9,68(sp)
40008f34: 03c12d83 lw s11,60(sp)
40008f38: 000d0513 mv a0,s10
40008f3c: 04012d03 lw s10,64(sp)
40008f40: 07010113 addi sp,sp,112
40008f44: 00008067 ret
vecs[0].iov_len = sizeof(*rd);
40008f48: 02800793 li a5,40
fd = jffs2_alloc_full_dirent(namelen+1);
40008f4c: 00148513 addi a0,s1,1
vecs[0].iov_base = rd;
40008f50: 02812023 sw s0,32(sp)
vecs[0].iov_len = sizeof(*rd);
40008f54: 02f12223 sw a5,36(sp)
vecs[1].iov_base = (unsigned char *)name;
40008f58: 03512423 sw s5,40(sp)
vecs[1].iov_len = namelen;
40008f5c: 02912623 sw s1,44(sp)
fd = jffs2_alloc_full_dirent(namelen+1);
40008f60: 911fb0ef jal ra,40004870 <jffs2_alloc_full_dirent>
40008f64: 00050d13 mv s10,a0
if (!fd)
40008f68: 2a050063 beqz a0,40009208 <jffs2_write_dirent+0x3fc> <== NEVER TAKEN
fd->version = je32_to_cpu(rd->version);
40008f6c: 01144683 lbu a3,17(s0)
40008f70: 01044603 lbu a2,16(s0)
40008f74: 01244703 lbu a4,18(s0)
40008f78: 01344783 lbu a5,19(s0)
40008f7c: 00869693 slli a3,a3,0x8
40008f80: 00c6e6b3 or a3,a3,a2
40008f84: 01071713 slli a4,a4,0x10
40008f88: 00d76733 or a4,a4,a3
40008f8c: 01879793 slli a5,a5,0x18
40008f90: 00e7e7b3 or a5,a5,a4
40008f94: 00f52423 sw a5,8(a0)
fd->ino = je32_to_cpu(rd->ino);
40008f98: 01544683 lbu a3,21(s0)
40008f9c: 01444603 lbu a2,20(s0)
40008fa0: 01644703 lbu a4,22(s0)
40008fa4: 01744783 lbu a5,23(s0)
40008fa8: 00869693 slli a3,a3,0x8
40008fac: 00c6e6b3 or a3,a3,a2
40008fb0: 01071713 slli a4,a4,0x10
40008fb4: 00d76733 or a4,a4,a3
40008fb8: 01879793 slli a5,a5,0x18
40008fbc: 00e7e7b3 or a5,a5,a4
40008fc0: 00f52623 sw a5,12(a0)
while (len--) {
40008fc4: 2c048e63 beqz s1,400092a0 <jffs2_write_dirent+0x494> <== NEVER TAKEN
40008fc8: 009a87b3 add a5,s5,s1
40008fcc: 000a8893 mv a7,s5
uint32_t hash = 0;
40008fd0: 00000813 li a6,0
hash ^= *(name++);
40008fd4: 0008c703 lbu a4,0(a7)
hash = (hash << 4) | (hash >> 28);
40008fd8: 00481613 slli a2,a6,0x4
40008fdc: 01c85813 srli a6,a6,0x1c
40008fe0: 00c86833 or a6,a6,a2
hash ^= *(name++);
40008fe4: 00188893 addi a7,a7,1
40008fe8: 01074833 xor a6,a4,a6
while (len--) {
40008fec: fef894e3 bne a7,a5,40008fd4 <jffs2_write_dirent+0x1c8>
fd->nhash = full_name_hash(NULL, name, namelen);
40008ff0: 010d2823 sw a6,16(s10)
fd->type = rd->type;
40008ff4: 01d44783 lbu a5,29(s0)
memcpy(fd->name, name, namelen);
40008ff8: 000a8593 mv a1,s5
40008ffc: 00048613 mv a2,s1
fd->type = rd->type;
40009000: 00fd0a23 sb a5,20(s10)
memcpy(fd->name, name, namelen);
40009004: 015d0513 addi a0,s10,21
40009008: 7e9120ef jal ra,4001bff0 <memcpy>
fd->name[namelen]=0;
4000900c: 009d07b3 add a5,s10,s1
jffs2_add_physical_node_ref(c, flash_ofs | REF_OBSOLETE, PAD(sizeof(*rd)+namelen), NULL);
40009010: 02b48a93 addi s5,s1,43
fd->name[namelen]=0;
40009014: 00078aa3 sb zero,21(a5)
ret = jffs2_reserve_space_gc(c, sizeof(*rd) + namelen, &dummy,
40009018: 01848793 addi a5,s1,24
fd->name[namelen]=0;
4000901c: 00200c13 li s8,2
int retried = 0;
40009020: 00000893 li a7,0
if (ret || (retlen != sizeof(*rd) + namelen)) {
40009024: 02848b93 addi s7,s1,40
pr_notice("Write of %zd bytes at 0x%08x failed. returned %d, retlen %zd\n",
40009028: 4001fcb7 lui s9,0x4001f
jffs2_add_physical_node_ref(c, flash_ofs | REF_OBSOLETE, PAD(sizeof(*rd)+namelen), NULL);
4000902c: ffcafa93 andi s5,s5,-4
ret = jffs2_reserve_space_gc(c, sizeof(*rd) + namelen, &dummy,
40009030: 00f12423 sw a5,8(sp)
flash_ofs = write_ofs(c);
40009034: 05892783 lw a5,88(s2)
if ((alloc_mode!=ALLOC_GC) && (je32_to_cpu(rd->version) < f->highest_version)) {
40009038: 00200713 li a4,2
flash_ofs = write_ofs(c);
4000903c: 03492803 lw a6,52(s2)
40009040: 00c7ab03 lw s6,12(a5)
40009044: 0207ad83 lw s11,32(a5)
if ((alloc_mode!=ALLOC_GC) && (je32_to_cpu(rd->version) < f->highest_version)) {
40009048: 0ae98e63 beq s3,a4,40009104 <jffs2_write_dirent+0x2f8>
4000904c: 01144683 lbu a3,17(s0)
40009050: 01044603 lbu a2,16(s0)
40009054: 01244703 lbu a4,18(s0)
40009058: 01344783 lbu a5,19(s0)
4000905c: 00869693 slli a3,a3,0x8
40009060: 00c6e6b3 or a3,a3,a2
40009064: 01071713 slli a4,a4,0x10
40009068: 000a2603 lw a2,0(s4)
4000906c: 00d76733 or a4,a4,a3
40009070: 01879793 slli a5,a5,0x18
40009074: 00e7e7b3 or a5,a5,a4
40009078: 08c7f663 bgeu a5,a2,40009104 <jffs2_write_dirent+0x2f8>
BUG_ON(!retried);
4000907c: 02089263 bnez a7,400090a0 <jffs2_write_dirent+0x294> <== NOT EXECUTED
40009080: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
40009084: 4001f637 lui a2,0x4001f <== NOT EXECUTED
40009088: 4001f537 lui a0,0x4001f <== NOT EXECUTED
4000908c: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
40009090: 1c860613 addi a2,a2,456 # 4001f1c8 <__func__.0> <== NOT EXECUTED
40009094: 10500593 li a1,261 <== NOT EXECUTED
40009098: 02c50513 addi a0,a0,44 # 4001f02c <__func__.9+0x74> <== NOT EXECUTED
4000909c: 204040ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
rd->version = cpu_to_je32(++f->highest_version);
400090a0: 00160613 addi a2,a2,1 <== NOT EXECUTED
400090a4: 00ca2023 sw a2,0(s4) <== NOT EXECUTED
400090a8: 00865693 srli a3,a2,0x8 <== NOT EXECUTED
400090ac: 01065713 srli a4,a2,0x10 <== NOT EXECUTED
400090b0: 01865793 srli a5,a2,0x18 <== NOT EXECUTED
400090b4: 00c40823 sb a2,16(s0) <== NOT EXECUTED
400090b8: 00d408a3 sb a3,17(s0) <== NOT EXECUTED
400090bc: 00e40923 sb a4,18(s0) <== NOT EXECUTED
400090c0: 00f409a3 sb a5,19(s0) <== NOT EXECUTED
fd->version = je32_to_cpu(rd->version);
400090c4: 00cd2423 sw a2,8(s10) <== NOT EXECUTED
rd->node_crc = cpu_to_je32(crc32(0, rd, sizeof(*rd)-8));
400090c8: 00040593 mv a1,s0 <== NOT EXECUTED
400090cc: 02000613 li a2,32 <== NOT EXECUTED
400090d0: 00000513 li a0,0 <== NOT EXECUTED
400090d4: 01112623 sw a7,12(sp) <== NOT EXECUTED
400090d8: 01012223 sw a6,4(sp) <== NOT EXECUTED
400090dc: 3b4010ef jal ra,4000a490 <cyg_crc32_accumulate> <== NOT EXECUTED
400090e0: 00c12883 lw a7,12(sp) <== NOT EXECUTED
400090e4: 00412803 lw a6,4(sp) <== NOT EXECUTED
400090e8: 00855613 srli a2,a0,0x8 <== NOT EXECUTED
400090ec: 01055693 srli a3,a0,0x10 <== NOT EXECUTED
400090f0: 01855713 srli a4,a0,0x18 <== NOT EXECUTED
400090f4: 02a40023 sb a0,32(s0) <== NOT EXECUTED
400090f8: 02c400a3 sb a2,33(s0) <== NOT EXECUTED
400090fc: 02d40123 sb a3,34(s0) <== NOT EXECUTED
40009100: 02e401a3 sb a4,35(s0) <== NOT EXECUTED
flash_ofs = write_ofs(c);
40009104: 010b0833 add a6,s6,a6
40009108: 41b80db3 sub s11,a6,s11
ret = jffs2_flash_writev(c, vecs, 2, flash_ofs, &retlen,
4000910c: 00000713 li a4,0
40009110: 01810793 addi a5,sp,24
40009114: 000d8693 mv a3,s11
40009118: 00200613 li a2,2
4000911c: 02010593 addi a1,sp,32
40009120: 00090513 mv a0,s2
40009124: 01112223 sw a7,4(sp)
40009128: 081020ef jal ra,4000b9a8 <jffs2_flash_direct_writev>
if (ret || (retlen != sizeof(*rd) + namelen)) {
4000912c: 00412883 lw a7,4(sp)
40009130: 01812703 lw a4,24(sp)
ret = jffs2_flash_writev(c, vecs, 2, flash_ofs, &retlen,
40009134: 00050b13 mv s6,a0
if (ret || (retlen != sizeof(*rd) + namelen)) {
40009138: 00051463 bnez a0,40009140 <jffs2_write_dirent+0x334> <== NEVER TAKEN
4000913c: 0d770a63 beq a4,s7,40009210 <jffs2_write_dirent+0x404>
pr_notice("Write of %zd bytes at 0x%08x failed. returned %d, retlen %zd\n",
40009140: 000b0693 mv a3,s6 <== NOT EXECUTED
40009144: 000d8613 mv a2,s11 <== NOT EXECUTED
40009148: 000b8593 mv a1,s7 <== NOT EXECUTED
4000914c: 058c8513 addi a0,s9,88 # 4001f058 <__func__.9+0xa0> <== NOT EXECUTED
40009150: eacff0ef jal ra,400087fc <jffs2_printk> <== NOT EXECUTED
if (retlen) {
40009154: 01812783 lw a5,24(sp) <== NOT EXECUTED
40009158: 08079063 bnez a5,400091d8 <jffs2_write_dirent+0x3cc> <== NOT EXECUTED
pr_notice("Not marking the space at 0x%08x as dirty because the flash driver returned retlen zero\n",
4000915c: 4001d7b7 lui a5,0x4001d <== NOT EXECUTED
40009160: 48478513 addi a0,a5,1156 # 4001d484 <rtems_jffs2_ops+0x2fc> <== NOT EXECUTED
40009164: 000d8593 mv a1,s11 <== NOT EXECUTED
40009168: e94ff0ef jal ra,400087fc <jffs2_printk> <== NOT EXECUTED
if (!retried) {
4000916c: 00100793 li a5,1 <== NOT EXECUTED
40009170: 08fc0263 beq s8,a5,400091f4 <jffs2_write_dirent+0x3e8> <== NOT EXECUTED
struct jffs2_eraseblock *jeb = &c->blocks[flash_ofs / c->sector_size];
40009174: 03492783 lw a5,52(s2) <== NOT EXECUTED
40009178: 05492c03 lw s8,84(s2) <== NOT EXECUTED
jffs2_dbg_acct_sanity_check(c,jeb);
4000917c: 00090513 mv a0,s2 <== NOT EXECUTED
struct jffs2_eraseblock *jeb = &c->blocks[flash_ofs / c->sector_size];
40009180: 02fdd833 divu a6,s11,a5 <== NOT EXECUTED
40009184: 03400793 li a5,52 <== NOT EXECUTED
40009188: 02f80833 mul a6,a6,a5 <== NOT EXECUTED
4000918c: 010c0c33 add s8,s8,a6 <== NOT EXECUTED
jffs2_dbg_acct_sanity_check(c,jeb);
40009190: 000c0593 mv a1,s8 <== NOT EXECUTED
40009194: 61c010ef jal ra,4000a7b0 <__jffs2_dbg_acct_sanity_check> <== NOT EXECUTED
if (alloc_mode == ALLOC_GC) {
40009198: 00200793 li a5,2 <== NOT EXECUTED
4000919c: 0ef98463 beq s3,a5,40009284 <jffs2_write_dirent+0x478> <== NOT EXECUTED
jffs2_complete_reservation(c);
400091a0: 00090513 mv a0,s2 <== NOT EXECUTED
400091a4: 8e5fc0ef jal ra,40005a88 <jffs2_complete_reservation> <== NOT EXECUTED
ret = jffs2_reserve_space(c, sizeof(*rd) + namelen, &dummy,
400091a8: 00812703 lw a4,8(sp) <== NOT EXECUTED
400091ac: 00098693 mv a3,s3 <== NOT EXECUTED
400091b0: 01c10613 addi a2,sp,28 <== NOT EXECUTED
400091b4: 000b8593 mv a1,s7 <== NOT EXECUTED
400091b8: 00090513 mv a0,s2 <== NOT EXECUTED
400091bc: 8e4fd0ef jal ra,400062a0 <jffs2_reserve_space> <== NOT EXECUTED
400091c0: 00050b13 mv s6,a0 <== NOT EXECUTED
if (!ret) {
400091c4: 0e0b0263 beqz s6,400092a8 <jffs2_write_dirent+0x49c> <== NOT EXECUTED
jffs2_free_full_dirent(fd);
400091c8: 000d0513 mv a0,s10 <== NOT EXECUTED
400091cc: eacfb0ef jal ra,40004878 <jffs2_free_full_dirent> <== NOT EXECUTED
return ERR_PTR(ret?ret:-EIO);
400091d0: 000b0d13 mv s10,s6 <== NOT EXECUTED
400091d4: d35ff06f j 40008f08 <jffs2_write_dirent+0xfc> <== NOT EXECUTED
jffs2_add_physical_node_ref(c, flash_ofs | REF_OBSOLETE, PAD(sizeof(*rd)+namelen), NULL);
400091d8: 00000693 li a3,0 <== NOT EXECUTED
400091dc: 000a8613 mv a2,s5 <== NOT EXECUTED
400091e0: 001de593 ori a1,s11,1 <== NOT EXECUTED
400091e4: 00090513 mv a0,s2 <== NOT EXECUTED
400091e8: f48fc0ef jal ra,40005930 <jffs2_add_physical_node_ref> <== NOT EXECUTED
if (!retried) {
400091ec: 00100793 li a5,1 <== NOT EXECUTED
400091f0: f8fc12e3 bne s8,a5,40009174 <jffs2_write_dirent+0x368> <== NOT EXECUTED
jffs2_free_full_dirent(fd);
400091f4: 000d0513 mv a0,s10 <== NOT EXECUTED
400091f8: e80fb0ef jal ra,40004878 <jffs2_free_full_dirent> <== NOT EXECUTED
return ERR_PTR(ret?ret:-EIO);
400091fc: ffb00d13 li s10,-5 <== NOT EXECUTED
40009200: d00b04e3 beqz s6,40008f08 <jffs2_write_dirent+0xfc> <== NOT EXECUTED
40009204: fcdff06f j 400091d0 <jffs2_write_dirent+0x3c4> <== NOT EXECUTED
return ERR_PTR(-ENOMEM);
40009208: ff400d13 li s10,-12 <== NOT EXECUTED
4000920c: cfdff06f j 40008f08 <jffs2_write_dirent+0xfc> <== NOT EXECUTED
fd->raw = jffs2_add_physical_node_ref(c, flash_ofs | dirent_node_state(rd),
40009210: 01112223 sw a7,4(sp)
40009214: 01544703 lbu a4,21(s0)
40009218: 01444683 lbu a3,20(s0)
4000921c: 01644783 lbu a5,22(s0)
40009220: 01744583 lbu a1,23(s0)
40009224: 00871713 slli a4,a4,0x8
40009228: 00d76733 or a4,a4,a3
4000922c: 01079793 slli a5,a5,0x10
40009230: 00e7e7b3 or a5,a5,a4
40009234: 01859593 slli a1,a1,0x18
40009238: 00f5e5b3 or a1,a1,a5
4000923c: 014a2683 lw a3,20(s4)
40009240: 0015b593 seqz a1,a1
40009244: 00258593 addi a1,a1,2
PAD(sizeof(*rd)+namelen), f->inocache);
40009248: 02b48613 addi a2,s1,43
fd->raw = jffs2_add_physical_node_ref(c, flash_ofs | dirent_node_state(rd),
4000924c: ffc67613 andi a2,a2,-4
40009250: 01b5e5b3 or a1,a1,s11
40009254: 00090513 mv a0,s2
40009258: ed8fc0ef jal ra,40005930 <jffs2_add_physical_node_ref>
4000925c: 00ad2023 sw a0,0(s10)
if (IS_ERR(fd->raw)) {
40009260: c1800793 li a5,-1000
40009264: 00412883 lw a7,4(sp)
fd->raw = jffs2_add_physical_node_ref(c, flash_ofs | dirent_node_state(rd),
40009268: 00050413 mv s0,a0
if (IS_ERR(fd->raw)) {
4000926c: 04a7ea63 bltu a5,a0,400092c0 <jffs2_write_dirent+0x4b4>
if (retried) {
40009270: c8088ce3 beqz a7,40008f08 <jffs2_write_dirent+0xfc> <== ALWAYS TAKEN
jffs2_dbg_acct_sanity_check(c,NULL);
40009274: 00000593 li a1,0 <== NOT EXECUTED
40009278: 00090513 mv a0,s2 <== NOT EXECUTED
4000927c: 534010ef jal ra,4000a7b0 <__jffs2_dbg_acct_sanity_check> <== NOT EXECUTED
40009280: c89ff06f j 40008f08 <jffs2_write_dirent+0xfc> <== NOT EXECUTED
ret = jffs2_reserve_space_gc(c, sizeof(*rd) + namelen, &dummy,
40009284: 00812683 lw a3,8(sp) <== NOT EXECUTED
40009288: 01c10613 addi a2,sp,28 <== NOT EXECUTED
4000928c: 000b8593 mv a1,s7 <== NOT EXECUTED
40009290: 00090513 mv a0,s2 <== NOT EXECUTED
40009294: f85fc0ef jal ra,40006218 <jffs2_reserve_space_gc> <== NOT EXECUTED
40009298: 00050b13 mv s6,a0 <== NOT EXECUTED
4000929c: f29ff06f j 400091c4 <jffs2_write_dirent+0x3b8> <== NOT EXECUTED
uint32_t hash = 0;
400092a0: 00000813 li a6,0 <== NOT EXECUTED
400092a4: d4dff06f j 40008ff0 <jffs2_write_dirent+0x1e4> <== NOT EXECUTED
jffs2_dbg_acct_sanity_check(c,jeb);
400092a8: 000c0593 mv a1,s8 <== NOT EXECUTED
400092ac: 00090513 mv a0,s2 <== NOT EXECUTED
400092b0: 500010ef jal ra,4000a7b0 <__jffs2_dbg_acct_sanity_check> <== NOT EXECUTED
goto retry;
400092b4: 00100c13 li s8,1 <== NOT EXECUTED
retried = 1;
400092b8: 00100893 li a7,1 <== NOT EXECUTED
400092bc: d79ff06f j 40009034 <jffs2_write_dirent+0x228> <== NOT EXECUTED
jffs2_free_full_dirent(fd);
400092c0: 000d0513 mv a0,s10 <== NOT EXECUTED
400092c4: db4fb0ef jal ra,40004878 <jffs2_free_full_dirent> <== NOT EXECUTED
return ERR_CAST(hold_err);
400092c8: 00040d13 mv s10,s0 <== NOT EXECUTED
400092cc: c3dff06f j 40008f08 <jffs2_write_dirent+0xfc> <== NOT EXECUTED
40008998 <jffs2_write_dnode>:
struct jffs2_full_dnode *jffs2_write_dnode(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
struct jffs2_raw_inode *ri, const unsigned char *data,
uint32_t datalen, int alloc_mode)
{
40008998: f9010113 addi sp,sp,-112
4000899c: 06812423 sw s0,104(sp)
400089a0: 06912223 sw s1,100(sp)
400089a4: 05312e23 sw s3,92(sp)
400089a8: 05412c23 sw s4,88(sp)
400089ac: 05612823 sw s6,80(sp)
400089b0: 05712623 sw s7,76(sp)
400089b4: 03b12e23 sw s11,60(sp)
400089b8: 06112623 sw ra,108(sp)
400089bc: 07212023 sw s2,96(sp)
400089c0: 05512a23 sw s5,84(sp)
400089c4: 05812423 sw s8,72(sp)
400089c8: 05912223 sw s9,68(sp)
400089cc: 05a12023 sw s10,64(sp)
400089d0: 00060d93 mv s11,a2
vecs[0].iov_base = ri;
vecs[0].iov_len = sizeof(*ri);
vecs[1].iov_base = (unsigned char *)data;
vecs[1].iov_len = datalen;
if (je32_to_cpu(ri->totlen) != sizeof(*ri) + datalen) {
400089d4: 00564603 lbu a2,5(a2)
400089d8: 004dce03 lbu t3,4(s11)
400089dc: 006dc303 lbu t1,6(s11)
400089e0: 007dc883 lbu a7,7(s11)
400089e4: 00861613 slli a2,a2,0x8
400089e8: 01c66633 or a2,a2,t3
400089ec: 01031313 slli t1,t1,0x10
{
400089f0: 00068a13 mv s4,a3
if (je32_to_cpu(ri->totlen) != sizeof(*ri) + datalen) {
400089f4: 00c36333 or t1,t1,a2
vecs[0].iov_len = sizeof(*ri);
400089f8: 04400693 li a3,68
if (je32_to_cpu(ri->totlen) != sizeof(*ri) + datalen) {
400089fc: 01889613 slli a2,a7,0x18
vecs[0].iov_base = ri;
40008a00: 03b12023 sw s11,32(sp)
vecs[0].iov_len = sizeof(*ri);
40008a04: 02d12223 sw a3,36(sp)
vecs[1].iov_base = (unsigned char *)data;
40008a08: 03412423 sw s4,40(sp)
vecs[1].iov_len = datalen;
40008a0c: 02e12623 sw a4,44(sp)
if (je32_to_cpu(ri->totlen) != sizeof(*ri) + datalen) {
40008a10: 00666633 or a2,a2,t1
40008a14: 04470b93 addi s7,a4,68
{
40008a18: 00070493 mv s1,a4
40008a1c: 00050413 mv s0,a0
40008a20: 00058b13 mv s6,a1
40008a24: 00078993 mv s3,a5
if (je32_to_cpu(ri->totlen) != sizeof(*ri) + datalen) {
40008a28: 01760c63 beq a2,s7,40008a40 <jffs2_write_dnode+0xa8>
pr_warn("%s(): ri->totlen (0x%08x) != sizeof(*ri) (0x%08zx) + datalen (0x%08x)\n",
40008a2c: 4001f5b7 lui a1,0x4001f <== NOT EXECUTED
40008a30: 4001f537 lui a0,0x4001f <== NOT EXECUTED
40008a34: 1dc58593 addi a1,a1,476 # 4001f1dc <__func__.1> <== NOT EXECUTED
40008a38: fd850513 addi a0,a0,-40 # 4001efd8 <__func__.9+0x20> <== NOT EXECUTED
40008a3c: dc1ff0ef jal ra,400087fc <jffs2_printk> <== NOT EXECUTED
__func__, je32_to_cpu(ri->totlen),
sizeof(*ri), datalen);
}
fn = jffs2_alloc_full_dnode();
40008a40: e3dfb0ef jal ra,4000487c <jffs2_alloc_full_dnode>
40008a44: 00050913 mv s2,a0
if (!fn)
40008a48: 24050c63 beqz a0,40008ca0 <jffs2_write_dnode+0x308> <== NEVER TAKEN
return ERR_PTR(-ENOMEM);
/* check number of valid vecs */
if (!datalen || !data)
cnt = 1;
40008a4c: 00100c13 li s8,1
if (!datalen || !data)
40008a50: 00048663 beqz s1,40008a5c <jffs2_write_dnode+0xc4>
cnt = 1;
40008a54: 01403c33 snez s8,s4
40008a58: 001c0c13 addi s8,s8,1
/* Don't change raw->size to match retlen. We may have
written the node header already, and only the data will
seem corrupted, in which case the scan would skip over
any node we write before the original intended end of
this node */
jffs2_add_physical_node_ref(c, flash_ofs | REF_OBSOLETE, PAD(sizeof(*ri)+datalen), NULL);
40008a5c: 04748a13 addi s4,s1,71
40008a60: ffca7793 andi a5,s4,-4
retry:
40008a64: 00200d13 li s10,2
40008a68: 00000313 li t1,0
if ((alloc_mode!=ALLOC_GC) && (je32_to_cpu(ri->version) < f->highest_version)) {
40008a6c: 00200c93 li s9,2
jffs2_add_physical_node_ref(c, flash_ofs | REF_OBSOLETE, PAD(sizeof(*ri)+datalen), NULL);
40008a70: 00f12423 sw a5,8(sp)
flash_ofs = write_ofs(c);
40008a74: 05842783 lw a5,88(s0)
40008a78: 03442883 lw a7,52(s0)
40008a7c: 00c7aa83 lw s5,12(a5)
40008a80: 0207aa03 lw s4,32(a5)
if ((alloc_mode!=ALLOC_GC) && (je32_to_cpu(ri->version) < f->highest_version)) {
40008a84: 0b998c63 beq s3,s9,40008b3c <jffs2_write_dnode+0x1a4>
40008a88: 011dc683 lbu a3,17(s11)
40008a8c: 010dc603 lbu a2,16(s11)
40008a90: 012dc703 lbu a4,18(s11)
40008a94: 013dc783 lbu a5,19(s11)
40008a98: 00869693 slli a3,a3,0x8
40008a9c: 00c6e6b3 or a3,a3,a2
40008aa0: 01071713 slli a4,a4,0x10
40008aa4: 000b2603 lw a2,0(s6)
40008aa8: 00d76733 or a4,a4,a3
40008aac: 01879793 slli a5,a5,0x18
40008ab0: 00e7e7b3 or a5,a5,a4
40008ab4: 08c7f463 bgeu a5,a2,40008b3c <jffs2_write_dnode+0x1a4>
BUG_ON(!retried);
40008ab8: 02031263 bnez t1,40008adc <jffs2_write_dnode+0x144> <== NOT EXECUTED
40008abc: 4001d6b7 lui a3,0x4001d <== NOT EXECUTED
40008ac0: 4001f637 lui a2,0x4001f <== NOT EXECUTED
40008ac4: 4001f537 lui a0,0x4001f <== NOT EXECUTED
40008ac8: a1868693 addi a3,a3,-1512 # 4001ca18 <bsp_section_text_end+0xd8><== NOT EXECUTED
40008acc: 1dc60613 addi a2,a2,476 # 4001f1dc <__func__.1> <== NOT EXECUTED
40008ad0: 06700593 li a1,103 <== NOT EXECUTED
40008ad4: 02c50513 addi a0,a0,44 # 4001f02c <__func__.9+0x74> <== NOT EXECUTED
40008ad8: 7c8040ef jal ra,4000d2a0 <__assert_func> <== NOT EXECUTED
ri->version = cpu_to_je32(++f->highest_version);
40008adc: 00160613 addi a2,a2,1 <== NOT EXECUTED
40008ae0: 00cb2023 sw a2,0(s6) <== NOT EXECUTED
40008ae4: 00865693 srli a3,a2,0x8 <== NOT EXECUTED
40008ae8: 01065713 srli a4,a2,0x10 <== NOT EXECUTED
40008aec: 01865793 srli a5,a2,0x18 <== NOT EXECUTED
40008af0: 00cd8823 sb a2,16(s11) <== NOT EXECUTED
40008af4: 00dd88a3 sb a3,17(s11) <== NOT EXECUTED
40008af8: 00ed8923 sb a4,18(s11) <== NOT EXECUTED
ri->node_crc = cpu_to_je32(crc32(0, ri, sizeof(*ri)-8));
40008afc: 03c00613 li a2,60 <== NOT EXECUTED
ri->version = cpu_to_je32(++f->highest_version);
40008b00: 00fd89a3 sb a5,19(s11) <== NOT EXECUTED
ri->node_crc = cpu_to_je32(crc32(0, ri, sizeof(*ri)-8));
40008b04: 000d8593 mv a1,s11 <== NOT EXECUTED
40008b08: 00000513 li a0,0 <== NOT EXECUTED
40008b0c: 00612623 sw t1,12(sp) <== NOT EXECUTED
40008b10: 01112223 sw a7,4(sp) <== NOT EXECUTED
40008b14: 17d010ef jal ra,4000a490 <cyg_crc32_accumulate> <== NOT EXECUTED
40008b18: 00c12303 lw t1,12(sp) <== NOT EXECUTED
40008b1c: 00412883 lw a7,4(sp) <== NOT EXECUTED
40008b20: 00855613 srli a2,a0,0x8 <== NOT EXECUTED
40008b24: 01055693 srli a3,a0,0x10 <== NOT EXECUTED
40008b28: 01855713 srli a4,a0,0x18 <== NOT EXECUTED
40008b2c: 04ad8023 sb a0,64(s11) <== NOT EXECUTED
40008b30: 04cd80a3 sb a2,65(s11) <== NOT EXECUTED
40008b34: 04dd8123 sb a3,66(s11) <== NOT EXECUTED
40008b38: 04ed81a3 sb a4,67(s11) <== NOT EXECUTED
flash_ofs = write_ofs(c);
40008b3c: 011a88b3 add a7,s5,a7
40008b40: 41488a33 sub s4,a7,s4
ret = jffs2_flash_writev(c, vecs, cnt, flash_ofs, &retlen,
40008b44: 00000713 li a4,0
40008b48: 01810793 addi a5,sp,24
40008b4c: 000a0693 mv a3,s4
40008b50: 000c0613 mv a2,s8
40008b54: 02010593 addi a1,sp,32
40008b58: 00040513 mv a0,s0
40008b5c: 00612223 sw t1,4(sp)
40008b60: 649020ef jal ra,4000b9a8 <jffs2_flash_direct_writev>
if (ret || (retlen != sizeof(*ri) + datalen)) {
40008b64: 00412303 lw t1,4(sp)
40008b68: 01812703 lw a4,24(sp)
ret = jffs2_flash_writev(c, vecs, cnt, flash_ofs, &retlen,
40008b6c: 00050a93 mv s5,a0
if (ret || (retlen != sizeof(*ri) + datalen)) {
40008b70: 00051463 bnez a0,40008b78 <jffs2_write_dnode+0x1e0> <== NEVER TAKEN
40008b74: 14eb8663 beq s7,a4,40008cc0 <jffs2_write_dnode+0x328>
pr_notice("Write of %zd bytes at 0x%08x failed. returned %d, retlen %zd\n",
40008b78: 4001f7b7 lui a5,0x4001f <== NOT EXECUTED
40008b7c: 05878513 addi a0,a5,88 # 4001f058 <__func__.9+0xa0> <== NOT EXECUTED
40008b80: 000a8693 mv a3,s5 <== NOT EXECUTED
40008b84: 000a0613 mv a2,s4 <== NOT EXECUTED
40008b88: 000b8593 mv a1,s7 <== NOT EXECUTED
40008b8c: c71ff0ef jal ra,400087fc <jffs2_printk> <== NOT EXECUTED
if (retlen) {
40008b90: 01812783 lw a5,24(sp) <== NOT EXECUTED
40008b94: 08079263 bnez a5,40008c18 <jffs2_write_dnode+0x280> <== NOT EXECUTED
} else {
pr_notice("Not marking the space at 0x%08x as dirty because the flash driver returned retlen zero\n",
40008b98: 4001d7b7 lui a5,0x4001d <== NOT EXECUTED
40008b9c: 48478513 addi a0,a5,1156 # 4001d484 <rtems_jffs2_ops+0x2fc> <== NOT EXECUTED
40008ba0: 000a0593 mv a1,s4 <== NOT EXECUTED
40008ba4: c59ff0ef jal ra,400087fc <jffs2_printk> <== NOT EXECUTED
flash_ofs);
}
if (!retried && alloc_mode != ALLOC_NORETRY) {
40008ba8: 00100793 li a5,1 <== NOT EXECUTED
40008bac: 08fd0463 beq s10,a5,40008c34 <jffs2_write_dnode+0x29c> <== NOT EXECUTED
40008bb0: 00300793 li a5,3 <== NOT EXECUTED
40008bb4: 08f98063 beq s3,a5,40008c34 <jffs2_write_dnode+0x29c> <== NOT EXECUTED
/* Try to reallocate space and retry */
uint32_t dummy;
struct jffs2_eraseblock *jeb = &c->blocks[flash_ofs / c->sector_size];
40008bb8: 03442d03 lw s10,52(s0) <== NOT EXECUTED
40008bbc: 03400893 li a7,52 <== NOT EXECUTED
40008bc0: 05442783 lw a5,84(s0) <== NOT EXECUTED
40008bc4: 03aa5d33 divu s10,s4,s10 <== NOT EXECUTED
retried = 1;
jffs2_dbg(1, "Retrying failed write.\n");
jffs2_dbg_acct_sanity_check(c,jeb);
40008bc8: 00040513 mv a0,s0 <== NOT EXECUTED
struct jffs2_eraseblock *jeb = &c->blocks[flash_ofs / c->sector_size];
40008bcc: 031d0d33 mul s10,s10,a7 <== NOT EXECUTED
40008bd0: 01a78d33 add s10,a5,s10 <== NOT EXECUTED
jffs2_dbg_acct_sanity_check(c,jeb);
40008bd4: 000d0593 mv a1,s10 <== NOT EXECUTED
40008bd8: 3d9010ef jal ra,4000a7b0 <__jffs2_dbg_acct_sanity_check> <== NOT EXECUTED
jffs2_dbg_acct_paranoia_check(c, jeb);
if (alloc_mode == ALLOC_GC) {
40008bdc: 0b998463 beq s3,s9,40008c84 <jffs2_write_dnode+0x2ec> <== NOT EXECUTED
ret = jffs2_reserve_space_gc(c, sizeof(*ri) + datalen, &dummy,
JFFS2_SUMMARY_INODE_SIZE);
} else {
/* Locking pain */
mutex_unlock(&f->sem);
jffs2_complete_reservation(c);
40008be0: 00040513 mv a0,s0 <== NOT EXECUTED
40008be4: ea5fc0ef jal ra,40005a88 <jffs2_complete_reservation> <== NOT EXECUTED
ret = jffs2_reserve_space(c, sizeof(*ri) + datalen, &dummy,
40008be8: 01200713 li a4,18 <== NOT EXECUTED
40008bec: 00098693 mv a3,s3 <== NOT EXECUTED
40008bf0: 01c10613 addi a2,sp,28 <== NOT EXECUTED
40008bf4: 000b8593 mv a1,s7 <== NOT EXECUTED
40008bf8: 00040513 mv a0,s0 <== NOT EXECUTED
40008bfc: ea4fd0ef jal ra,400062a0 <jffs2_reserve_space> <== NOT EXECUTED
40008c00: 00050a93 mv s5,a0 <== NOT EXECUTED
alloc_mode, JFFS2_SUMMARY_INODE_SIZE);
mutex_lock(&f->sem);
}
if (!ret) {
40008c04: 0a0a8263 beqz s5,40008ca8 <jffs2_write_dnode+0x310> <== NOT EXECUTED
}
jffs2_dbg(1, "Failed to allocate space to retry failed write: %d!\n",
ret);
}
/* Release the full_dnode which is now useless, and return */
jffs2_free_full_dnode(fn);
40008c08: 00090513 mv a0,s2 <== NOT EXECUTED
40008c0c: c79fb0ef jal ra,40004884 <jffs2_free_full_dnode> <== NOT EXECUTED
return ERR_PTR(ret?ret:-EIO);
40008c10: 000a8913 mv s2,s5 <== NOT EXECUTED
40008c14: 0300006f j 40008c44 <jffs2_write_dnode+0x2ac> <== NOT EXECUTED
jffs2_add_physical_node_ref(c, flash_ofs | REF_OBSOLETE, PAD(sizeof(*ri)+datalen), NULL);
40008c18: 00812603 lw a2,8(sp) <== NOT EXECUTED
40008c1c: 00000693 li a3,0 <== NOT EXECUTED
40008c20: 001a6593 ori a1,s4,1 <== NOT EXECUTED
40008c24: 00040513 mv a0,s0 <== NOT EXECUTED
40008c28: d09fc0ef jal ra,40005930 <jffs2_add_physical_node_ref> <== NOT EXECUTED
if (!retried && alloc_mode != ALLOC_NORETRY) {
40008c2c: 00100793 li a5,1 <== NOT EXECUTED
40008c30: f8fd10e3 bne s10,a5,40008bb0 <jffs2_write_dnode+0x218> <== NOT EXECUTED
jffs2_free_full_dnode(fn);
40008c34: 00090513 mv a0,s2 <== NOT EXECUTED
40008c38: c4dfb0ef jal ra,40004884 <jffs2_free_full_dnode> <== NOT EXECUTED
return ERR_PTR(ret?ret:-EIO);
40008c3c: ffb00913 li s2,-5 <== NOT EXECUTED
40008c40: fc0a98e3 bnez s5,40008c10 <jffs2_write_dnode+0x278> <== NOT EXECUTED
if (retried) {
jffs2_dbg_acct_sanity_check(c,NULL);
}
return fn;
}
40008c44: 06c12083 lw ra,108(sp)
40008c48: 06812403 lw s0,104(sp)
40008c4c: 06412483 lw s1,100(sp)
40008c50: 05c12983 lw s3,92(sp)
40008c54: 05812a03 lw s4,88(sp)
40008c58: 05412a83 lw s5,84(sp)
40008c5c: 05012b03 lw s6,80(sp)
40008c60: 04c12b83 lw s7,76(sp)
40008c64: 04812c03 lw s8,72(sp)
40008c68: 04412c83 lw s9,68(sp)
40008c6c: 04012d03 lw s10,64(sp)
40008c70: 03c12d83 lw s11,60(sp)
40008c74: 00090513 mv a0,s2
40008c78: 06012903 lw s2,96(sp)
40008c7c: 07010113 addi sp,sp,112
40008c80: 00008067 ret
ret = jffs2_reserve_space_gc(c, sizeof(*ri) + datalen, &dummy,
40008c84: 01200693 li a3,18 <== NOT EXECUTED
40008c88: 01c10613 addi a2,sp,28 <== NOT EXECUTED
40008c8c: 000b8593 mv a1,s7 <== NOT EXECUTED
40008c90: 00040513 mv a0,s0 <== NOT EXECUTED
40008c94: d84fd0ef jal ra,40006218 <jffs2_reserve_space_gc> <== NOT EXECUTED
40008c98: 00050a93 mv s5,a0 <== NOT EXECUTED
40008c9c: f69ff06f j 40008c04 <jffs2_write_dnode+0x26c> <== NOT EXECUTED
return ERR_PTR(-ENOMEM);
40008ca0: ff400913 li s2,-12 <== NOT EXECUTED
40008ca4: fa1ff06f j 40008c44 <jffs2_write_dnode+0x2ac> <== NOT EXECUTED
jffs2_dbg_acct_sanity_check(c,jeb);
40008ca8: 000d0593 mv a1,s10 <== NOT EXECUTED
40008cac: 00040513 mv a0,s0 <== NOT EXECUTED
40008cb0: 301010ef jal ra,4000a7b0 <__jffs2_dbg_acct_sanity_check> <== NOT EXECUTED
goto retry;
40008cb4: 00100d13 li s10,1 <== NOT EXECUTED
retried = 1;
40008cb8: 00100313 li t1,1 <== NOT EXECUTED
40008cbc: db9ff06f j 40008a74 <jffs2_write_dnode+0xdc> <== NOT EXECUTED
if ((je32_to_cpu(ri->dsize) >= PAGE_SIZE) ||
40008cc0: 035dc703 lbu a4,53(s11)
40008cc4: 034dc603 lbu a2,52(s11)
40008cc8: 036dc783 lbu a5,54(s11)
40008ccc: 037dc683 lbu a3,55(s11)
40008cd0: 00871713 slli a4,a4,0x8
40008cd4: 00c76733 or a4,a4,a2
40008cd8: 01079793 slli a5,a5,0x10
40008cdc: 00e7e7b3 or a5,a5,a4
40008ce0: 01869713 slli a4,a3,0x18
40008ce4: 00f767b3 or a5,a4,a5
40008ce8: 00001737 lui a4,0x1
40008cec: 10e7f463 bgeu a5,a4,40008df4 <jffs2_write_dnode+0x45c>
( ((je32_to_cpu(ri->offset)&(PAGE_SIZE-1))==0) &&
40008cf0: 02ddc583 lbu a1,45(s11)
40008cf4: 02cdc503 lbu a0,44(s11)
40008cf8: 02edc603 lbu a2,46(s11)
40008cfc: 02fdc683 lbu a3,47(s11)
40008d00: 00859593 slli a1,a1,0x8
40008d04: 00a5e5b3 or a1,a1,a0
40008d08: 01061613 slli a2,a2,0x10
40008d0c: 00b66633 or a2,a2,a1
40008d10: 01869693 slli a3,a3,0x18
40008d14: 00c6e6b3 or a3,a3,a2
40008d18: fff70713 addi a4,a4,-1 # fff <bsp_section_start_size+0xfbb>
40008d1c: 00e6f733 and a4,a3,a4
if ((je32_to_cpu(ri->dsize) >= PAGE_SIZE) ||
40008d20: 02071a63 bnez a4,40008d54 <jffs2_write_dnode+0x3bc>
(je32_to_cpu(ri->dsize)+je32_to_cpu(ri->offset) == je32_to_cpu(ri->isize)))) {
40008d24: 01ddc583 lbu a1,29(s11)
40008d28: 01cdc503 lbu a0,28(s11)
40008d2c: 01edc603 lbu a2,30(s11)
40008d30: 01fdc703 lbu a4,31(s11)
40008d34: 00859593 slli a1,a1,0x8
40008d38: 00a5e5b3 or a1,a1,a0
40008d3c: 01061613 slli a2,a2,0x10
40008d40: 00b66633 or a2,a2,a1
40008d44: 01871713 slli a4,a4,0x18
40008d48: 00d787b3 add a5,a5,a3
40008d4c: 00c76733 or a4,a4,a2
( ((je32_to_cpu(ri->offset)&(PAGE_SIZE-1))==0) &&
40008d50: 0ae78263 beq a5,a4,40008df4 <jffs2_write_dnode+0x45c>
flash_ofs |= REF_NORMAL;
40008d54: 003a6593 ori a1,s4,3
fn->raw = jffs2_add_physical_node_ref(c, flash_ofs, PAD(sizeof(*ri)+datalen), f->inocache);
40008d58: 014b2683 lw a3,20(s6)
40008d5c: 04748613 addi a2,s1,71
40008d60: ffc67613 andi a2,a2,-4
40008d64: 00040513 mv a0,s0
40008d68: 00612223 sw t1,4(sp)
40008d6c: bc5fc0ef jal ra,40005930 <jffs2_add_physical_node_ref>
40008d70: 00a92023 sw a0,0(s2)
if (IS_ERR(fn->raw)) {
40008d74: c1800793 li a5,-1000
40008d78: 00412303 lw t1,4(sp)
fn->raw = jffs2_add_physical_node_ref(c, flash_ofs, PAD(sizeof(*ri)+datalen), f->inocache);
40008d7c: 00050493 mv s1,a0
if (IS_ERR(fn->raw)) {
40008d80: 06a7ee63 bltu a5,a0,40008dfc <jffs2_write_dnode+0x464>
fn->ofs = je32_to_cpu(ri->offset);
40008d84: 02ddc683 lbu a3,45(s11)
40008d88: 02cdc603 lbu a2,44(s11)
40008d8c: 02edc703 lbu a4,46(s11)
40008d90: 02fdc783 lbu a5,47(s11)
40008d94: 00869693 slli a3,a3,0x8
40008d98: 00c6e6b3 or a3,a3,a2
40008d9c: 01071713 slli a4,a4,0x10
40008da0: 00d76733 or a4,a4,a3
40008da4: 01879793 slli a5,a5,0x18
40008da8: 00e7e7b3 or a5,a5,a4
40008dac: 00f92223 sw a5,4(s2)
fn->size = je32_to_cpu(ri->dsize);
40008db0: 035dc683 lbu a3,53(s11)
40008db4: 034dc603 lbu a2,52(s11)
40008db8: 036dc703 lbu a4,54(s11)
40008dbc: 037dc783 lbu a5,55(s11)
40008dc0: 00869693 slli a3,a3,0x8
40008dc4: 00c6e6b3 or a3,a3,a2
40008dc8: 01071713 slli a4,a4,0x10
40008dcc: 00d76733 or a4,a4,a3
40008dd0: 01879793 slli a5,a5,0x18
40008dd4: 00e7e7b3 or a5,a5,a4
40008dd8: 00f92423 sw a5,8(s2)
fn->frags = 0;
40008ddc: 00092623 sw zero,12(s2)
if (retried) {
40008de0: e60302e3 beqz t1,40008c44 <jffs2_write_dnode+0x2ac> <== ALWAYS TAKEN
jffs2_dbg_acct_sanity_check(c,NULL);
40008de4: 00000593 li a1,0 <== NOT EXECUTED
40008de8: 00040513 mv a0,s0 <== NOT EXECUTED
40008dec: 1c5010ef jal ra,4000a7b0 <__jffs2_dbg_acct_sanity_check> <== NOT EXECUTED
40008df0: e55ff06f j 40008c44 <jffs2_write_dnode+0x2ac> <== NOT EXECUTED
flash_ofs |= REF_PRISTINE;
40008df4: 002a6593 ori a1,s4,2
40008df8: f61ff06f j 40008d58 <jffs2_write_dnode+0x3c0>
jffs2_free_full_dnode(fn);
40008dfc: 00090513 mv a0,s2 <== NOT EXECUTED
40008e00: a85fb0ef jal ra,40004884 <jffs2_free_full_dnode> <== NOT EXECUTED
return ERR_CAST(hold_err);
40008e04: 00048913 mv s2,s1 <== NOT EXECUTED
40008e08: e3dff06f j 40008c44 <jffs2_write_dnode+0x2ac> <== NOT EXECUTED
400092d0 <jffs2_write_inode_range>:
we don't have to go digging in struct inode or its equivalent. It should set:
mode, uid, gid, (starting)isize, atime, ctime, mtime */
int jffs2_write_inode_range(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
struct jffs2_raw_inode *ri, unsigned char *buf,
uint32_t offset, uint32_t writelen, uint32_t *retlen)
{
400092d0: fa010113 addi sp,sp,-96
400092d4: 04112e23 sw ra,92(sp)
400092d8: 04812c23 sw s0,88(sp)
400092dc: 04912a23 sw s1,84(sp)
400092e0: 05212823 sw s2,80(sp)
400092e4: 05312623 sw s3,76(sp)
400092e8: 05412423 sw s4,72(sp)
400092ec: 05512223 sw s5,68(sp)
400092f0: 05612023 sw s6,64(sp)
400092f4: 03712e23 sw s7,60(sp)
400092f8: 03812c23 sw s8,56(sp)
400092fc: 03912a23 sw s9,52(sp)
40009300: 03a12823 sw s10,48(sp)
40009304: 03b12623 sw s11,44(sp)
40009308: 01012623 sw a6,12(sp)
uint32_t writtenlen = 0;
jffs2_dbg(1, "%s(): Ino #%u, ofs 0x%x, len 0x%x\n",
__func__, f->inocache->ino, offset, writelen);
while(writelen) {
4000930c: 36078a63 beqz a5,40009680 <jffs2_write_inode_range+0x3b0> <== NEVER TAKEN
40009310: 00078b93 mv s7,a5
40009314: 00050993 mv s3,a0
40009318: 00058493 mv s1,a1
4000931c: 00060413 mv s0,a2
40009320: 00068c13 mv s8,a3
40009324: 00070913 mv s2,a4
if (ret) {
jffs2_dbg(1, "jffs2_reserve_space returned %d\n", ret);
break;
}
mutex_lock(&f->sem);
datalen = min_t(uint32_t, writelen,
40009328: 00001d37 lui s10,0x1
uint32_t writtenlen = 0;
4000932c: 00012423 sw zero,8(sp)
datalen = min_t(uint32_t, writelen,
40009330: 000017b7 lui a5,0x1
40009334: fff78793 addi a5,a5,-1 # fff <bsp_section_start_size+0xfbb>
ri->hdr_crc = cpu_to_je32(crc32(0, ri, sizeof(struct jffs2_unknown_node)-4));
ri->ino = cpu_to_je32(f->inocache->ino);
ri->version = cpu_to_je32(++f->highest_version);
ri->isize = cpu_to_je32(max(je32_to_cpu(ri->isize), offset + datalen));
ri->offset = cpu_to_je32(offset);
40009338: 01095a93 srli s5,s2,0x10
datalen = min_t(uint32_t, writelen,
4000933c: 00f97a33 and s4,s2,a5
ri->offset = cpu_to_je32(offset);
40009340: 00895b13 srli s6,s2,0x8
40009344: 0ffaf793 andi a5,s5,255
unsigned char *comprbuf = NULL;
40009348: 00012823 sw zero,16(sp)
4000934c: 00200c93 li s9,2
datalen = min_t(uint32_t, writelen,
40009350: 414d0a33 sub s4,s10,s4
ri->offset = cpu_to_je32(offset);
40009354: 0ffb7b13 andi s6,s6,255
40009358: 00f12223 sw a5,4(sp)
ret = jffs2_reserve_space(c, sizeof(*ri) + JFFS2_MIN_DATA_LEN,
4000935c: 01200713 li a4,18
40009360: 00000693 li a3,0
40009364: 01410613 addi a2,sp,20
40009368: 0c400593 li a1,196
4000936c: 00098513 mv a0,s3
40009370: f31fc0ef jal ra,400062a0 <jffs2_reserve_space>
40009374: 00050d93 mv s11,a0
if (ret) {
40009378: 24051663 bnez a0,400095c4 <jffs2_write_inode_range+0x2f4>
datalen = min_t(uint32_t, writelen,
4000937c: 000a0793 mv a5,s4
40009380: 014bf463 bgeu s7,s4,40009388 <jffs2_write_inode_range+0xb8>
40009384: 000b8793 mv a5,s7
cdatalen = min_t(uint32_t, alloclen - sizeof(*ri), datalen);
40009388: 01412803 lw a6,20(sp)
datalen = min_t(uint32_t, writelen,
4000938c: 00f12c23 sw a5,24(sp)
cdatalen = min_t(uint32_t, alloclen - sizeof(*ri), datalen);
40009390: fbc80813 addi a6,a6,-68
40009394: 0107f463 bgeu a5,a6,4000939c <jffs2_write_inode_range+0xcc>
40009398: 00078813 mv a6,a5
comprtype = jffs2_compress(c, f, buf, &comprbuf, &datalen, &cdatalen);
4000939c: 01c10793 addi a5,sp,28
400093a0: 01810713 addi a4,sp,24
400093a4: 01010693 addi a3,sp,16
400093a8: 000c0613 mv a2,s8
400093ac: 00048593 mv a1,s1
400093b0: 00098513 mv a0,s3
cdatalen = min_t(uint32_t, alloclen - sizeof(*ri), datalen);
400093b4: 01012e23 sw a6,28(sp)
comprtype = jffs2_compress(c, f, buf, &comprbuf, &datalen, &cdatalen);
400093b8: 114010ef jal ra,4000a4cc <jffs2_compress>
ri->totlen = cpu_to_je32(sizeof(*ri) + cdatalen);
400093bc: 01c12783 lw a5,28(sp)
ri->magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
400093c0: f8500593 li a1,-123
400093c4: 00b40023 sb a1,0(s0)
400093c8: 01900593 li a1,25
ri->totlen = cpu_to_je32(sizeof(*ri) + cdatalen);
400093cc: 04478793 addi a5,a5,68
ri->magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
400093d0: 00b400a3 sb a1,1(s0)
ri->nodetype = cpu_to_je16(JFFS2_NODETYPE_INODE);
400093d4: 00200593 li a1,2
ri->totlen = cpu_to_je32(sizeof(*ri) + cdatalen);
400093d8: 0087d613 srli a2,a5,0x8
400093dc: 0107d693 srli a3,a5,0x10
400093e0: 0187d713 srli a4,a5,0x18
ri->nodetype = cpu_to_je16(JFFS2_NODETYPE_INODE);
400093e4: 00b40123 sb a1,2(s0)
400093e8: fe000593 li a1,-32
400093ec: 00b401a3 sb a1,3(s0)
ri->totlen = cpu_to_je32(sizeof(*ri) + cdatalen);
400093f0: 00f40223 sb a5,4(s0)
400093f4: 00c402a3 sb a2,5(s0)
400093f8: 00d40323 sb a3,6(s0)
400093fc: 00e403a3 sb a4,7(s0)
ri->hdr_crc = cpu_to_je32(crc32(0, ri, sizeof(struct jffs2_unknown_node)-4));
40009400: 00800613 li a2,8
40009404: 00040593 mv a1,s0
comprtype = jffs2_compress(c, f, buf, &comprbuf, &datalen, &cdatalen);
40009408: 00050d93 mv s11,a0
ri->hdr_crc = cpu_to_je32(crc32(0, ri, sizeof(struct jffs2_unknown_node)-4));
4000940c: 00000513 li a0,0
40009410: 080010ef jal ra,4000a490 <cyg_crc32_accumulate>
ri->ino = cpu_to_je32(f->inocache->ino);
40009414: 0144a783 lw a5,20(s1)
ri->version = cpu_to_je32(++f->highest_version);
40009418: 0004a703 lw a4,0(s1)
ri->hdr_crc = cpu_to_je32(crc32(0, ri, sizeof(struct jffs2_unknown_node)-4));
4000941c: 01055893 srli a7,a0,0x10
ri->ino = cpu_to_je32(f->inocache->ino);
40009420: 00c7c583 lbu a1,12(a5)
40009424: 00d7c603 lbu a2,13(a5)
40009428: 00e7c683 lbu a3,14(a5)
4000942c: 00f7c783 lbu a5,15(a5)
ri->hdr_crc = cpu_to_je32(crc32(0, ri, sizeof(struct jffs2_unknown_node)-4));
40009430: 01855813 srli a6,a0,0x18
40009434: 00855313 srli t1,a0,0x8
ri->version = cpu_to_je32(++f->highest_version);
40009438: 00170713 addi a4,a4,1
ri->hdr_crc = cpu_to_je32(crc32(0, ri, sizeof(struct jffs2_unknown_node)-4));
4000943c: 00a40423 sb a0,8(s0)
40009440: 01140523 sb a7,10(s0)
40009444: 010405a3 sb a6,11(s0)
ri->ino = cpu_to_je32(f->inocache->ino);
40009448: 00b40623 sb a1,12(s0)
4000944c: 00c406a3 sb a2,13(s0)
40009450: 00d40723 sb a3,14(s0)
40009454: 00f407a3 sb a5,15(s0)
ri->hdr_crc = cpu_to_je32(crc32(0, ri, sizeof(struct jffs2_unknown_node)-4));
40009458: 006404a3 sb t1,9(s0)
ri->version = cpu_to_je32(++f->highest_version);
4000945c: 00e4a023 sw a4,0(s1)
ri->isize = cpu_to_je32(max(je32_to_cpu(ri->isize), offset + datalen));
40009460: 01d44803 lbu a6,29(s0)
40009464: 01c44583 lbu a1,28(s0)
40009468: 01e44683 lbu a3,30(s0)
4000946c: 01f44603 lbu a2,31(s0)
40009470: 01812783 lw a5,24(sp)
40009474: 00881813 slli a6,a6,0x8
40009478: 00b86833 or a6,a6,a1
4000947c: 01069693 slli a3,a3,0x10
ri->version = cpu_to_je32(++f->highest_version);
40009480: 00875893 srli a7,a4,0x8
40009484: 01075513 srli a0,a4,0x10
40009488: 01875593 srli a1,a4,0x18
ri->isize = cpu_to_je32(max(je32_to_cpu(ri->isize), offset + datalen));
4000948c: 0106e6b3 or a3,a3,a6
40009490: 01861813 slli a6,a2,0x18
ri->version = cpu_to_je32(++f->highest_version);
40009494: 00e40823 sb a4,16(s0)
40009498: 011408a3 sb a7,17(s0)
4000949c: 00a40923 sb a0,18(s0)
400094a0: 00b409a3 sb a1,19(s0)
ri->isize = cpu_to_je32(max(je32_to_cpu(ri->isize), offset + datalen));
400094a4: 01278733 add a4,a5,s2
400094a8: 00d86833 or a6,a6,a3
400094ac: 00e87463 bgeu a6,a4,400094b4 <jffs2_write_inode_range+0x1e4>
400094b0: 00070813 mv a6,a4
ri->csize = cpu_to_je32(cdatalen);
400094b4: 01c12703 lw a4,28(sp)
ri->isize = cpu_to_je32(max(je32_to_cpu(ri->isize), offset + datalen));
400094b8: 00885093 srli ra,a6,0x8
400094bc: 01085393 srli t2,a6,0x10
400094c0: 01885293 srli t0,a6,0x18
400094c4: 01040e23 sb a6,28(s0)
ri->offset = cpu_to_je32(offset);
400094c8: 00412803 lw a6,4(sp)
ri->csize = cpu_to_je32(cdatalen);
400094cc: 00875f93 srli t6,a4,0x8
400094d0: 01075f13 srli t5,a4,0x10
400094d4: 01875e93 srli t4,a4,0x18
ri->dsize = cpu_to_je32(datalen);
400094d8: 0087de13 srli t3,a5,0x8
400094dc: 0107d313 srli t1,a5,0x10
400094e0: 0187d893 srli a7,a5,0x18
ri->offset = cpu_to_je32(offset);
400094e4: 01895693 srli a3,s2,0x18
ri->compr = comprtype & 0xff;
ri->usercompr = (comprtype >> 8 ) & 0xff;
400094e8: 008dd513 srli a0,s11,0x8
ri->isize = cpu_to_je32(max(je32_to_cpu(ri->isize), offset + datalen));
400094ec: 00140ea3 sb ra,29(s0)
400094f0: 00740f23 sb t2,30(s0)
400094f4: 00540fa3 sb t0,31(s0)
ri->offset = cpu_to_je32(offset);
400094f8: 03040723 sb a6,46(s0)
ri->csize = cpu_to_je32(cdatalen);
400094fc: 03f408a3 sb t6,49(s0)
40009500: 03e40923 sb t5,50(s0)
40009504: 03d409a3 sb t4,51(s0)
ri->dsize = cpu_to_je32(datalen);
40009508: 03c40aa3 sb t3,53(s0)
4000950c: 02640b23 sb t1,54(s0)
40009510: 03140ba3 sb a7,55(s0)
ri->node_crc = cpu_to_je32(crc32(0, ri, sizeof(*ri)-8));
40009514: 03c00613 li a2,60
40009518: 00040593 mv a1,s0
ri->offset = cpu_to_je32(offset);
4000951c: 02d407a3 sb a3,47(s0)
ri->csize = cpu_to_je32(cdatalen);
40009520: 02e40823 sb a4,48(s0)
ri->dsize = cpu_to_je32(datalen);
40009524: 02f40a23 sb a5,52(s0)
ri->usercompr = (comprtype >> 8 ) & 0xff;
40009528: 02a40ca3 sb a0,57(s0)
ri->offset = cpu_to_je32(offset);
4000952c: 03240623 sb s2,44(s0)
40009530: 036406a3 sb s6,45(s0)
ri->compr = comprtype & 0xff;
40009534: 03b40c23 sb s11,56(s0)
ri->node_crc = cpu_to_je32(crc32(0, ri, sizeof(*ri)-8));
40009538: 00000513 li a0,0
4000953c: 755000ef jal ra,4000a490 <cyg_crc32_accumulate>
ri->data_crc = cpu_to_je32(crc32(0, comprbuf, cdatalen));
40009540: 01c12603 lw a2,28(sp)
40009544: 01012583 lw a1,16(sp)
ri->node_crc = cpu_to_je32(crc32(0, ri, sizeof(*ri)-8));
40009548: 00855693 srli a3,a0,0x8
4000954c: 01055713 srli a4,a0,0x10
40009550: 01855793 srli a5,a0,0x18
40009554: 04a40023 sb a0,64(s0)
40009558: 04d400a3 sb a3,65(s0)
4000955c: 04e40123 sb a4,66(s0)
40009560: 04f401a3 sb a5,67(s0)
ri->data_crc = cpu_to_je32(crc32(0, comprbuf, cdatalen));
40009564: 00000513 li a0,0
40009568: 729000ef jal ra,4000a490 <cyg_crc32_accumulate>
fn = jffs2_write_dnode(c, f, ri, comprbuf, cdatalen, ALLOC_NORETRY);
4000956c: 01c12703 lw a4,28(sp)
40009570: 01012683 lw a3,16(sp)
ri->data_crc = cpu_to_je32(crc32(0, comprbuf, cdatalen));
40009574: 00855593 srli a1,a0,0x8
40009578: 01055613 srli a2,a0,0x10
4000957c: 01855793 srli a5,a0,0x18
40009580: 02a40e23 sb a0,60(s0)
40009584: 02b40ea3 sb a1,61(s0)
40009588: 02c40f23 sb a2,62(s0)
4000958c: 02f40fa3 sb a5,63(s0)
fn = jffs2_write_dnode(c, f, ri, comprbuf, cdatalen, ALLOC_NORETRY);
40009590: 00040613 mv a2,s0
40009594: 00300793 li a5,3
40009598: 00048593 mv a1,s1
4000959c: 00098513 mv a0,s3
400095a0: bf8ff0ef jal ra,40008998 <jffs2_write_dnode>
jffs2_free_comprbuf(comprbuf, buf);
if (IS_ERR(fn)) {
400095a4: c1800793 li a5,-1000
fn = jffs2_write_dnode(c, f, ri, comprbuf, cdatalen, ALLOC_NORETRY);
400095a8: 00050a93 mv s5,a0
if (IS_ERR(fn)) {
400095ac: 06a7f663 bgeu a5,a0,40009618 <jffs2_write_inode_range+0x348>
ret = PTR_ERR(fn);
mutex_unlock(&f->sem);
jffs2_complete_reservation(c);
400095b0: 00098513 mv a0,s3 <== NOT EXECUTED
400095b4: cd4fc0ef jal ra,40005a88 <jffs2_complete_reservation> <== NOT EXECUTED
if (!retried) {
400095b8: 00100793 li a5,1 <== NOT EXECUTED
400095bc: 04fc9a63 bne s9,a5,40009610 <jffs2_write_inode_range+0x340> <== NOT EXECUTED
ret = PTR_ERR(fn);
400095c0: 000a8d93 mv s11,s5 <== NOT EXECUTED
writtenlen += datalen;
offset += datalen;
writelen -= datalen;
buf += datalen;
}
*retlen = writtenlen;
400095c4: 00c12783 lw a5,12(sp)
400095c8: 00812703 lw a4,8(sp)
return ret;
}
400095cc: 05c12083 lw ra,92(sp)
400095d0: 05812403 lw s0,88(sp)
*retlen = writtenlen;
400095d4: 00e7a023 sw a4,0(a5)
}
400095d8: 05412483 lw s1,84(sp)
400095dc: 05012903 lw s2,80(sp)
400095e0: 04c12983 lw s3,76(sp)
400095e4: 04812a03 lw s4,72(sp)
400095e8: 04412a83 lw s5,68(sp)
400095ec: 04012b03 lw s6,64(sp)
400095f0: 03c12b83 lw s7,60(sp)
400095f4: 03812c03 lw s8,56(sp)
400095f8: 03412c83 lw s9,52(sp)
400095fc: 03012d03 lw s10,48(sp)
40009600: 000d8513 mv a0,s11
40009604: 02c12d83 lw s11,44(sp)
40009608: 06010113 addi sp,sp,96
4000960c: 00008067 ret
40009610: 00100c93 li s9,1 <== NOT EXECUTED
40009614: d49ff06f j 4000935c <jffs2_write_inode_range+0x8c> <== NOT EXECUTED
ret = jffs2_add_full_dnode_to_inode(c, f, fn);
40009618: 00050613 mv a2,a0
4000961c: 00048593 mv a1,s1
40009620: 00098513 mv a0,s3
40009624: f54fb0ef jal ra,40004d78 <jffs2_add_full_dnode_to_inode>
if (f->metadata) {
40009628: 0084a783 lw a5,8(s1)
ret = jffs2_add_full_dnode_to_inode(c, f, fn);
4000962c: 00050d93 mv s11,a0
if (f->metadata) {
40009630: 00078e63 beqz a5,4000964c <jffs2_write_inode_range+0x37c>
jffs2_mark_node_obsolete(c, f->metadata->raw);
40009634: 0007a583 lw a1,0(a5)
40009638: 00098513 mv a0,s3
4000963c: c60fc0ef jal ra,40005a9c <jffs2_mark_node_obsolete>
jffs2_free_full_dnode(f->metadata);
40009640: 0084a503 lw a0,8(s1)
40009644: a40fb0ef jal ra,40004884 <jffs2_free_full_dnode>
f->metadata = NULL;
40009648: 0004a423 sw zero,8(s1)
if (ret) {
4000964c: 040d9a63 bnez s11,400096a0 <jffs2_write_inode_range+0x3d0> <== NEVER TAKEN
jffs2_complete_reservation(c);
40009650: 00098513 mv a0,s3
40009654: c34fc0ef jal ra,40005a88 <jffs2_complete_reservation>
if (!datalen) {
40009658: 01812783 lw a5,24(sp)
4000965c: 02078863 beqz a5,4000968c <jffs2_write_inode_range+0x3bc> <== NEVER TAKEN
writtenlen += datalen;
40009660: 00812703 lw a4,8(sp)
writelen -= datalen;
40009664: 40fb8bb3 sub s7,s7,a5
offset += datalen;
40009668: 00f90933 add s2,s2,a5
writtenlen += datalen;
4000966c: 00f70733 add a4,a4,a5
40009670: 00e12423 sw a4,8(sp)
buf += datalen;
40009674: 00fc0c33 add s8,s8,a5
while(writelen) {
40009678: ca0b9ce3 bnez s7,40009330 <jffs2_write_inode_range+0x60>
4000967c: f49ff06f j 400095c4 <jffs2_write_inode_range+0x2f4>
uint32_t writtenlen = 0;
40009680: 00012423 sw zero,8(sp) <== NOT EXECUTED
while(writelen) {
40009684: 00000d93 li s11,0 <== NOT EXECUTED
40009688: f3dff06f j 400095c4 <jffs2_write_inode_range+0x2f4> <== NOT EXECUTED
pr_warn("Eep. We didn't actually write any data in jffs2_write_inode_range()\n");
4000968c: 4001f537 lui a0,0x4001f <== NOT EXECUTED
40009690: 13850513 addi a0,a0,312 # 4001f138 <__func__.9+0x180> <== NOT EXECUTED
40009694: 968ff0ef jal ra,400087fc <jffs2_printk> <== NOT EXECUTED
ret = -EIO;
40009698: ffb00d93 li s11,-5 <== NOT EXECUTED
break;
4000969c: f29ff06f j 400095c4 <jffs2_write_inode_range+0x2f4> <== NOT EXECUTED
jffs2_mark_node_obsolete(c, fn->raw);
400096a0: 000aa583 lw a1,0(s5) <== NOT EXECUTED
400096a4: 00098513 mv a0,s3 <== NOT EXECUTED
400096a8: bf4fc0ef jal ra,40005a9c <jffs2_mark_node_obsolete> <== NOT EXECUTED
jffs2_free_full_dnode(fn);
400096ac: 000a8513 mv a0,s5 <== NOT EXECUTED
400096b0: 9d4fb0ef jal ra,40004884 <jffs2_free_full_dnode> <== NOT EXECUTED
jffs2_complete_reservation(c);
400096b4: 00098513 mv a0,s3 <== NOT EXECUTED
400096b8: bd0fc0ef jal ra,40005a88 <jffs2_complete_reservation> <== NOT EXECUTED
break;
400096bc: f09ff06f j 400095c4 <jffs2_write_inode_range+0x2f4> <== NOT EXECUTED
40000958 <rtems_jffs2_compressor_rtime_compress>:
unsigned char *data_in,
unsigned char *cpage_out,
uint32_t *sourcelen,
uint32_t *dstlen
)
{
40000958: de010113 addi sp,sp,-544
4000095c: 20812c23 sw s0,536(sp)
40000960: 21312623 sw s3,524(sp)
40000964: 00058413 mv s0,a1
40000968: 00060993 mv s3,a2
int outpos = 0;
int pos=0;
(void) self;
memset(positions,0,sizeof(positions));
4000096c: 00000593 li a1,0
40000970: 20000613 li a2,512
40000974: 00010513 mv a0,sp
{
40000978: 20912a23 sw s1,532(sp)
4000097c: 21212823 sw s2,528(sp)
40000980: 00068493 mv s1,a3
40000984: 20112e23 sw ra,540(sp)
40000988: 00070913 mv s2,a4
memset(positions,0,sizeof(positions));
4000098c: 78c1b0ef jal ra,4001c118 <memset>
while (pos < (*sourcelen) && outpos <= (*dstlen)-2) {
40000990: 0004a783 lw a5,0(s1)
40000994: 0e078c63 beqz a5,40000a8c <rtems_jffs2_compressor_rtime_compress+0x134><== NEVER TAKEN
40000998: 00098613 mv a2,s3
4000099c: 00000793 li a5,0
int pos=0;
400009a0: 00000e93 li t4,0
int outpos = 0;
400009a4: 00000693 li a3,0
backpos = positions[value];
positions[value]=pos;
while ((backpos < pos) && (pos < (*sourcelen)) &&
(data_in[pos]==data_in[backpos++]) && (runlen<255)) {
400009a8: 0ff00293 li t0,255
while ((backpos < pos) && (pos < (*sourcelen)) &&
400009ac: ffe00393 li t2,-2
value = data_in[pos];
400009b0: 00f407b3 add a5,s0,a5
400009b4: 0007c583 lbu a1,0(a5)
backpos = positions[value];
400009b8: 20010713 addi a4,sp,512
cpage_out[outpos++] = data_in[pos++];
400009bc: 001e8893 addi a7,t4,1
backpos = positions[value];
400009c0: 00159793 slli a5,a1,0x1
400009c4: 00f707b3 add a5,a4,a5
400009c8: e007d703 lhu a4,-512(a5)
cpage_out[outpos++] = data_in[pos++];
400009cc: 00b60023 sb a1,0(a2)
positions[value]=pos;
400009d0: e1179023 sh a7,-512(a5)
while ((backpos < pos) && (pos < (*sourcelen)) &&
400009d4: 0d175c63 bge a4,a7,40000aac <rtems_jffs2_compressor_rtime_compress+0x154>
400009d8: 41d38f33 sub t5,t2,t4
400009dc: 0004af83 lw t6,0(s1)
int backpos, runlen=0;
400009e0: 00000813 li a6,0
(data_in[pos]==data_in[backpos++]) && (runlen<255)) {
400009e4: 41d70eb3 sub t4,a4,t4
while ((backpos < pos) && (pos < (*sourcelen)) &&
400009e8: 00ef0f33 add t5,t5,a4
400009ec: 0280006f j 40000a14 <rtems_jffs2_compressor_rtime_compress+0xbc>
400009f0: 0005ce03 lbu t3,0(a1)
400009f4: fff54583 lbu a1,-1(a0)
400009f8: 02be1a63 bne t3,a1,40000a2c <rtems_jffs2_compressor_rtime_compress+0xd4>
(data_in[pos]==data_in[backpos++]) && (runlen<255)) {
400009fc: 08580263 beq a6,t0,40000a80 <rtems_jffs2_compressor_rtime_compress+0x128>
while ((backpos < pos) && (pos < (*sourcelen)) &&
40000a00: 006f05b3 add a1,t5,t1
40000a04: 00030793 mv a5,t1
pos++;
runlen++;
40000a08: 00180813 addi a6,a6,1
while ((backpos < pos) && (pos < (*sourcelen)) &&
40000a0c: 0315d063 bge a1,a7,40000a2c <rtems_jffs2_compressor_rtime_compress+0xd4>
pos++;
40000a10: 00030893 mv a7,t1
(data_in[pos]==data_in[backpos++]) && (runlen<255)) {
40000a14: 011e8533 add a0,t4,a7
40000a18: 00088793 mv a5,a7
40000a1c: 011405b3 add a1,s0,a7
40000a20: 00a40533 add a0,s0,a0
pos++;
40000a24: 00188313 addi t1,a7,1
while ((backpos < pos) && (pos < (*sourcelen)) &&
40000a28: fdf8e4e3 bltu a7,t6,400009f0 <rtems_jffs2_compressor_rtime_compress+0x98>
}
cpage_out[outpos++] = runlen;
40000a2c: 0ff87813 andi a6,a6,255
40000a30: 00078e93 mv t4,a5
40000a34: 010600a3 sb a6,1(a2)
while (pos < (*sourcelen) && outpos <= (*dstlen)-2) {
40000a38: 0004a703 lw a4,0(s1)
cpage_out[outpos++] = runlen;
40000a3c: 00268693 addi a3,a3,2
while (pos < (*sourcelen) && outpos <= (*dstlen)-2) {
40000a40: 00e7fa63 bgeu a5,a4,40000a54 <rtems_jffs2_compressor_rtime_compress+0xfc>
40000a44: 00092703 lw a4,0(s2)
40000a48: 00260613 addi a2,a2,2
40000a4c: ffe70713 addi a4,a4,-2
40000a50: f6d770e3 bgeu a4,a3,400009b0 <rtems_jffs2_compressor_rtime_compress+0x58>
}
if (outpos >= pos) {
40000a54: 03d6dc63 bge a3,t4,40000a8c <rtems_jffs2_compressor_rtime_compress+0x134>
/* Tell the caller how much we managed to compress, and how much space it took */
*sourcelen = pos;
*dstlen = outpos;
return JFFS2_COMPR_RTIME;
}
40000a58: 21c12083 lw ra,540(sp)
40000a5c: 21812403 lw s0,536(sp)
*sourcelen = pos;
40000a60: 00f4a023 sw a5,0(s1)
*dstlen = outpos;
40000a64: 00d92023 sw a3,0(s2)
}
40000a68: 21412483 lw s1,532(sp)
40000a6c: 21012903 lw s2,528(sp)
40000a70: 20c12983 lw s3,524(sp)
return JFFS2_COMPR_RTIME;
40000a74: 00200513 li a0,2
}
40000a78: 22010113 addi sp,sp,544
40000a7c: 00008067 ret
40000a80: 00088e93 mv t4,a7
40000a84: 0ff00813 li a6,255
40000a88: fadff06f j 40000a34 <rtems_jffs2_compressor_rtime_compress+0xdc>
40000a8c: 21c12083 lw ra,540(sp)
40000a90: 21812403 lw s0,536(sp)
40000a94: 21412483 lw s1,532(sp)
40000a98: 21012903 lw s2,528(sp)
40000a9c: 20c12983 lw s3,524(sp)
return JFFS2_COMPR_NONE;
40000aa0: 00000513 li a0,0
}
40000aa4: 22010113 addi sp,sp,544
40000aa8: 00008067 ret
while ((backpos < pos) && (pos < (*sourcelen)) &&
40000aac: 00088793 mv a5,a7 <== NOT EXECUTED
40000ab0: 00088e93 mv t4,a7 <== NOT EXECUTED
40000ab4: 00000813 li a6,0 <== NOT EXECUTED
40000ab8: f7dff06f j 40000a34 <rtems_jffs2_compressor_rtime_compress+0xdc> <== NOT EXECUTED
40000abc <rtems_jffs2_compressor_rtime_decompress>:
int outpos = 0;
int pos=0;
(void) self;
if (comprtype != JFFS2_COMPR_RTIME) {
40000abc: 00200713 li a4,2
40000ac0: 10e59a63 bne a1,a4,40000bd4 <rtems_jffs2_compressor_rtime_decompress+0x118>
{
40000ac4: de010113 addi sp,sp,-544
40000ac8: 21212823 sw s2,528(sp)
return -EIO;
}
memset(positions,0,sizeof(positions));
40000acc: 00000593 li a1,0
40000ad0: 00060913 mv s2,a2
40000ad4: 00010513 mv a0,sp
40000ad8: 20000613 li a2,512
{
40000adc: 20812c23 sw s0,536(sp)
40000ae0: 20912a23 sw s1,532(sp)
40000ae4: 21412423 sw s4,520(sp)
40000ae8: 21512223 sw s5,516(sp)
40000aec: 00068a13 mv s4,a3
40000af0: 20112e23 sw ra,540(sp)
40000af4: 21312623 sw s3,524(sp)
40000af8: 00078a93 mv s5,a5
memset(positions,0,sizeof(positions));
40000afc: 61c1b0ef jal ra,4001c118 <memset>
int outpos = 0;
40000b00: 00000813 li a6,0
while (outpos<destlen) {
40000b04: 00000413 li s0,0
40000b08: 001a0493 addi s1,s4,1
40000b0c: 020a9863 bnez s5,40000b3c <rtems_jffs2_compressor_rtime_decompress+0x80><== ALWAYS TAKEN
40000b10: 0680006f j 40000b78 <rtems_jffs2_compressor_rtime_decompress+0xbc><== NOT EXECUTED
repeat = data_in[pos++];
backoffs = positions[value];
positions[value]=outpos;
if (repeat) {
if (backoffs + repeat >= outpos) {
40000b14: 013587b3 add a5,a1,s3
40000b18: 08e7d463 bge a5,a4,40000ba0 <rtems_jffs2_compressor_rtime_decompress+0xe4>
while(repeat) {
cpage_out[outpos++] = cpage_out[backoffs++];
repeat--;
}
} else {
memcpy(&cpage_out[outpos],&cpage_out[backoffs],repeat);
40000b1c: 00ea0533 add a0,s4,a4
40000b20: 00098613 mv a2,s3
40000b24: 00ba05b3 add a1,s4,a1
40000b28: 4c81b0ef jal ra,4001bff0 <memcpy>
outpos+=repeat;
40000b2c: 01340833 add a6,s0,s3
while (outpos<destlen) {
40000b30: 00080413 mv s0,a6
40000b34: 00290913 addi s2,s2,2
40000b38: 05547063 bgeu s0,s5,40000b78 <rtems_jffs2_compressor_rtime_decompress+0xbc>
value = data_in[pos++];
40000b3c: 00094503 lbu a0,0(s2)
cpage_out[outpos++] = value; /* first the verbatim copied byte */
40000b40: 008a0433 add s0,s4,s0
backoffs = positions[value];
40000b44: 20010793 addi a5,sp,512
cpage_out[outpos++] = value; /* first the verbatim copied byte */
40000b48: 00a40023 sb a0,0(s0)
repeat = data_in[pos++];
40000b4c: 00194983 lbu s3,1(s2)
backoffs = positions[value];
40000b50: 00151513 slli a0,a0,0x1
cpage_out[outpos++] = value; /* first the verbatim copied byte */
40000b54: 00180713 addi a4,a6,1
backoffs = positions[value];
40000b58: 00a78533 add a0,a5,a0
40000b5c: e0055583 lhu a1,-512(a0)
positions[value]=outpos;
40000b60: e0e51023 sh a4,-512(a0)
memcpy(&cpage_out[outpos],&cpage_out[backoffs],repeat);
40000b64: 00070413 mv s0,a4
if (repeat) {
40000b68: fa0996e3 bnez s3,40000b14 <rtems_jffs2_compressor_rtime_decompress+0x58>
cpage_out[outpos++] = value; /* first the verbatim copied byte */
40000b6c: 00070813 mv a6,a4
while (outpos<destlen) {
40000b70: 00290913 addi s2,s2,2
40000b74: fd5464e3 bltu s0,s5,40000b3c <rtems_jffs2_compressor_rtime_decompress+0x80>
}
}
}
return 0;
}
40000b78: 21c12083 lw ra,540(sp)
40000b7c: 21812403 lw s0,536(sp)
40000b80: 21412483 lw s1,532(sp)
40000b84: 21012903 lw s2,528(sp)
40000b88: 20c12983 lw s3,524(sp)
40000b8c: 20812a03 lw s4,520(sp)
40000b90: 20412a83 lw s5,516(sp)
return 0;
40000b94: 00000513 li a0,0
}
40000b98: 22010113 addi sp,sp,544
40000b9c: 00008067 ret
40000ba0: 010488b3 add a7,s1,a6
40000ba4: 00ea0733 add a4,s4,a4
40000ba8: 013888b3 add a7,a7,s3
cpage_out[outpos++] = cpage_out[backoffs++];
40000bac: 41070533 sub a0,a4,a6
40000bb0: 00b50533 add a0,a0,a1
40000bb4: fff54603 lbu a2,-1(a0)
while(repeat) {
40000bb8: 00170713 addi a4,a4,1
cpage_out[outpos++] = cpage_out[backoffs++];
40000bbc: fec70fa3 sb a2,-1(a4)
while(repeat) {
40000bc0: ff1716e3 bne a4,a7,40000bac <rtems_jffs2_compressor_rtime_decompress+0xf0>
cpage_out[outpos++] = cpage_out[backoffs++];
40000bc4: 01380833 add a6,a6,s3
40000bc8: 00180813 addi a6,a6,1
while (outpos<destlen) {
40000bcc: 00080413 mv s0,a6
40000bd0: f65ff06f j 40000b34 <rtems_jffs2_compressor_rtime_decompress+0x78>
return -EIO;
40000bd4: ffb00513 li a0,-5 <== NOT EXECUTED
}
40000bd8: 00008067 ret <== NOT EXECUTED
40002c5c <rtems_jffs2_initialize>:
{
40002c5c: fe010113 addi sp,sp,-32
40002c60: 01412423 sw s4,8(sp)
rtems_jffs2_flash_control *fc = jffs2_mount_data->flash_control;
40002c64: 0005aa03 lw s4,0(a1)
{
40002c68: 01512223 sw s5,4(sp)
40002c6c: 00912a23 sw s1,20(sp)
int inocache_hashsize = calculate_inocache_hashsize(fc->flash_size);
40002c70: 004a2a83 lw s5,4(s4)
{
40002c74: 01212823 sw s2,16(sp)
40002c78: 01312623 sw s3,12(sp)
int size_mb = flash_size / 1024 / 1024;
40002c7c: 014ad493 srli s1,s5,0x14
int hashsize = (size_mb * 2) & ~0x3f;
40002c80: 00149493 slli s1,s1,0x1
{
40002c84: 00112e23 sw ra,28(sp)
40002c88: 00812c23 sw s0,24(sp)
40002c8c: 40000793 li a5,1024
int hashsize = (size_mb * 2) & ~0x3f;
40002c90: fc04f493 andi s1,s1,-64
{
40002c94: 00058913 mv s2,a1
40002c98: 00050993 mv s3,a0
40002c9c: 0097d463 bge a5,s1,40002ca4 <rtems_jffs2_initialize+0x48>
40002ca0: 40000493 li s1,1024 <== NOT EXECUTED
40002ca4: 08000793 li a5,128
40002ca8: 00f4d463 bge s1,a5,40002cb0 <rtems_jffs2_initialize+0x54>
40002cac: 08000493 li s1,128
sizeof(*fs_info) + (size_t) inocache_hashsize * sizeof(fs_info->inode_cache[0])
40002cb0: 48248593 addi a1,s1,1154
rtems_jffs2_fs_info *fs_info = calloc(
40002cb4: 00259593 slli a1,a1,0x2
40002cb8: 00100513 li a0,1
40002cbc: 6a80a0ef jal ra,4000d364 <calloc>
40002cc0: 00050413 mv s0,a0
if (fs_info != NULL) {
40002cc4: 18050463 beqz a0,40002e4c <rtems_jffs2_initialize+0x1f0> <== NEVER TAKEN
uint32_t blocks = fc->flash_size / fc->block_size;
40002cc8: 000a2683 lw a3,0(s4)
const char *_name)
{
struct _Mutex_recursive_Control _init =
_MUTEX_RECURSIVE_NAMED_INITIALIZER(_name);
*_mutex = _init;
40002ccc: 000017b7 lui a5,0x1
40002cd0: 4001d637 lui a2,0x4001d
40002cd4: 02dad733 divu a4,s5,a3
40002cd8: 00f507b3 add a5,a0,a5
40002cdc: d6460613 addi a2,a2,-668 # 4001cd64 <rtems_test_name+0x4c>
40002ce0: 0e07a823 sw zero,240(a5) # 10f0 <_ISR_Stack_size+0xf0>
40002ce4: 0e07aa23 sw zero,244(a5)
40002ce8: 0e07ac23 sw zero,248(a5)
40002cec: 0e07ae23 sw zero,252(a5)
40002cf0: 10c7a023 sw a2,256(a5)
40002cf4: 1007a223 sw zero,260(a5)
if ((fc->block_size * blocks) != fc->flash_size) {
40002cf8: 02d705b3 mul a1,a4,a3
40002cfc: 0eba9c63 bne s5,a1,40002df4 <rtems_jffs2_initialize+0x198>
if (fc->flash_size < 5*fc->block_size) {
40002d00: 00269713 slli a4,a3,0x2
40002d04: 00d70733 add a4,a4,a3
40002d08: 10e5ea63 bltu a1,a4,40002e1c <rtems_jffs2_initialize+0x1c0>
sb->s_compressor_control = jffs2_mount_data->compressor_control;
40002d0c: 00492783 lw a5,4(s2)
sb->s_is_readonly = !mt_entry->writeable;
40002d10: 0299c603 lbu a2,41(s3)
c->inocache_list = &fs_info->inode_cache[0];
40002d14: 00001737 lui a4,0x1
40002d18: 20870713 addi a4,a4,520 # 1208 <_ISR_Stack_size+0x208>
sb->s_is_readonly = !mt_entry->writeable;
40002d1c: 00164613 xori a2,a2,1
c->inocache_list = &fs_info->inode_cache[0];
40002d20: 00e40733 add a4,s0,a4
sb->s_compressor_control = jffs2_mount_data->compressor_control;
40002d24: 0ef42423 sw a5,232(s0)
err = jffs2_do_mount_fs(c);
40002d28: 00040513 mv a0,s0
c->cleanmarker_size = sizeof(struct jffs2_unknown_node);
40002d2c: 00c00793 li a5,12
c->inocache_hashsize = inocache_hashsize;
40002d30: 0c942023 sw s1,192(s0)
sb->s_is_readonly = !mt_entry->writeable;
40002d34: 0ec40623 sb a2,236(s0)
sb->s_flash_control = fc;
40002d38: 0f442223 sw s4,228(s0)
c->inocache_list = &fs_info->inode_cache[0];
40002d3c: 0ce42223 sw a4,196(s0)
c->sector_size = fc->block_size;
40002d40: 02d42a23 sw a3,52(s0)
c->flash_size = fc->flash_size;
40002d44: 00b42c23 sw a1,24(s0)
c->cleanmarker_size = sizeof(struct jffs2_unknown_node);
40002d48: 00f42a23 sw a5,20(s0)
err = jffs2_do_mount_fs(c);
40002d4c: 134070ef jal ra,40009e80 <jffs2_do_mount_fs>
40002d50: 00050493 mv s1,a0
if (err == 0) {
40002d54: 12051263 bnez a0,40002e78 <rtems_jffs2_initialize+0x21c> <== NEVER TAKEN
sb->s_root = jffs2_iget(sb, 1);
40002d58: 00100593 li a1,1
40002d5c: 00040513 mv a0,s0
40002d60: db9ff0ef jal ra,40002b18 <jffs2_iget>
40002d64: 0ea42023 sw a0,224(s0)
if (IS_ERR(sb->s_root)) {
40002d68: c1800713 li a4,-1000
sb->s_root = jffs2_iget(sb, 1);
40002d6c: 00050793 mv a5,a0
if (IS_ERR(sb->s_root)) {
40002d70: 04a76e63 bltu a4,a0,40002dcc <rtems_jffs2_initialize+0x170>
if (!jffs2_is_readonly(c)) {
40002d74: 0ec44703 lbu a4,236(s0)
sb->s_root->i_parent = sb->s_root;
40002d78: 02f7aa23 sw a5,52(a5)
if (!jffs2_is_readonly(c)) {
40002d7c: 06070263 beqz a4,40002de0 <rtems_jffs2_initialize+0x184> <== ALWAYS TAKEN
mt_entry->mt_fs_root->location.node_access = sb->s_root;
40002d80: 0249a683 lw a3,36(s3)
mt_entry->ops = &rtems_jffs2_ops;
40002d84: 4001d737 lui a4,0x4001d
40002d88: 18870713 addi a4,a4,392 # 4001d188 <rtems_jffs2_ops>
mt_entry->fs_info = fs_info;
40002d8c: 0089a423 sw s0,8(s3)
mt_entry->ops = &rtems_jffs2_ops;
40002d90: 00e9a623 sw a4,12(s3)
mt_entry->mt_fs_root->location.node_access = sb->s_root;
40002d94: 00f6a423 sw a5,8(a3) # a008 <bsp_section_rodata_size+0x4f34>
mt_entry->mt_fs_root->location.handlers = &rtems_jffs2_directory_handlers;
40002d98: 4001d7b7 lui a5,0x4001d
40002d9c: 0c878793 addi a5,a5,200 # 4001d0c8 <rtems_jffs2_directory_handlers>
40002da0: 00f6a823 sw a5,16(a3)
}
40002da4: 01c12083 lw ra,28(sp)
40002da8: 01812403 lw s0,24(sp)
40002dac: 01012903 lw s2,16(sp)
40002db0: 00c12983 lw s3,12(sp)
40002db4: 00812a03 lw s4,8(sp)
40002db8: 00412a83 lw s5,4(sp)
40002dbc: 00048513 mv a0,s1
40002dc0: 01412483 lw s1,20(sp)
40002dc4: 02010113 addi sp,sp,32
40002dc8: 00008067 ret
if (err == 0) {
40002dcc: fa0504e3 beqz a0,40002d74 <rtems_jffs2_initialize+0x118> <== NOT EXECUTED
err = PTR_ERR(sb->s_root);
40002dd0: 00050493 mv s1,a0 <== NOT EXECUTED
do_mount_fs_was_successful = true;
40002dd4: 00100593 li a1,1 <== NOT EXECUTED
errno = -err;
40002dd8: 409004b3 neg s1,s1 <== NOT EXECUTED
40002ddc: 0580006f j 40002e34 <rtems_jffs2_initialize+0x1d8> <== NOT EXECUTED
jffs2_erase_pending_blocks(c, 0);
40002de0: 00000593 li a1,0
40002de4: 00040513 mv a0,s0
40002de8: 618080ef jal ra,4000b400 <jffs2_erase_pending_blocks>
mt_entry->mt_fs_root->location.node_access = sb->s_root;
40002dec: 0e042783 lw a5,224(s0)
40002df0: f91ff06f j 40002d80 <rtems_jffs2_initialize+0x124>
pr_info("Flash size not aligned to erasesize, reducing to %dKiB\n",
40002df4: 4001d537 lui a0,0x4001d <== NOT EXECUTED
fc->flash_size = fc->block_size * blocks;
40002df8: 00ba2223 sw a1,4(s4) <== NOT EXECUTED
pr_info("Flash size not aligned to erasesize, reducing to %dKiB\n",
40002dfc: 04850513 addi a0,a0,72 # 4001d048 <rtems_filesystem_table+0x130><== NOT EXECUTED
40002e00: 00a5d593 srli a1,a1,0xa <== NOT EXECUTED
40002e04: b88ff0ef jal ra,4000218c <jffs2_printk> <== NOT EXECUTED
if (fc->flash_size < 5*fc->block_size) {
40002e08: 000a2683 lw a3,0(s4) <== NOT EXECUTED
40002e0c: 004a2583 lw a1,4(s4) <== NOT EXECUTED
40002e10: 00269713 slli a4,a3,0x2 <== NOT EXECUTED
40002e14: 00d70733 add a4,a4,a3 <== NOT EXECUTED
40002e18: eee5fae3 bgeu a1,a4,40002d0c <rtems_jffs2_initialize+0xb0> <== NOT EXECUTED
pr_err("Too few erase blocks (%d)\n",
40002e1c: 02d5d5b3 divu a1,a1,a3 <== NOT EXECUTED
40002e20: 4001d537 lui a0,0x4001d <== NOT EXECUTED
40002e24: 08450513 addi a0,a0,132 # 4001d084 <rtems_filesystem_table+0x16c><== NOT EXECUTED
40002e28: 01600493 li s1,22 <== NOT EXECUTED
40002e2c: b60ff0ef jal ra,4000218c <jffs2_printk> <== NOT EXECUTED
bool do_mount_fs_was_successful = false;
40002e30: 00000593 li a1,0 <== NOT EXECUTED
rtems_jffs2_free_fs_info(fs_info, do_mount_fs_was_successful);
40002e34: 00040513 mv a0,s0 <== NOT EXECUTED
40002e38: d68ff0ef jal ra,400023a0 <rtems_jffs2_free_fs_info> <== NOT EXECUTED
errno = -err;
40002e3c: 088190ef jal ra,4001bec4 <__errno> <== NOT EXECUTED
40002e40: 00952023 sw s1,0(a0) <== NOT EXECUTED
return -1;
40002e44: fff00493 li s1,-1 <== NOT EXECUTED
40002e48: f5dff06f j 40002da4 <rtems_jffs2_initialize+0x148> <== NOT EXECUTED
if (fc->destroy != NULL) {
40002e4c: 014a2783 lw a5,20(s4) <== NOT EXECUTED
40002e50: 00078663 beqz a5,40002e5c <rtems_jffs2_initialize+0x200> <== NOT EXECUTED
(*fc->destroy)(fc);
40002e54: 000a0513 mv a0,s4 <== NOT EXECUTED
40002e58: 000780e7 jalr a5 <== NOT EXECUTED
rtems_jffs2_compressor_control_destroy(jffs2_mount_data->compressor_control);
40002e5c: 00492503 lw a0,4(s2) <== NOT EXECUTED
if (cc != NULL && cc->destroy != NULL) {
40002e60: 02050263 beqz a0,40002e84 <rtems_jffs2_initialize+0x228> <== NOT EXECUTED
40002e64: 00852783 lw a5,8(a0) <== NOT EXECUTED
40002e68: 00078e63 beqz a5,40002e84 <rtems_jffs2_initialize+0x228> <== NOT EXECUTED
(*cc->destroy)(cc);
40002e6c: 000780e7 jalr a5 <== NOT EXECUTED
40002e70: 00c00493 li s1,12 <== NOT EXECUTED
40002e74: fc9ff06f j 40002e3c <rtems_jffs2_initialize+0x1e0> <== NOT EXECUTED
bool do_mount_fs_was_successful = false;
40002e78: 00000593 li a1,0 <== NOT EXECUTED
errno = -err;
40002e7c: 409004b3 neg s1,s1 <== NOT EXECUTED
40002e80: fb5ff06f j 40002e34 <rtems_jffs2_initialize+0x1d8> <== NOT EXECUTED
40002e84: 00c00493 li s1,12 <== NOT EXECUTED
40002e88: fb5ff06f j 40002e3c <rtems_jffs2_initialize+0x1e0> <== NOT EXECUTED