Changeset 3fb76805 in rtems


Ignore:
Timestamp:
Oct 4, 2002, 2:47:11 PM (19 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, 5, master
Children:
b6ea96ef
Parents:
6f0df142
Message:

2002-10-04 Jay Monkman <jtm@…>

  • netinet/in_cksum.c, netinet/ip_icmp.h, netinet/ip_input.c, netinet/tcp_input.c, netinet/tcp_subr.c, netinet/tcp_var.h, sys/queue.h: Address alignment requirements for the ARM.
Location:
cpukit/libnetworking
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • cpukit/libnetworking/ChangeLog

    r6f0df142 r3fb76805  
     12002-10-04      Jay Monkman <jtm@smoothsmoothie.com>
     2
     3        * netinet/in_cksum.c, netinet/ip_icmp.h, netinet/ip_input.c,
     4        netinet/tcp_input.c, netinet/tcp_subr.c, netinet/tcp_var.h,
     5        sys/queue.h: Address alignment requirements for the ARM.
     6
    172002-10-04      Jay Monkman <jtm@smoothsmoothie.com>
    28
  • cpukit/libnetworking/netinet/in_cksum.c

    r6f0df142 r3fb76805  
    5757
    5858#include "in_cksum_powerpc.c"
     59
     60#elif (defined(__GNUC__) && defined(__arm__))
     61
     62#include "in_cksum_arm.c"
    5963
    6064#else
  • cpukit/libnetworking/netinet/ip_icmp.h

    r6f0df142 r3fb76805  
    5555 */
    5656struct icmp {
    57         u_char  icmp_type;              /* type of message, see below */
    58         u_char  icmp_code;              /* type sub code */
    59         u_short icmp_cksum;             /* ones complement cksum of struct */
     57        u_char  icmp_type BYTE_PACK;            /* type of message, see below */
     58        u_char  icmp_code BYTE_PACK;            /* type sub code */
     59        u_short icmp_cksum BYTE_PACK;           /* ones complement cksum of struct */
    6060        union {
    61                 u_char ih_pptr;                 /* ICMP_PARAMPROB */
    62                 struct in_addr ih_gwaddr;       /* ICMP_REDIRECT */
     61                u_char ih_pptr BYTE_PACK;                       /* ICMP_PARAMPROB */
     62                struct in_addr ih_gwaddr BYTE_PACK;     /* ICMP_REDIRECT */
    6363                struct ih_idseq {
    64                         n_short icd_id;
    65                         n_short icd_seq;
     64                        n_short icd_id BYTE_PACK;
     65                        n_short icd_seq BYTE_PACK;
    6666                } ih_idseq;
    67                 int ih_void;
     67                int ih_void BYTE_PACK;
    6868
    6969                /* ICMP_UNREACH_NEEDFRAG -- Path MTU Discovery (RFC1191) */
    7070                struct ih_pmtu {
    71                         n_short ipm_void;
    72                         n_short ipm_nextmtu;
     71                        n_short ipm_void BYTE_PACK;
     72                        n_short ipm_nextmtu BYTE_PACK;
    7373                } ih_pmtu;
    7474
    7575                struct ih_rtradv {
    76                         u_char irt_num_addrs;
    77                         u_char irt_wpa;
    78                         u_int16_t irt_lifetime;
     76                        u_char irt_num_addrs BYTE_PACK;
     77                        u_char irt_wpa BYTE_PACK;
     78                        u_int16_t irt_lifetime BYTE_PACK;
    7979                } ih_rtradv;
    8080        } icmp_hun;
     
    9191        union {
    9292                struct id_ts {
    93                         n_time its_otime;
    94                         n_time its_rtime;
    95                         n_time its_ttime;
     93                        n_time its_otime BYTE_PACK;
     94                        n_time its_rtime BYTE_PACK;
     95                        n_time its_ttime BYTE_PACK;
    9696                } id_ts;
    9797                struct id_ip  {
    98                         struct ip idi_ip;
     98                        struct ip idi_ip BYTE_PACK;
    9999                        /* options and then 64 bits of data */
    100100                } id_ip;
    101                 struct icmp_ra_addr id_radv;
    102                 u_long  id_mask;
     101                struct icmp_ra_addr id_radv BYTE_PACK;
     102                u_long  id_mask BYTE_PACK;
    103103                char    id_data[1];
    104104        } icmp_dun;
  • cpukit/libnetworking/netinet/ip_input.c

    r6f0df142 r3fb76805  
    8080struct socket *ip_rsvpd;
    8181
    82 static int      ipforwarding = 0;
     82int     ipforwarding = 0;
    8383SYSCTL_INT(_net_inet_ip, IPCTL_FORWARDING, forwarding, CTLFLAG_RW,
    8484        &ipforwarding, 0, "");
  • cpukit/libnetworking/netinet/tcp_input.c

    r6f0df142 r3fb76805  
    156156        struct socket *so = tp->t_inpcb->inp_socket;
    157157        int flags;
    158 
    159158        /*
    160159         * Call with ti==0 after become established to
     
    203202        tcpstat.tcps_rcvoopack++;
    204203        tcpstat.tcps_rcvoobyte += ti->ti_len;
     204#if (defined(__GNUC__) && defined(__arm__))
     205    STR32_UNALGN(ti,m);
     206#else
    205207        REASS_MBUF(ti) = m;             /* XXX */
    206 
     208#endif
    207209        /*
    208210         * While we overlap succeeding segments trim them or,
     
    216218                        q->ti_seq += i;
    217219                        q->ti_len -= i;
     220#if (defined(__GNUC__) && defined(__arm__))
     221            LD32_UNALGN(q,m);
     222            m_adj(m, i);
     223#else
    218224                        m_adj(REASS_MBUF(q), i);
     225#endif
    219226                        break;
    220227                }
    221228                q = (struct tcpiphdr *)q->ti_next;
     229#if (defined(__GNUC__) && defined(__arm__))
     230        LD32_UNALGN((struct tcpiphdr *)q->ti_prev,m);
     231#else
    222232                m = REASS_MBUF((struct tcpiphdr *)q->ti_prev);
     233#endif
    223234                remque(q->ti_prev);
    224                 m_freem(m);
     235        m_freem(m);
    225236        }
    226237
     
    244255                flags = ti->ti_flags & TH_FIN;
    245256                remque(ti);
     257#if (defined(__GNUC__) && defined(__arm__))
     258        LD32_UNALGN(ti,m);
     259#else
    246260                m = REASS_MBUF(ti);
     261#endif
    247262                ti = (struct tcpiphdr *)ti->ti_next;
    248263                if (so->so_state & SS_CANTRCVMORE)
  • cpukit/libnetworking/netinet/tcp_subr.c

    r6f0df142 r3fb76805  
    400400        while (t != (struct tcpiphdr *)tp) {
    401401                t = (struct tcpiphdr *)t->ti_next;
     402#if (defined(__GNUC__) && defined(__arm__))
     403        LD32_UNALGN((struct tcpiphdr *)t->ti_prev,m);
     404#else
    402405                m = REASS_MBUF((struct tcpiphdr *)t->ti_prev);
     406#endif
    403407                remque(t->ti_prev);
    404408                m_freem(m);
  • cpukit/libnetworking/netinet/tcp_var.h

    r6f0df142 r3fb76805  
    226226 * tcpcb) are overlayed with an mbuf pointer.
    227227 */
    228 #define REASS_MBUF(ti) (*(struct mbuf **)&((ti)->ti_t))
     228#if (defined(__GNUC__) && defined(__arm__))
     229#define STR32_UNALGN(ti,m) \
     230        (ti)->ti_sport = (unsigned short)(((unsigned int) m & 0xffff0000) >> 16); \
     231         (ti)->ti_dport = (unsigned short) ((unsigned int) m & 0x0000ffff);
     232#define LD32_UNALGN(ti,m) \
     233        m = (struct mbuf *)((((unsigned int) (ti)->ti_sport) << 16) | ( (unsigned int)(ti)->ti_dport));
     234
     235#else
     236#define REASS_MBUF(ti) (*(mbuf_packed **)&((ti)->ti_t))
     237#endif
    229238
    230239/*
  • cpukit/libnetworking/sys/queue.h

    r6f0df142 r3fb76805  
    414414#ifdef  __GNUC__
    415415
     416#if (defined(__GNUC__) && defined(__arm__))
     417static __inline void
     418insque(void *a, void *b)
     419{
     420        struct quehead *element;
     421        struct quehead *head;
     422    element = (struct quehead *) (((unsigned int) a + 0x3) & ~0x3);
     423    head = (struct quehead *) (((unsigned int) b + 0x3) & ~0x3);
     424
     425        element->qh_link = head->qh_link;
     426        element->qh_rlink = head;
     427        head->qh_link = element;
     428        element->qh_link->qh_rlink = element;
     429}
     430
     431static __inline void
     432remque(void *a)
     433{
     434        struct quehead *element;
     435
     436    element = (struct quehead *) (((unsigned int) a + 0x3) & ~0x3);
     437
     438        element->qh_link->qh_rlink = element->qh_rlink;
     439        element->qh_rlink->qh_link = element->qh_link;
     440        element->qh_rlink = 0;
     441}
     442
     443#else /*if (defined(__GNUC__) && defined(__arm__))*/
     444
    416445static __inline void
    417446insque(void *a, void *b)
     
    434463        element->qh_rlink = 0;
    435464}
     465#endif /*if-else (defined(__GNUC__) && defined(__arm__))*/
    436466
    437467#else /* !__GNUC__ */
Note: See TracChangeset for help on using the changeset viewer.