Mercurial > ecos
comparison packages/hal/common/current/src/hal_stub.c @ 143:6b5f480c6929 ecos-sw-2000-12-08
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
| author | jlarmour |
|---|---|
| date | Fri, 08 Dec 2000 03:30:06 +0000 |
| parents | 289bf90c6a9b |
| children | 25e238959bae |
comparison
equal
deleted
inserted
replaced
| 142:12eccf9656f3 | 143:6b5f480c6929 |
|---|---|
| 645 void | 645 void |
| 646 __build_t_packet (int sigval, char *buf) | 646 __build_t_packet (int sigval, char *buf) |
| 647 { | 647 { |
| 648 target_register_t addr; | 648 target_register_t addr; |
| 649 char *ptr = buf; | 649 char *ptr = buf; |
| 650 target_register_t extend_val = 0; | |
| 650 | 651 |
| 651 *ptr++ = 'T'; | 652 *ptr++ = 'T'; |
| 652 *ptr++ = __tohex (sigval >> 4); | 653 *ptr++ = __tohex (sigval >> 4); |
| 653 *ptr++ = __tohex (sigval); | 654 *ptr++ = __tohex (sigval); |
| 654 | 655 |
| 711 if (sizeof(addr) < REGSIZE(PC)) | 712 if (sizeof(addr) < REGSIZE(PC)) |
| 712 { | 713 { |
| 713 // GDB is expecting REGSIZE(PC) number of bytes. | 714 // GDB is expecting REGSIZE(PC) number of bytes. |
| 714 // We only have sizeof(addr) number. Let's fill | 715 // We only have sizeof(addr) number. Let's fill |
| 715 // the appropriate number of bytes intelligently. | 716 // the appropriate number of bytes intelligently. |
| 716 target_register_t extend_val = 0; | |
| 717 #ifdef CYGARC_SIGN_EXTEND_REGISTERS | 717 #ifdef CYGARC_SIGN_EXTEND_REGISTERS |
| 718 { | 718 { |
| 719 unsigned long bits_in_addr = (sizeof(addr) << 3); // ie Size in bytes * 8 | 719 unsigned long bits_in_addr = (sizeof(addr) << 3); // ie Size in bytes * 8 |
| 720 target_register_t sign_bit_mask = (1 << (bits_in_addr - 1)); | 720 target_register_t sign_bit_mask = (1 << (bits_in_addr - 1)); |
| 721 if ((addr & sign_bit_mask) == sign_bit_mask) | 721 if ((addr & sign_bit_mask) == sign_bit_mask) |
| 722 extend_val = ~0; | 722 extend_val = ~0; |
| 723 } | 723 } |
| 724 #endif | 724 #endif |
| 725 ptr = __mem2hex((char *)&extend_val, ptr, REGSIZE(PC) - sizeof(addr), 0); | 725 } |
| 726 } | 726 #if (CYG_BYTEORDER == CYG_MSBFIRST) |
| 727 ptr = __mem2hex((char *)&extend_val, ptr, REGSIZE(PC) - sizeof(addr), 0); | |
| 728 #endif | |
| 727 ptr = __mem2hex((char *)&addr, ptr, sizeof(addr), 0); | 729 ptr = __mem2hex((char *)&addr, ptr, sizeof(addr), 0); |
| 730 #if (CYG_BYTEORDER == CYG_LSBFIRST) | |
| 731 ptr = __mem2hex((char *)&extend_val, ptr, REGSIZE(PC) - sizeof(addr), 0); | |
| 732 #endif | |
| 728 *ptr++ = ';'; | 733 *ptr++ = ';'; |
| 729 | 734 |
| 730 *ptr++ = __tohex (SP >> 4); | 735 *ptr++ = __tohex (SP >> 4); |
| 731 *ptr++ = __tohex (SP); | 736 *ptr++ = __tohex (SP); |
| 732 *ptr++ = ':'; | 737 *ptr++ = ':'; |
