diff options
Diffstat (limited to 'gdb/sh-stub.c')
-rw-r--r-- | gdb/sh-stub.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/gdb/sh-stub.c b/gdb/sh-stub.c index 2eb6a5d750..7a717e0ac5 100644 --- a/gdb/sh-stub.c +++ b/gdb/sh-stub.c | |||
@@ -409,6 +409,52 @@ static const char hexchars[] = "0123456789abcdef"; | |||
409 | static char remcomInBuffer[BUFMAX]; | 409 | static char remcomInBuffer[BUFMAX]; |
410 | static char remcomOutBuffer[BUFMAX]; | 410 | static char remcomOutBuffer[BUFMAX]; |
411 | 411 | ||
412 | #define ATA_NSECTOR (*((volatile unsigned char*)0x06100102)) | ||
413 | #define ATA_COMMAND (*((volatile unsigned char*)0x06100107)) | ||
414 | #define ATA_CONTROL (*((volatile unsigned char*)0x06200306)) | ||
415 | #define ATA_ALT_STATUS ATA_CONTROL | ||
416 | |||
417 | #define STATUS_BSY 0x80 | ||
418 | #define STATUS_RDY 0x40 | ||
419 | |||
420 | #define CMD_STANDBY_IMMEDIATE 0xE0 | ||
421 | #define CMD_STANDBY 0xE2 | ||
422 | |||
423 | void ata_wait_for_bsy(void) | ||
424 | { | ||
425 | while (ATA_ALT_STATUS & STATUS_BSY); | ||
426 | } | ||
427 | |||
428 | int ata_wait_for_rdy(void) | ||
429 | { | ||
430 | ata_wait_for_bsy(); | ||
431 | return ATA_ALT_STATUS & STATUS_RDY; | ||
432 | } | ||
433 | |||
434 | int ata_spindown(int time) | ||
435 | { | ||
436 | /* activate ATA */ | ||
437 | PADR &= ~0x80; | ||
438 | |||
439 | if(!ata_wait_for_rdy()) | ||
440 | return -1; | ||
441 | |||
442 | if ( time == -1 ) { | ||
443 | ATA_COMMAND = CMD_STANDBY_IMMEDIATE; | ||
444 | } | ||
445 | else { | ||
446 | if (time > 255) | ||
447 | return -1; | ||
448 | ATA_NSECTOR = time & 0xff; | ||
449 | ATA_COMMAND = CMD_STANDBY; | ||
450 | } | ||
451 | |||
452 | if (!ata_wait_for_rdy()) | ||
453 | return -1; | ||
454 | |||
455 | return 0; | ||
456 | } | ||
457 | |||
412 | void blink(void) | 458 | void blink(void) |
413 | { | 459 | { |
414 | while(1) | 460 | while(1) |
@@ -1097,6 +1143,8 @@ void INIT (void) | |||
1097 | dofault = 1; | 1143 | dofault = 1; |
1098 | stepped = 0; | 1144 | stepped = 0; |
1099 | 1145 | ||
1146 | ata_spindown(-1); | ||
1147 | |||
1100 | stub_sp = stub_stack; | 1148 | stub_sp = stub_stack; |
1101 | breakpoint (); | 1149 | breakpoint (); |
1102 | 1150 | ||