URL
https://opencores.org/ocsvn/usb_nand_reader/usb_nand_reader/trunk
Subversion Repositories usb_nand_reader
[/] [usb_nand_reader/] [trunk/] [mini32/] [CMD_PageProgram.asm] - Rev 7
Compare with Previous | Blame | View Log
_cmd_chip_page_program:
;CMD_PageProgram.c,7 :: unsigned char cmd_chip_page_program(unsigned char* inBuffer, int addressCycles, int pageSize)
ADDIU SP, SP, -16
SW RA, 0(SP)
;CMD_PageProgram.c,9 :: int i = 0, b;
MOVZ R30, R0, R0
SH R30, 14(SP)
;CMD_PageProgram.c,10 :: nand_send_command(NC_PAGE_PROGRAM_START);
SH R27, 4(SP)
SH R26, 6(SP)
SW R25, 8(SP)
ORI R25, R0, 128
JAL _nand_send_command+0
NOP
LW R25, 8(SP)
LH R26, 6(SP)
;CMD_PageProgram.c,11 :: nand_send_address(inBuffer + 1, addressCycles);
ADDIU R2, R25, 1
SW R25, 8(SP)
MOVZ R25, R2, R0
JAL _nand_send_address+0
NOP
;CMD_PageProgram.c,12 :: do_delay(5);
ORI R25, R0, 5
JAL _do_delay+0
NOP
LW R25, 8(SP)
LH R27, 4(SP)
;CMD_PageProgram.c,13 :: while(i < pageSize)
L_cmd_chip_page_program0:
SEH R3, R27
LH R2, 14(SP)
SLT R2, R2, R3
BNE R2, R0, L__cmd_chip_page_program5
NOP
J L_cmd_chip_page_program1
NOP
L__cmd_chip_page_program5:
;CMD_PageProgram.c,15 :: USB_Polling_Proc();
SH R27, 4(SP)
SH R26, 6(SP)
SW R25, 8(SP)
JAL _USB_Polling_Proc+0
NOP
LW R25, 8(SP)
LH R26, 6(SP)
LH R27, 4(SP)
;CMD_PageProgram.c,16 :: while(0 == (b = HID_Read()))
L_cmd_chip_page_program2:
JAL _HID_Read+0
NOP
ANDI R2, R2, 255
SH R2, 12(SP)
LH R2, 12(SP)
BEQ R2, R0, L__cmd_chip_page_program6
NOP
J L_cmd_chip_page_program3
NOP
L__cmd_chip_page_program6:
;CMD_PageProgram.c,17 :: USB_Break();
JAL _USB_Break+0
NOP
J L_cmd_chip_page_program2
NOP
L_cmd_chip_page_program3:
;CMD_PageProgram.c,19 :: nand_write(inBuffer, b);
SH R27, 4(SP)
SH R26, 6(SP)
SW R25, 8(SP)
LH R26, 12(SP)
JAL _nand_write+0
NOP
LW R25, 8(SP)
LH R26, 6(SP)
LH R27, 4(SP)
;CMD_PageProgram.c,20 :: i += b;
LH R3, 12(SP)
LH R2, 14(SP)
ADDU R2, R2, R3
SH R2, 14(SP)
;CMD_PageProgram.c,21 :: }
J L_cmd_chip_page_program0
NOP
L_cmd_chip_page_program1:
;CMD_PageProgram.c,22 :: do_delay(5);
SH R27, 4(SP)
SH R26, 6(SP)
SW R25, 8(SP)
ORI R25, R0, 5
JAL _do_delay+0
NOP
;CMD_PageProgram.c,23 :: nand_send_command(NC_PAGE_PROGRAM_END);
ORI R25, R0, 16
JAL _nand_send_command+0
NOP
;CMD_PageProgram.c,24 :: do_delay(100);
ORI R25, R0, 100
JAL _do_delay+0
NOP
;CMD_PageProgram.c,25 :: nand_wait_ready();
JAL _nand_wait_ready+0
NOP
;CMD_PageProgram.c,26 :: return cmd_chip_read_status();
JAL _cmd_chip_read_status+0
NOP
LW R25, 8(SP)
LH R26, 6(SP)
LH R27, 4(SP)
;CMD_PageProgram.c,27 :: }
L_end_cmd_chip_page_program:
LW RA, 0(SP)
ADDIU SP, SP, 16
JR RA
NOP
; end of _cmd_chip_page_program