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++ = ':';