{
struct sfl_frame frame;
int failed;
- unsigned long cmdline_adr, initrdstart_adr, initrdend_adr;
static const char str[SFL_MAGIC_LEN+1] = SFL_MAGIC_REQ;
const char *c;
int ack_status;
/* assume ACK_OK */
failed = 0;
- cmdline_adr = initrdstart_adr = initrdend_adr = 0;
while(1) {
int i;
int actualcrc;
|((unsigned long)frame.payload[2] << 8)
|((unsigned long)frame.payload[3] << 0);
uart_write(SFL_ACK_SUCCESS);
- boot(cmdline_adr, initrdstart_adr, initrdend_adr, addr);
+ boot(0, 0, 0, addr);
break;
}
- case SFL_CMD_CMDLINE:
- failed = 0;
- cmdline_adr = ((unsigned long)frame.payload[0] << 24)
- |((unsigned long)frame.payload[1] << 16)
- |((unsigned long)frame.payload[2] << 8)
- |((unsigned long)frame.payload[3] << 0);
- uart_write(SFL_ACK_SUCCESS);
- break;
- case SFL_CMD_INITRDSTART:
- failed = 0;
- initrdstart_adr = ((unsigned long)frame.payload[0] << 24)
- |((unsigned long)frame.payload[1] << 16)
- |((unsigned long)frame.payload[2] << 8)
- |((unsigned long)frame.payload[3] << 0);
- uart_write(SFL_ACK_SUCCESS);
- break;
- case SFL_CMD_INITRDEND:
- failed = 0;
- initrdend_adr = ((unsigned long)frame.payload[0] << 24)
- |((unsigned long)frame.payload[1] << 16)
- |((unsigned long)frame.payload[2] << 8)
- |((unsigned long)frame.payload[3] << 0);
- uart_write(SFL_ACK_SUCCESS);
- break;
default:
failed++;
if(failed == MAX_FAILED) {
#define SFL_CMD_LOAD 0x01
#define SFL_CMD_JUMP 0x02
-/* Linux-specific commands */
-#define SFL_CMD_CMDLINE 0x03
-#define SFL_CMD_INITRDSTART 0x04
-#define SFL_CMD_INITRDEND 0x05
-
/* Replies */
#define SFL_ACK_SUCCESS 'K'
#define SFL_ACK_CRCERROR 'C'