diff --git a/arch/arm/ti_lm3s6965/scp.h b/arch/arm/ti_lm3s6965/scp.h index 02f4ec80486..e1be6b9ccfc 100644 --- a/arch/arm/ti_lm3s6965/scp.h +++ b/arch/arm/ti_lm3s6965/scp.h @@ -79,39 +79,39 @@ section 5.4/5.5, pp .184-200. union __rcc { uint32_t value; struct { - uint32_t moscdis : 1 __attribute__((packed)); - uint32_t ioscdis : 1 __attribute__((packed)); - uint32_t rsvd__2_3 : 2 __attribute__((packed)); - uint32_t oscsrc : 2 __attribute__((packed)); - uint32_t xtal : 4 __attribute__((packed)); - uint32_t rsvd__10 : 1 __attribute__((packed)); - uint32_t bypass : 1 __attribute__((packed)); - uint32_t rsvd__12 : 1 __attribute__((packed)); - uint32_t pwrdn : 1 __attribute__((packed)); - uint32_t rsvd__14_16 : 3 __attribute__((packed)); - uint32_t pwmdiv : 3 __attribute__((packed)); /* 2**(n+1) */ - uint32_t usepwmdiv : 1 __attribute__((packed)); - uint32_t rsvd__21 : 1 __attribute__((packed)); - uint32_t usesysdiv : 1 __attribute__((packed)); - uint32_t sysdiv : 4 __attribute__((packed)); - uint32_t acg : 1 __attribute__((packed)); - uint32_t rsvd__28_31 : 4 __attribute__((packed)); + uint32_t moscdis : 1 __packed; + uint32_t ioscdis : 1 __packed; + uint32_t rsvd__2_3 : 2 __packed; + uint32_t oscsrc : 2 __packed; + uint32_t xtal : 4 __packed; + uint32_t rsvd__10 : 1 __packed; + uint32_t bypass : 1 __packed; + uint32_t rsvd__12 : 1 __packed; + uint32_t pwrdn : 1 __packed; + uint32_t rsvd__14_16 : 3 __packed; + uint32_t pwmdiv : 3 __packed; /* 2**(n+1) */ + uint32_t usepwmdiv : 1 __packed; + uint32_t rsvd__21 : 1 __packed; + uint32_t usesysdiv : 1 __packed; + uint32_t sysdiv : 4 __packed; + uint32_t acg : 1 __packed; + uint32_t rsvd__28_31 : 4 __packed; } bit; }; union __rcc2 { uint32_t value; struct { - uint8_t rsvd__0_3 : 4 __attribute__((packed)); - uint8_t oscsrc2 : 3 __attribute__((packed)); - uint16_t rsvd__7_10 : 4 __attribute__((packed)); - uint8_t bypass2 : 1 __attribute__((packed)); - uint8_t rsvd__12 : 1 __attribute__((packed)); - uint8_t pwrdn2 : 1 __attribute__((packed)); - uint16_t rsvd__14_22 : 9 __attribute__((packed)); - uint16_t sysdiv2 : 6 __attribute__((packed)); - uint8_t rsvd__29_30 : 2 __attribute__((packed)); - uint8_t usercc2 : 1 __attribute__((packed)); + uint8_t rsvd__0_3 : 4 __packed; + uint8_t oscsrc2 : 3 __packed; + uint16_t rsvd__7_10 : 4 __packed; + uint8_t bypass2 : 1 __packed; + uint8_t rsvd__12 : 1 __packed; + uint8_t pwrdn2 : 1 __packed; + uint16_t rsvd__14_22 : 9 __packed; + uint16_t sysdiv2 : 6 __packed; + uint8_t rsvd__29_30 : 2 __packed; + uint8_t usercc2 : 1 __packed; } bit; }; diff --git a/include/arch/arm/CortexM/scs.h b/include/arch/arm/CortexM/scs.h index a37bcea84ab..6b16a69372b 100644 --- a/include/arch/arm/CortexM/scs.h +++ b/include/arch/arm/CortexM/scs.h @@ -84,96 +84,96 @@ still considered part of the NVIC and an API for it is provided in nvic.h. union __ictr { uint32_t val; struct { - uint32_t intlinesnum : 4 __attribute__((packed)); - uint32_t rsvd__4_31 : 28 __attribute__((packed)); + uint32_t intlinesnum : 4 __packed; + uint32_t rsvd__4_31 : 28 __packed; } bit; }; union __actlr { uint32_t val; struct { - uint32_t dismcycint : 1 __attribute__((packed)); - uint32_t disdefwbuf : 1 __attribute__((packed)); - uint32_t disfold : 1 __attribute__((packed)); - uint32_t rsvd__3_31 : 28 __attribute__((packed)); + uint32_t dismcycint : 1 __packed; + uint32_t disdefwbuf : 1 __packed; + uint32_t disfold : 1 __packed; + uint32_t rsvd__3_31 : 28 __packed; } bit; }; union __stcsr { uint32_t val; struct { - uint8_t enable : 1 __attribute__((packed)); - uint8_t tickint : 1 __attribute__((packed)); - uint8_t clksource : 1 __attribute__((packed)); - uint16_t rsvd__3_15 : 13 __attribute__((packed)); - uint16_t countflag : 1 __attribute__((packed)); - uint16_t rsvd__17_31 : 15 __attribute__((packed)); + uint8_t enable : 1 __packed; + uint8_t tickint : 1 __packed; + uint8_t clksource : 1 __packed; + uint16_t rsvd__3_15 : 13 __packed; + uint16_t countflag : 1 __packed; + uint16_t rsvd__17_31 : 15 __packed; } bit; }; union __cpuid { uint32_t val; struct { - uint32_t revision : 4 __attribute__((packed)); - uint32_t partno : 12 __attribute__((packed)); - uint32_t constant : 4 __attribute__((packed)); - uint32_t variant : 4 __attribute__((packed)); - uint32_t implementer : 8 __attribute__((packed)); + uint32_t revision : 4 __packed; + uint32_t partno : 12 __packed; + uint32_t constant : 4 __packed; + uint32_t variant : 4 __packed; + uint32_t implementer : 8 __packed; } bit; }; union __icsr { uint32_t val; struct { - uint32_t vectactive : 9 __attribute__((packed)); - uint32_t rsvd__9_10 : 2 __attribute__((packed)); - uint32_t rettobase : 1 __attribute__((packed)); - uint32_t vectpending : 10 __attribute__((packed)); - uint32_t isrpending : 1 __attribute__((packed)); - uint32_t rsvd__23 : 1 __attribute__((packed)); - uint32_t rsvd__24 : 1 __attribute__((packed)); - uint32_t pendstclr : 1 __attribute__((packed)); - uint32_t pendstset : 1 __attribute__((packed)); - uint32_t pendsvclr : 1 __attribute__((packed)); - uint32_t pendsvset : 1 __attribute__((packed)); - uint32_t rsvd__29_30 : 2 __attribute__((packed)); - uint32_t nmipendset : 1 __attribute__((packed)); + uint32_t vectactive : 9 __packed; + uint32_t rsvd__9_10 : 2 __packed; + uint32_t rettobase : 1 __packed; + uint32_t vectpending : 10 __packed; + uint32_t isrpending : 1 __packed; + uint32_t rsvd__23 : 1 __packed; + uint32_t rsvd__24 : 1 __packed; + uint32_t pendstclr : 1 __packed; + uint32_t pendstset : 1 __packed; + uint32_t pendsvclr : 1 __packed; + uint32_t pendsvset : 1 __packed; + uint32_t rsvd__29_30 : 2 __packed; + uint32_t nmipendset : 1 __packed; } bit; }; union __vtor { uint32_t val; struct { - uint32_t rsvd__0_6 : 7 __attribute__((packed)); - uint32_t tbloff : 22 __attribute__((packed)); - uint32_t tblbase : 1 __attribute__((packed)); - uint32_t rsvd__30_31 : 2 __attribute__((packed)); + uint32_t rsvd__0_6 : 7 __packed; + uint32_t tbloff : 22 __packed; + uint32_t tblbase : 1 __packed; + uint32_t rsvd__30_31 : 2 __packed; } bit; }; union __aircr { uint32_t val; struct { - uint32_t vecreset : 1 __attribute__((packed)); /* WO */ - uint32_t vectclractive : 1 __attribute__((packed)); /* WO */ - uint32_t sysresetreq : 1 __attribute__((packed)); /* WO */ - uint32_t rsvd__3_7 : 5 __attribute__((packed)); - uint32_t prigroup : 3 __attribute__((packed)); - uint32_t rsvd__11_14 : 4 __attribute__((packed)); - uint32_t endianness : 1 __attribute__((packed)); /* RO */ - uint32_t vectkey : 16 __attribute__((packed)); + uint32_t vecreset : 1 __packed; /* WO */ + uint32_t vectclractive : 1 __packed; /* WO */ + uint32_t sysresetreq : 1 __packed; /* WO */ + uint32_t rsvd__3_7 : 5 __packed; + uint32_t prigroup : 3 __packed; + uint32_t rsvd__11_14 : 4 __packed; + uint32_t endianness : 1 __packed; /* RO */ + uint32_t vectkey : 16 __packed; } bit; }; union __scr { uint32_t val; struct { - uint32_t rsvd__0 : 1 __attribute__((packed)); - uint32_t sleeponexit : 1 __attribute__((packed)); - uint32_t sleepdeep : 1 __attribute__((packed)); - uint32_t rsvd__3 : 1 __attribute__((packed)); - uint32_t sevonpend : 1 __attribute__((packed)); - uint32_t rsvd__5_31 : 27 __attribute__((packed)); + uint32_t rsvd__0 : 1 __packed; + uint32_t sleeponexit : 1 __packed; + uint32_t sleepdeep : 1 __packed; + uint32_t rsvd__3 : 1 __packed; + uint32_t sevonpend : 1 __packed; + uint32_t rsvd__5_31 : 27 __packed; } bit; }; @@ -182,39 +182,39 @@ union __scr { union __ccr { uint32_t val; struct { - uint32_t nonbasethrdena : 1 __attribute__((packed)); - uint32_t usersetmpend : 1 __attribute__((packed)); - uint32_t rsvd__2 : 1 __attribute__((packed)); - uint32_t unalign_trp : 1 __attribute__((packed)); - uint32_t div_0_trp : 1 __attribute__((packed)); - uint32_t rsvd__5_7 : 3 __attribute__((packed)); - uint32_t bfhfnmign : 1 __attribute__((packed)); - uint32_t stkalign : 1 __attribute__((packed)); - uint32_t rsvd__10_31 : 22 __attribute__((packed)); + uint32_t nonbasethrdena : 1 __packed; + uint32_t usersetmpend : 1 __packed; + uint32_t rsvd__2 : 1 __packed; + uint32_t unalign_trp : 1 __packed; + uint32_t div_0_trp : 1 __packed; + uint32_t rsvd__5_7 : 3 __packed; + uint32_t bfhfnmign : 1 __packed; + uint32_t stkalign : 1 __packed; + uint32_t rsvd__10_31 : 22 __packed; } bit; }; union __shcsr { uint32_t val; struct { - uint32_t memfaultact : 1 __attribute__((packed)); - uint32_t busfaultact : 1 __attribute__((packed)); - uint32_t rsvd__2 : 1 __attribute__((packed)); - uint32_t usgfaultact : 1 __attribute__((packed)); - uint32_t rsvd__4_6 : 3 __attribute__((packed)); - uint32_t svcallact : 1 __attribute__((packed)); - uint32_t monitoract : 1 __attribute__((packed)); - uint32_t rsvd__9 : 1 __attribute__((packed)); - uint32_t pendsvact : 1 __attribute__((packed)); - uint32_t systickact : 1 __attribute__((packed)); - uint32_t usgfaultpended : 1 __attribute__((packed)); - uint32_t memfaultpended : 1 __attribute__((packed)); - uint32_t busfaultpended : 1 __attribute__((packed)); - uint32_t svcallpended : 1 __attribute__((packed)); - uint32_t memfaultena : 1 __attribute__((packed)); - uint32_t busfaultena : 1 __attribute__((packed)); - uint32_t usgfaultena : 1 __attribute__((packed)); - uint32_t rsvd__19_31 : 13 __attribute__((packed)); + uint32_t memfaultact : 1 __packed; + uint32_t busfaultact : 1 __packed; + uint32_t rsvd__2 : 1 __packed; + uint32_t usgfaultact : 1 __packed; + uint32_t rsvd__4_6 : 3 __packed; + uint32_t svcallact : 1 __packed; + uint32_t monitoract : 1 __packed; + uint32_t rsvd__9 : 1 __packed; + uint32_t pendsvact : 1 __packed; + uint32_t systickact : 1 __packed; + uint32_t usgfaultpended : 1 __packed; + uint32_t memfaultpended : 1 __packed; + uint32_t busfaultpended : 1 __packed; + uint32_t svcallpended : 1 __packed; + uint32_t memfaultena : 1 __packed; + uint32_t busfaultena : 1 __packed; + uint32_t usgfaultena : 1 __packed; + uint32_t rsvd__19_31 : 13 __packed; } bit; }; @@ -224,39 +224,38 @@ union __cfsr { union { uint8_t val; struct { - uint8_t iaccviol : 1 __attribute__((packed)); - uint8_t daccviol : 1 __attribute__((packed)); - uint8_t rsvd__2 : 1 __attribute__((packed)); - uint8_t munstkerr : 1 __attribute__((packed)); - uint8_t mstkerr : 1 __attribute__((packed)); - uint8_t rsvd__5_6 : 2 __attribute__((packed)); - uint8_t mmarvalid : 1 __attribute__((packed)); + uint8_t iaccviol : 1 __packed; + uint8_t daccviol : 1 __packed; + uint8_t rsvd__2 : 1 __packed; + uint8_t munstkerr : 1 __packed; + uint8_t mstkerr : 1 __packed; + uint8_t rsvd__5_6 : 2 __packed; + uint8_t mmarvalid : 1 __packed; } bit; } mmfsr; union { uint8_t val; struct { - uint8_t ibuserr : 1 __attribute__((packed)); - uint8_t preciserr : 1 __attribute__((packed)); - uint8_t impreciserr : 1 __attribute__((packed)); - uint8_t unstkerr : 1 __attribute__((packed)); - uint8_t stkerr : 1 __attribute__((packed)); - uint8_t rsvd__5_6 : 2 __attribute__((packed)); - uint8_t bfarvalid : 1 __attribute__((packed)); + uint8_t ibuserr : 1 __packed; + uint8_t preciserr : 1 __packed; + uint8_t impreciserr : 1 __packed; + uint8_t unstkerr : 1 __packed; + uint8_t stkerr : 1 __packed; + uint8_t rsvd__5_6 : 2 __packed; + uint8_t bfarvalid : 1 __packed; } bit; } bfsr; union { uint16_t val; struct { - uint16_t undefinstr : 1 __attribute__((packed)); - uint16_t invstate : 1 __attribute__((packed)); - uint16_t invpc : 1 __attribute__((packed)); - uint16_t nocp : 1 __attribute__((packed)); - uint16_t rsvd__4_7 : 4 __attribute__((packed)); - uint16_t unaligned : 1 __attribute__((packed)); - uint16_t divbyzero : 1 __attribute__((packed)); - uint16_t rsvd__10_15 : 6 - __attribute__((packed)); + uint16_t undefinstr : 1 __packed; + uint16_t invstate : 1 __packed; + uint16_t invpc : 1 __packed; + uint16_t nocp : 1 __packed; + uint16_t rsvd__4_7 : 4 __packed; + uint16_t unaligned : 1 __packed; + uint16_t divbyzero : 1 __packed; + uint16_t rsvd__10_15 : 6 __packed; } bit; } ufsr; } byte; @@ -265,68 +264,68 @@ union __cfsr { union __hfsr { uint32_t val; struct { - uint32_t rsvd__0 : 1 __attribute__((packed)); - uint32_t vecttbl : 1 __attribute__((packed)); - uint32_t rsvd__2_29 : 28 __attribute__((packed)); - uint32_t forced : 1 __attribute__((packed)); - uint32_t debugevt : 1 __attribute__((packed)); + uint32_t rsvd__0 : 1 __packed; + uint32_t vecttbl : 1 __packed; + uint32_t rsvd__2_29 : 28 __packed; + uint32_t forced : 1 __packed; + uint32_t debugevt : 1 __packed; } bit; }; union __mpu_type { uint32_t val; struct { - uint32_t separate : 1 __attribute__((packed)); - uint32_t rsvd__1_7 : 7 __attribute__((packed)); - uint32_t dregion : 8 __attribute__((packed)); - uint32_t iregion : 8 __attribute__((packed)); - uint32_t rsvd__24_31 : 8 __attribute__((packed)); + uint32_t separate : 1 __packed; + uint32_t rsvd__1_7 : 7 __packed; + uint32_t dregion : 8 __packed; + uint32_t iregion : 8 __packed; + uint32_t rsvd__24_31 : 8 __packed; } bit; }; union __mpu_ctrl { uint32_t val; struct { - uint32_t enable : 1 __attribute__((packed)); - uint32_t hfnmiena : 1 __attribute__((packed)); - uint32_t privdefena : 1 __attribute__((packed)); - uint32_t rsvd__24_31 : 29 __attribute__((packed)); + uint32_t enable : 1 __packed; + uint32_t hfnmiena : 1 __packed; + uint32_t privdefena : 1 __packed; + uint32_t rsvd__24_31 : 29 __packed; } bit; }; union __mpu_rnr { uint32_t val; struct { - uint32_t region : 8 __attribute__((packed)); - uint32_t rsvd__24_31 : 24 __attribute__((packed)); + uint32_t region : 8 __packed; + uint32_t rsvd__24_31 : 24 __packed; } bit; }; union __mpu_rbar { uint32_t val; struct { - uint8_t region : 4 __attribute__((packed)); - uint8_t valid : 1 __attribute__((packed)); - uint32_t addr : 27 __attribute__((packed)); + uint8_t region : 4 __packed; + uint8_t valid : 1 __packed; + uint32_t addr : 27 __packed; } bit; }; union __mpu_rasr { uint32_t val; struct { - uint32_t enable : 1 __attribute__((packed)); - uint32_t size : 5 __attribute__((packed)); - uint32_t rsvd__6_7 : 2 __attribute__((packed)); - uint32_t srd : 8 __attribute__((packed)); - uint32_t b : 1 __attribute__((packed)); - uint32_t c : 1 __attribute__((packed)); - uint32_t s : 1 __attribute__((packed)); - uint32_t tex : 3 __attribute__((packed)); - uint32_t rsvd__22_23 : 2 __attribute__((packed)); - uint32_t ap : 3 __attribute__((packed)); - uint32_t rsvd__27 : 1 __attribute__((packed)); - uint32_t xn : 1 __attribute__((packed)); - uint32_t rsvd__29_31 : 3 __attribute__((packed)); + uint32_t enable : 1 __packed; + uint32_t size : 5 __packed; + uint32_t rsvd__6_7 : 2 __packed; + uint32_t srd : 8 __packed; + uint32_t b : 1 __packed; + uint32_t c : 1 __packed; + uint32_t s : 1 __packed; + uint32_t tex : 3 __packed; + uint32_t rsvd__22_23 : 2 __packed; + uint32_t ap : 3 __packed; + uint32_t rsvd__27 : 1 __packed; + uint32_t xn : 1 __packed; + uint32_t rsvd__29_31 : 3 __packed; } bit; }; diff --git a/include/drivers/k20_mcg.h b/include/drivers/k20_mcg.h index df33d6d80dc..22fc61270ae 100644 --- a/include/drivers/k20_mcg.h +++ b/include/drivers/k20_mcg.h @@ -204,14 +204,14 @@ typedef volatile struct { typedef union { uint32_t value; /* reset 0x00 */ struct { - uint8_t sc16p : 1 __attribute__((packed)); - uint8_t sc8p : 1 __attribute__((packed)); - uint8_t sc4p : 1 __attribute__((packed)); - uint8_t sc2p : 1 __attribute__((packed)); - uint8_t res_4 : 1 __attribute__((packed)); - uint8_t erefsten : 1 __attribute__((packed)); - uint8_t res_6 : 1 __attribute__((packed)); - uint8_t erclken : 1 __attribute__((packed)); + uint8_t sc16p : 1 __packed; + uint8_t sc8p : 1 __packed; + uint8_t sc4p : 1 __packed; + uint8_t sc2p : 1 __packed; + uint8_t res_4 : 1 __packed; + uint8_t erefsten : 1 __packed; + uint8_t res_6 : 1 __packed; + uint8_t erclken : 1 __packed; } field; } OSC_CR_t; /* 0x0 */ diff --git a/include/drivers/k20_pcr.h b/include/drivers/k20_pcr.h index ea831770350..94b3be2454c 100644 --- a/include/drivers/k20_pcr.h +++ b/include/drivers/k20_pcr.h @@ -59,29 +59,29 @@ K20 Family of microprocessors typedef union { uint32_t value; struct { - uint8_t ps : 1 __attribute__((packed)); - uint8_t pe : 1 __attribute__((packed)); - uint8_t sre : 1 __attribute__((packed)); - uint8_t res_3 : 1 __attribute__((packed)); - uint8_t pfe : 1 __attribute__((packed)); - uint8_t ode : 1 __attribute__((packed)); - uint8_t dse : 1 __attribute__((packed)); - uint8_t res_7 : 1 __attribute__((packed)); - uint8_t mux : 3 __attribute__((packed)); - uint8_t res_11_14 : 4 __attribute__((packed)); - uint8_t lk : 1 __attribute__((packed)); - uint8_t irqc : 4 __attribute__((packed)); - uint8_t res_20_23 : 4 __attribute__((packed)); - uint8_t isf : 1 __attribute__((packed)); - uint8_t res_25_31 : 7 __attribute__((packed)); + uint8_t ps : 1 __packed; + uint8_t pe : 1 __packed; + uint8_t sre : 1 __packed; + uint8_t res_3 : 1 __packed; + uint8_t pfe : 1 __packed; + uint8_t ode : 1 __packed; + uint8_t dse : 1 __packed; + uint8_t res_7 : 1 __packed; + uint8_t mux : 3 __packed; + uint8_t res_11_14 : 4 __packed; + uint8_t lk : 1 __packed; + uint8_t irqc : 4 __packed; + uint8_t res_20_23 : 4 __packed; + uint8_t isf : 1 __packed; + uint8_t res_25_31 : 7 __packed; } field; } K20_PCR_t; /* Pin Control Register n, n= 0-31 */ typedef union { uint32_t value; struct { - uint16_t gpwe : 16 __attribute__((packed)); - uint16_t gpwd : 16 __attribute__((packed)); + uint16_t gpwe : 16 __packed; + uint16_t gpwd : 16 __packed; } field; } K20_GPC_t; /* Global Pin Control Low/High Register */ @@ -89,11 +89,11 @@ typedef union { typedef volatile struct { struct { - K20_PCR_t pcr[32] __attribute__((packed)); /* 0x00-07C */ - K20_GPC_t gpchr __attribute__((packed)); /* 0x80 */ - K20_GPC_t gpclr __attribute__((packed)); /* 0x84 */ + K20_PCR_t pcr[32] __packed; /* 0x00-07C */ + K20_GPC_t gpchr __packed; /* 0x80 */ + K20_GPC_t gpclr __packed; /* 0x84 */ uint8_t res_88_9F[0xA0 - 0x88]; /* 0x88-0x9F Reserved */ - uint32_t isfr __attribute__((packed)); /* 0xA0 */ + uint32_t isfr __packed; /* 0xA0 */ uint8_t res_A4_FF[0x1000 - 0xA4]; /* 0xA4-0xFFF Reserved */ } port[5]; } K20_PORT_PCR_t; diff --git a/include/drivers/k20_sim.h b/include/drivers/k20_sim.h index c4714c5141b..aa85ba92e25 100644 --- a/include/drivers/k20_sim.h +++ b/include/drivers/k20_sim.h @@ -49,89 +49,89 @@ K20 Family of microprocessors typedef union { uint32_t value; /* reset = 0x8000 F03F */ struct { - uint32_t res_0_11 : 12 __attribute__((packed)); - uint32_t ramSize : 4 __attribute__((packed)); - uint32_t res_16_17 : 2 __attribute__((packed)); - uint32_t osc32kSel : 2 __attribute__((packed)); - uint32_t res_20_28 : 9 __attribute__((packed)); - uint32_t usbVoltStby : 1 __attribute__((packed)); - uint32_t usbStopStby : 1 __attribute__((packed)); - uint32_t usbRegEn : 1 __attribute__((packed)); + uint32_t res_0_11 : 12 __packed; + uint32_t ramSize : 4 __packed; + uint32_t res_16_17 : 2 __packed; + uint32_t osc32kSel : 2 __packed; + uint32_t res_20_28 : 9 __packed; + uint32_t usbVoltStby : 1 __packed; + uint32_t usbStopStby : 1 __packed; + uint32_t usbRegEn : 1 __packed; } field; } SIM_SOPT1_t; /* 0x000 */ typedef union { uint32_t value; struct { - uint32_t res_0_23 : 24 __attribute__((packed)); - uint32_t usbRegWriteEn : 1 __attribute__((packed)); - uint32_t usbVoltWriteEn : 1 __attribute__((packed)); - uint32_t usbStopWriteEn : 1 __attribute__((packed)); - uint32_t res_27_31 : 5 __attribute__((packed)); + uint32_t res_0_23 : 24 __packed; + uint32_t usbRegWriteEn : 1 __packed; + uint32_t usbVoltWriteEn : 1 __packed; + uint32_t usbStopWriteEn : 1 __packed; + uint32_t res_27_31 : 5 __packed; } field; } SIM_SOPT1CFG_t; /* 0x004 */ typedef union { uint32_t value; struct { - uint32_t res_0_3 : 4 __attribute__((packed)); - uint32_t rtcClkOutSel : 1 __attribute__((packed)); - uint32_t clkOutSel : 3 __attribute__((packed)); - uint32_t flexBusSL : 2 __attribute__((packed)); - uint32_t res_10 : 1 __attribute__((packed)); - uint32_t ptd7Pad : 1 __attribute__((packed)); - uint32_t traceClkSel : 1 __attribute__((packed)); - uint32_t res_13_15 : 3 __attribute__((packed)); - uint32_t fllPllClkSel : 1 __attribute__((packed)); - uint32_t res_17 : 1 __attribute__((packed)); - uint32_t usbSrc : 1 __attribute__((packed)); - uint32_t res_19_31 : 13 __attribute__((packed)); + uint32_t res_0_3 : 4 __packed; + uint32_t rtcClkOutSel : 1 __packed; + uint32_t clkOutSel : 3 __packed; + uint32_t flexBusSL : 2 __packed; + uint32_t res_10 : 1 __packed; + uint32_t ptd7Pad : 1 __packed; + uint32_t traceClkSel : 1 __packed; + uint32_t res_13_15 : 3 __packed; + uint32_t fllPllClkSel : 1 __packed; + uint32_t res_17 : 1 __packed; + uint32_t usbSrc : 1 __packed; + uint32_t res_19_31 : 13 __packed; } field; } SIM_SOPT2_t; /* 0x1004 */ typedef union { uint32_t value; struct { - uint32_t ftm0Flt0 : 1 __attribute__((packed)); - uint32_t ftm0Flt1 : 1 __attribute__((packed)); - uint32_t ftm0Flt2 : 1 __attribute__((packed)); - uint32_t res_3 : 1 __attribute__((packed)); - uint32_t ftm1Flt0 : 1 __attribute__((packed)); - uint32_t res_5_7 : 3 __attribute__((packed)); - uint32_t ftm2Flt0 : 1 __attribute__((packed)); - uint32_t res_9_17 : 9 __attribute__((packed)); - uint32_t ftm1Ch0Src : 2 __attribute__((packed)); - uint32_t ftm2Ch0Src : 2 __attribute__((packed)); - uint32_t res_22_23 : 2 __attribute__((packed)); - uint32_t ftm0ClkSel : 1 __attribute__((packed)); - uint32_t ftm1ClkSel : 1 __attribute__((packed)); - uint32_t ftm2ClkSel : 1 __attribute__((packed)); - uint32_t res_27 : 1 __attribute__((packed)); - uint32_t ftm0Trg0Src : 1 __attribute__((packed)); - uint32_t ftm0Trg1Src : 1 __attribute__((packed)); - uint32_t res_30_31 : 2 __attribute__((packed)); + uint32_t ftm0Flt0 : 1 __packed; + uint32_t ftm0Flt1 : 1 __packed; + uint32_t ftm0Flt2 : 1 __packed; + uint32_t res_3 : 1 __packed; + uint32_t ftm1Flt0 : 1 __packed; + uint32_t res_5_7 : 3 __packed; + uint32_t ftm2Flt0 : 1 __packed; + uint32_t res_9_17 : 9 __packed; + uint32_t ftm1Ch0Src : 2 __packed; + uint32_t ftm2Ch0Src : 2 __packed; + uint32_t res_22_23 : 2 __packed; + uint32_t ftm0ClkSel : 1 __packed; + uint32_t ftm1ClkSel : 1 __packed; + uint32_t ftm2ClkSel : 1 __packed; + uint32_t res_27 : 1 __packed; + uint32_t ftm0Trg0Src : 1 __packed; + uint32_t ftm0Trg1Src : 1 __packed; + uint32_t res_30_31 : 2 __packed; } field; } SIM_SOPT4_t; /* 0x100C */ typedef union { uint32_t value; struct { - uint32_t uart0TxSrc : 2 __attribute__((packed)); - uint32_t uart0RxSrc : 2 __attribute__((packed)); - uint32_t uart1TxSrc : 2 __attribute__((packed)); - uint32_t uart1RxSrc : 2 __attribute__((packed)); - uint32_t res_8_31 : 24 __attribute__((packed)); + uint32_t uart0TxSrc : 2 __packed; + uint32_t uart0RxSrc : 2 __packed; + uint32_t uart1TxSrc : 2 __packed; + uint32_t uart1RxSrc : 2 __packed; + uint32_t res_8_31 : 24 __packed; } field; } SIM_SOPT5_t; /* 0x1010 */ typedef union { uint32_t value; struct { - uint32_t uart0TxSrc : 2 __attribute__((packed)); - uint32_t uart0RxSrc : 2 __attribute__((packed)); - uint32_t uart1TxSrc : 2 __attribute__((packed)); - uint32_t uart1RxSrc : 2 __attribute__((packed)); - uint32_t res_8_31 : 24 __attribute__((packed)); + uint32_t uart0TxSrc : 2 __packed; + uint32_t uart0RxSrc : 2 __packed; + uint32_t uart1TxSrc : 2 __packed; + uint32_t uart1RxSrc : 2 __packed; + uint32_t res_8_31 : 24 __packed; } field; } SIM_SCGC1_t; /* 0x1028*/ @@ -139,22 +139,22 @@ typedef union { typedef union { uint32_t value; struct { - uint32_t res_0 : 1 __attribute__((packed)); - uint32_t ewmClkEn_0 : 1 __attribute__((packed)); - uint32_t cmtClkEn_0 : 1 __attribute__((packed)); - uint32_t res_3_5 : 3 __attribute__((packed)); - uint32_t i2c0ClkEn : 1 __attribute__((packed)); - uint32_t i2c1ClkEn : 1 __attribute__((packed)); - uint32_t res_8_9 : 2 __attribute__((packed)); - uint32_t uart0ClkEn : 1 __attribute__((packed)); - uint32_t uart1ClkEn : 1 __attribute__((packed)); - uint32_t uart2ClkEn : 1 __attribute__((packed)); - uint32_t uart3ClkEn : 1 __attribute__((packed)); - uint32_t res_14_17 : 4 __attribute__((packed)); - uint32_t usbClkEn : 1 __attribute__((packed)); - uint32_t cmpClkEn : 1 __attribute__((packed)); - uint32_t vrefClkEn : 1 __attribute__((packed)); - uint32_t res_21_31 : 11 __attribute__((packed)); + uint32_t res_0 : 1 __packed; + uint32_t ewmClkEn_0 : 1 __packed; + uint32_t cmtClkEn_0 : 1 __packed; + uint32_t res_3_5 : 3 __packed; + uint32_t i2c0ClkEn : 1 __packed; + uint32_t i2c1ClkEn : 1 __packed; + uint32_t res_8_9 : 2 __packed; + uint32_t uart0ClkEn : 1 __packed; + uint32_t uart1ClkEn : 1 __packed; + uint32_t uart2ClkEn : 1 __packed; + uint32_t uart3ClkEn : 1 __packed; + uint32_t res_14_17 : 4 __packed; + uint32_t usbClkEn : 1 __packed; + uint32_t cmpClkEn : 1 __packed; + uint32_t vrefClkEn : 1 __packed; + uint32_t res_21_31 : 11 __packed; } field; } SIM_SCGC4_t; /* 0x1034 */ @@ -167,16 +167,16 @@ typedef union { typedef union { uint32_t value; /* reset 0 */ struct { - uint32_t lptimer : 1 __attribute__((packed)); - uint32_t res_1_4 : 4 __attribute__((packed)); - uint32_t tsi : 1 __attribute__((packed)); - uint32_t res_6_8 : 3 __attribute__((packed)); - uint32_t portA_ClkEn : 1 __attribute__((packed)); - uint32_t portB_ClkEn : 1 __attribute__((packed)); - uint32_t portC_ClkEn : 1 __attribute__((packed)); - uint32_t portD_ClkEn : 1 __attribute__((packed)); - uint32_t portE_ClkEn : 1 __attribute__((packed)); - uint32_t res_14_31 : 18 __attribute__((packed)); + uint32_t lptimer : 1 __packed; + uint32_t res_1_4 : 4 __packed; + uint32_t tsi : 1 __packed; + uint32_t res_6_8 : 3 __packed; + uint32_t portA_ClkEn : 1 __packed; + uint32_t portB_ClkEn : 1 __packed; + uint32_t portC_ClkEn : 1 __packed; + uint32_t portD_ClkEn : 1 __packed; + uint32_t portE_ClkEn : 1 __packed; + uint32_t res_14_31 : 18 __packed; } field; } SIM_SCGC5_t; /* 0x1038 */ @@ -193,11 +193,11 @@ typedef union { typedef union { uint32_t value; /* reset 0x0001 0000 */ struct { - uint32_t res_0_15 : 16 __attribute__((packed)); - uint32_t outdiv4 : 4 __attribute__((packed)); - uint32_t outdiv3 : 4 __attribute__((packed)); - uint32_t outdiv2 : 4 __attribute__((packed)); - uint32_t outdiv1 : 4 __attribute__((packed)); + uint32_t res_0_15 : 16 __packed; + uint32_t outdiv4 : 4 __packed; + uint32_t outdiv3 : 4 __packed; + uint32_t outdiv2 : 4 __packed; + uint32_t outdiv1 : 4 __packed; } field; } SIM_CLKDIV1_t; /* 0x1044 */ diff --git a/include/drivers/k20_uart.h b/include/drivers/k20_uart.h index b5e3c2ef974..67bc03cccd4 100644 --- a/include/drivers/k20_uart.h +++ b/include/drivers/k20_uart.h @@ -44,26 +44,24 @@ This module defines the UART Registers for the K20 Family of microprocessors typedef union { uint8_t value; struct { - uint8_t sbr : 5 __attribute__((packed)); /* Hi Baud Rate Bits */ - uint8_t res_5 : 1 __attribute__((packed)); - uint8_t rxEdgeIntEn : 1 - __attribute__((packed)); /* RxD Active Edge */ - uint8_t lbkdIntEn : 1 - __attribute__((packed)); /* LIN Break Detect */ + uint8_t sbr : 5 __packed; /* Hi Baud Rate Bits */ + uint8_t res_5 : 1 __packed; + uint8_t rxEdgeIntEn : 1 __packed; /* RxD Active Edge */ + uint8_t lbkdIntEn : 1 __packed; /* LIN Break Detect */ } field; } BDH_t; /* 0x000 BaudRate High */ typedef union { uint8_t value; struct { - uint8_t oddParity : 1 __attribute__((packed)); - uint8_t parityEnable : 1 __attribute__((packed)); - uint8_t idleLineType : 1 __attribute__((packed)); - uint8_t rxWakepMethod : 1 __attribute__((packed)); - uint8_t mode9Bit : 1 __attribute__((packed)); - uint8_t remoteLoopback : 1 __attribute__((packed)); - uint8_t uartStopWait : 1 __attribute__((packed)); - uint8_t loopbackEn : 1 __attribute__((packed)); + uint8_t oddParity : 1 __packed; + uint8_t parityEnable : 1 __packed; + uint8_t idleLineType : 1 __packed; + uint8_t rxWakepMethod : 1 __packed; + uint8_t mode9Bit : 1 __packed; + uint8_t remoteLoopback : 1 __packed; + uint8_t uartStopWait : 1 __packed; + uint8_t loopbackEn : 1 __packed; } field; } C1_t; /* 0x002 Control 1 */ @@ -73,39 +71,38 @@ typedef union { typedef union { uint8_t value; struct { - uint8_t sendBreak : 1 __attribute__((packed)); - uint8_t rxWakeupCtrl : 1 __attribute__((packed)); - uint8_t rxEnable : 1 __attribute__((packed)); - uint8_t txEnable : 1 __attribute__((packed)); - uint8_t idleLineIntEn : 1 __attribute__((packed)); - uint8_t rxFullInt_dmaTx_en : 1 __attribute__((packed)); - uint8_t txCompleteIntEn : 1 __attribute__((packed)); - uint8_t txInt_DmaTx_en : 1 __attribute__((packed)); + uint8_t sendBreak : 1 __packed; + uint8_t rxWakeupCtrl : 1 __packed; + uint8_t rxEnable : 1 __packed; + uint8_t txEnable : 1 __packed; + uint8_t idleLineIntEn : 1 __packed; + uint8_t rxFullInt_dmaTx_en : 1 __packed; + uint8_t txCompleteIntEn : 1 __packed; + uint8_t txInt_DmaTx_en : 1 __packed; } field; } C2_t; /* 0x003 Control 2 */ typedef union { uint8_t value; struct { - uint8_t parityErrIntEn : 1 __attribute__((packed)); - uint8_t frameErrIntEn : 1 __attribute__((packed)); - uint8_t noiseErrIntEn : 1 __attribute__((packed)); - uint8_t overrunErrIntEn : 1 __attribute__((packed)); - uint8_t txDataInvert : 1 __attribute__((packed)); - uint8_t txDataPinOuttDir : 1 __attribute__((packed)); - uint8_t txBit8 : 1 __attribute__((packed)); - uint8_t rxBit8 : 1 __attribute__((packed)); + uint8_t parityErrIntEn : 1 __packed; + uint8_t frameErrIntEn : 1 __packed; + uint8_t noiseErrIntEn : 1 __packed; + uint8_t overrunErrIntEn : 1 __packed; + uint8_t txDataInvert : 1 __packed; + uint8_t txDataPinOuttDir : 1 __packed; + uint8_t txBit8 : 1 __packed; + uint8_t rxBit8 : 1 __packed; } field; } C3_t; /* 0x006 Control 3 */ typedef union { uint8_t value; struct { - uint8_t brfa : 5 - __attribute__((packed)); /* BaudRateFineAdjust*/ - uint8_t mode10Bit : 1 __attribute__((packed)); - uint8_t matechAddrMode1En : 1 __attribute__((packed)); - uint8_t matchAddrMode2En : 1 __attribute__((packed)); + uint8_t brfa : 5 __packed; /* BaudRateFineAdjust*/ + uint8_t mode10Bit : 1 __packed; + uint8_t matechAddrMode1En : 1 __packed; + uint8_t matchAddrMode2En : 1 __packed; } field; } C4_t; /* 0x00A Control 4 */ @@ -115,28 +112,28 @@ typedef union { typedef union { uint8_t value; struct { - uint8_t parityErr : 1 __attribute__((packed)); - uint8_t framingErr : 1 __attribute__((packed)); - uint8_t noice : 1 __attribute__((packed)); - uint8_t rxOverrun : 1 __attribute__((packed)); - uint8_t idleLine : 1 __attribute__((packed)); - uint8_t rxDataFull : 1 __attribute__((packed)); - uint8_t txComplete : 1 __attribute__((packed)); - uint8_t txDataEmpty : 1 __attribute__((packed)); + uint8_t parityErr : 1 __packed; + uint8_t framingErr : 1 __packed; + uint8_t noice : 1 __packed; + uint8_t rxOverrun : 1 __packed; + uint8_t idleLine : 1 __packed; + uint8_t rxDataFull : 1 __packed; + uint8_t txComplete : 1 __packed; + uint8_t txDataEmpty : 1 __packed; } field; } S1_t; /* 0x004 Status 1 */ typedef union { uint8_t value; struct e { - uint8_t rxActive : 1 __attribute__((packed)); - uint8_t linBkDetectEn : 1 __attribute__((packed)); - uint8_t brkCharLen13 : 1 __attribute__((packed)); - uint8_t rxWakeupIdleDetect : 1 __attribute__((packed)); - uint8_t rxDataInverted : 1 __attribute__((packed)); - uint8_t msbFirst : 1 __attribute__((packed)); - uint8_t rxedgif : 1 __attribute__((packed)); - uint8_t lbkdif : 1 __attribute__((packed)); + uint8_t rxActive : 1 __packed; + uint8_t linBkDetectEn : 1 __packed; + uint8_t brkCharLen13 : 1 __packed; + uint8_t rxWakeupIdleDetect : 1 __packed; + uint8_t rxDataInverted : 1 __packed; + uint8_t msbFirst : 1 __packed; + uint8_t rxedgif : 1 __packed; + uint8_t lbkdif : 1 __packed; } field; } S2_t; /* 0x005 Status 2 */ @@ -155,10 +152,10 @@ typedef union { typedef union { uint8_t value; struct { - uint8_t rxFifoSize : 3 __attribute__((packed)); /* read-only */ - uint8_t rxFifoEn : 1 __attribute__((packed)); - uint8_t txFifoSize : 3 __attribute__((packed)); /* read-only */ - uint8_t txFifoEn : 1 __attribute__((packed)); + uint8_t rxFifoSize : 3 __packed; /* read-only */ + uint8_t rxFifoEn : 1 __packed; + uint8_t txFifoSize : 3 __packed; /* read-only */ + uint8_t txFifoEn : 1 __packed; } field; } PFIFO_t; /* 0x010 Fifo Parameter 1 */ @@ -168,14 +165,12 @@ typedef union { typedef union { uint8_t value; struct { - uint8_t rxFifoUnderflowIntEn : 1 __attribute__((packed)); - uint8_t txFifoOverflowIntEn : 1 __attribute__((packed)); - uint8_t rxFifoOverflowIntEn : 1 __attribute__((packed)); - uint8_t res_3 : 3 __attribute__((packed)); - uint8_t rxFifoFlush : 1 - __attribute__((packed)); /* write-only */ - uint8_t txFifoFlush : 1 - __attribute__((packed)); /* write-only */ + uint8_t rxFifoUnderflowIntEn : 1 __packed; + uint8_t txFifoOverflowIntEn : 1 __packed; + uint8_t rxFifoOverflowIntEn : 1 __packed; + uint8_t res_3 : 3 __packed; + uint8_t rxFifoFlush : 1 __packed; /* write-only */ + uint8_t txFifoFlush : 1 __packed; /* write-only */ } field; } CFIFO_t; /* 0x011 Fifo Control */ diff --git a/include/drivers/k20_watchdog.h b/include/drivers/k20_watchdog.h index 96bc37c0c47..1d6e8110bc8 100644 --- a/include/drivers/k20_watchdog.h +++ b/include/drivers/k20_watchdog.h @@ -49,20 +49,20 @@ This module defines Watch Dog Registers for the K20 Family of microprocessors typedef union { uint16_t value; /* reset= 0x01D3 */ struct { - uint8_t wdogen : 1 __attribute__((packed)); - uint8_t clksrc : 1 __attribute__((packed)); - uint8_t irqrsten : 1 __attribute__((packed)); - uint8_t winen : 1 __attribute__((packed)); - uint8_t allowupdate : 1 __attribute__((packed)); - uint8_t dbgen : 1 __attribute__((packed)); - uint8_t stopen : 1 __attribute__((packed)); - uint8_t waiten : 1 __attribute__((packed)); - uint8_t res_8_9 : 2 __attribute__((packed)); - uint8_t testwdog : 1 __attribute__((packed)); - uint8_t testsel : 1 __attribute__((packed)); - uint8_t bytesel : 2 __attribute__((packed)); - uint8_t disestwdog : 1 __attribute__((packed)); - uint8_t res_15 : 1 __attribute__((packed)); + uint8_t wdogen : 1 __packed; + uint8_t clksrc : 1 __packed; + uint8_t irqrsten : 1 __packed; + uint8_t winen : 1 __packed; + uint8_t allowupdate : 1 __packed; + uint8_t dbgen : 1 __packed; + uint8_t stopen : 1 __packed; + uint8_t waiten : 1 __packed; + uint8_t res_8_9 : 2 __packed; + uint8_t testwdog : 1 __packed; + uint8_t testsel : 1 __packed; + uint8_t bytesel : 2 __packed; + uint8_t disestwdog : 1 __packed; + uint8_t res_15 : 1 __packed; } field; } WDOG_STCTRLH_t; diff --git a/include/drivers/k6x_mpu.h b/include/drivers/k6x_mpu.h index 4dd46113fa7..e29484ab7c1 100644 --- a/include/drivers/k6x_mpu.h +++ b/include/drivers/k6x_mpu.h @@ -49,20 +49,15 @@ currently used. typedef union { uint32_t value; struct { - uint8_t valid : 1 - __attribute__((packed)); /* MPU valid/enable */ - uint8_t res_1 : 7 __attribute__((packed)); /* RAZ/WI */ - uint8_t numRgnDescs : 4 - __attribute__((packed)); /* # of regions */ - uint8_t numSlvPorts : 4 - __attribute__((packed)); /* # of slave ports */ - uint8_t hwRevLvl : 4 - __attribute__((packed)); /* Hardware revision */ - uint8_t res_20 : 3 __attribute__((packed)); /* RAZ/WI */ - uint8_t res_23 : 1 __attribute__((packed)); /* RAO/WI */ - uint8_t res_24 : 3 __attribute__((packed)); /* RAZ/WI */ - uint8_t slvPortNErr : 5 - __attribute__((packed)); /* slave port N err */ + uint8_t valid : 1 __packed; /* MPU valid/enable */ + uint8_t res_1 : 7 __packed; /* RAZ/WI */ + uint8_t numRgnDescs : 4 __packed; /* # of regions */ + uint8_t numSlvPorts : 4 __packed; /* # of slave ports */ + uint8_t hwRevLvl : 4 __packed; /* Hardware revision */ + uint8_t res_20 : 3 __packed; /* RAZ/WI */ + uint8_t res_23 : 1 __packed; /* RAO/WI */ + uint8_t res_24 : 3 __packed; /* RAZ/WI */ + uint8_t slvPortNErr : 5 __packed; /* slave port N err */ } field; } CESR_t; /* 0x000 Control/Error Status Register */ diff --git a/include/drivers/k6x_pmc.h b/include/drivers/k6x_pmc.h index 0a04c079dcf..0cb57394e99 100644 --- a/include/drivers/k6x_pmc.h +++ b/include/drivers/k6x_pmc.h @@ -48,17 +48,13 @@ currently used. typedef union { uint8_t value; struct { - uint8_t bandgapBufEn : 1 - __attribute__((packed)); /* bandgap buffering */ - uint8_t res_1 : 1 __attribute__((packed)); /* SBZ */ - uint8_t regOnStatus : 1 - __attribute__((packed)); /* regulator on, R/O */ - uint8_t ackIsolation : 1 - __attribute__((packed)); /* ack I/O isolation */ - uint8_t bandgapEn : 1 - __attribute__((packed)); /* bandgap enable */ - uint8_t res_5 : 1 __attribute__((packed)); - uint8_t res_6 : 2 __attribute__((packed)); /* RAZ/WI */ + uint8_t bandgapBufEn : 1 __packed; /* bandgap buffering */ + uint8_t res_1 : 1 __packed; /* SBZ */ + uint8_t regOnStatus : 1 __packed; /* regulator on, R/O */ + uint8_t ackIsolation : 1 __packed; /* ack I/O isolation */ + uint8_t bandgapEn : 1 __packed; /* bandgap enable */ + uint8_t res_5 : 1 __packed; + uint8_t res_6 : 2 __packed; /* RAZ/WI */ } field; } REGSC_t; /* 0x0002 Regulator Status/Control Register */ diff --git a/scripts/gen_idt/gen_idt.c b/scripts/gen_idt/gen_idt.c index 3b0c589d9c1..944f10d7c73 100644 --- a/scripts/gen_idt/gen_idt.c +++ b/scripts/gen_idt/gen_idt.c @@ -57,6 +57,9 @@ from within the VxMicro build system during the link stage. #include #include "version.h" +/* Define __packed for the idtEntry structure defined in idtEnt.h */ +#define __packed __attribute__((__packed__)) + /* These come from the shared directory */ #include "segselect.h" #include "idtEnt.h" diff --git a/shared/include/nanokernel/x86/idtEnt.h b/shared/include/nanokernel/x86/idtEnt.h index f3e14007a83..15a82ec7cb8 100644 --- a/shared/include/nanokernel/x86/idtEnt.h +++ b/shared/include/nanokernel/x86/idtEnt.h @@ -77,7 +77,7 @@ typedef struct idtEntry { unsigned short descPrivLevel:2; unsigned short present:1; unsigned short hiOffset; - } __attribute__ ((packed)) IDT_ENTRY; + } __packed IDT_ENTRY; /******************************************************************************* *