16dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt/*
26dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * Declare directives for structure packing. No padding will be provided
36dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * between the members of packed structures, and therefore, there is no
46dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * guarantee that structure members will be aligned.
56dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt *
66dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * Declaring packed structures is compiler specific. In order to handle all
76dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * cases, packed structures should be delared as:
86dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt *
96dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * #include <packed_section_start.h>
106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt *
116dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * typedef BWL_PRE_PACKED_STRUCT struct foobar_t {
126dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt *    some_struct_members;
136dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * } BWL_POST_PACKED_STRUCT foobar_t;
146dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt *
156dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * #include <packed_section_end.h>
166dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt *
176dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt *
1838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Copyright (C) 1999-2013, Broadcom Corporation
196dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt *
206dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * Permission to use, copy, modify, and/or distribute this software for any
216dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * purpose with or without fee is hereby granted, provided that the above
226dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * copyright notice and this permission notice appear in all copies.
236dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt *
246dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
256dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
266dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
276dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
286dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
296dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
306dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
316dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt *
3238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * $Id: packed_section_end.h 241182 2011-02-17 21:50:03Z $
336dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt */
346dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
356dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
3638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Error check - BWL_PACKED_SECTION is defined in packed_section_start.h
3738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * and undefined in packed_section_end.h. If it is NOT defined at this
3838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * point, then there is a missing include of packed_section_start.h.
3938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
406dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#ifdef BWL_PACKED_SECTION
416dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt	#undef BWL_PACKED_SECTION
426dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#else
436dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt	#error "BWL_PACKED_SECTION is NOT defined!"
446dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#endif
456dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
466dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
476dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
486dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
4938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Compiler-specific directives for structure packing are declared in
5038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * packed_section_start.h. This marks the end of the structure packing section,
5138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * so, undef them here.
5238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
536dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#undef	BWL_PRE_PACKED_STRUCT
546dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#undef	BWL_POST_PACKED_STRUCT
55