dptalign.h (87826) | dptalign.h (96551) |
---|---|
1/* 2 * Copyright (c) 1996-1999 Distributed Processing Technology Corporation 3 * All rights reserved. 4 * 5 * Redistribution and use in source form, with or without modification, are 6 * permitted provided that redistributions of source code must retain the 7 * above copyright notice, this list of conditions and the following disclaimer. 8 * --- 6 unchanged lines hidden (view full) --- 15 * substitute goods or services; loss of use, data, or profits; or business 16 * interruptions) however caused and on any theory of liability, whether in 17 * contract, strict liability, or tort (including negligence or otherwise) 18 * arising in any way out of the use of x driver software, even if advised 19 * of the possibility of such damage. 20 * 21 * DPT Alignment Description File 22 * | 1/* 2 * Copyright (c) 1996-1999 Distributed Processing Technology Corporation 3 * All rights reserved. 4 * 5 * Redistribution and use in source form, with or without modification, are 6 * permitted provided that redistributions of source code must retain the 7 * above copyright notice, this list of conditions and the following disclaimer. 8 * --- 6 unchanged lines hidden (view full) --- 15 * substitute goods or services; loss of use, data, or profits; or business 16 * interruptions) however caused and on any theory of liability, whether in 17 * contract, strict liability, or tort (including negligence or otherwise) 18 * arising in any way out of the use of x driver software, even if advised 19 * of the possibility of such damage. 20 * 21 * DPT Alignment Description File 22 * |
23 * $FreeBSD: head/sys/dev/asr/dptalign.h 87826 2001-12-13 23:48:34Z obrien $ | 23 * $FreeBSD: head/sys/dev/asr/dptalign.h 96551 2002-05-14 00:53:08Z obrien $ |
24 */ 25#if (!defined(__DPTALIGN_H)) | 24 */ 25#if (!defined(__DPTALIGN_H)) |
26#define __DPTALIGN_H | 26#define __DPTALIGN_H |
27 28/* 29 * File - DPTALIGN.H 30 * 31 * Description: This file contains basic Alignment support definitions. 32 * 33 * Copyright Distributed Processing Technology, Corp. 34 * 140 Candace Dr. --- 130 unchanged lines hidden (view full) --- 165# else 166# define osdLocal4(x) ((unsigned DPT_4_BYTES)osdLocal2(((unsigned char __FAR__ *) \ 167 (x)+2)) + (((unsigned DPT_4_BYTES)((unsigned char __FAR__ *)(x))[1]) << 16) \ 168 + (((unsigned DPT_4_BYTES)((unsigned char __FAR__ *)(x))[0]) << 24)) 169# endif 170# endif 171#endif 172 | 27 28/* 29 * File - DPTALIGN.H 30 * 31 * Description: This file contains basic Alignment support definitions. 32 * 33 * Copyright Distributed Processing Technology, Corp. 34 * 140 Candace Dr. --- 130 unchanged lines hidden (view full) --- 165# else 166# define osdLocal4(x) ((unsigned DPT_4_BYTES)osdLocal2(((unsigned char __FAR__ *) \ 167 (x)+2)) + (((unsigned DPT_4_BYTES)((unsigned char __FAR__ *)(x))[1]) << 16) \ 168 + (((unsigned DPT_4_BYTES)((unsigned char __FAR__ *)(x))[0]) << 24)) 169# endif 170# endif 171#endif 172 |
173#define I2O_TID_MASK ((unsigned DPT_4_BYTES) ((1L<<I2O_TID_SZ)-1)) | 173#define I2O_TID_MASK ((unsigned DPT_4_BYTES) ((1L<<I2O_TID_SZ)-1)) |
174 175/* 176 * Now the access macros used throughout in order to methodize the 177 * active alignment. 178 */ | 174 175/* 176 * Now the access macros used throughout in order to methodize the 177 * active alignment. 178 */ |
179#define getUP1(x,y) (((unsigned char __FAR__ *)(x))+(unsigned DPT_4_BYTES)(y)) 180#define getU1(x,y) (*getUP1(x,y)) 181#define setU1(x,y,z) (*((unsigned char *)getUP1(x,y)) = (unsigned char)(z)) 182#define orU1(x,y,z) (*getUP1(x,y) |= (unsigned char)(z)) 183#define andU1(x,y,z) (*getUP1(x,y) &= (unsigned char)(z)) 184#define getUP2(x,y) ((unsigned short __FAR__ *)(((unsigned char __FAR__ *) \ | 179#define getUP1(x,y) (((unsigned char __FAR__ *)(x))+(unsigned DPT_4_BYTES)(y)) 180#define getU1(x,y) (*getUP1(x,y)) 181#define setU1(x,y,z) (*((unsigned char *)getUP1(x,y)) = (unsigned char)(z)) 182#define orU1(x,y,z) (*getUP1(x,y) |= (unsigned char)(z)) 183#define andU1(x,y,z) (*getUP1(x,y) &= (unsigned char)(z)) 184#define getUP2(x,y) ((unsigned short __FAR__ *)(((unsigned char __FAR__ *) \ |
185 (x))+(unsigned DPT_4_BYTES)(y))) | 185 (x))+(unsigned DPT_4_BYTES)(y))) |
186#define getBU2(x,y) ((unsigned short)osdLocal2((unsigned short __FAR__ *) \ | 186#define getBU2(x,y) ((unsigned short)osdLocal2((unsigned short __FAR__ *) \ |
187 getUP1(x,y))) | 187 getUP1(x,y))) |
188#define getLU2(x,y) ((unsigned short)osdSLocal2((unsigned short __FAR__ *) \ | 188#define getLU2(x,y) ((unsigned short)osdSLocal2((unsigned short __FAR__ *) \ |
189 getUP1(x,y))) 190/* to be deleted */ | 189 getUP1(x,y))) 190/* to be deleted */ |
191#define getU2(x,y) ((unsigned short)osdLocal2((unsigned short __FAR__ *) \ | 191#define getU2(x,y) ((unsigned short)osdLocal2((unsigned short __FAR__ *) \ |
192 getUP1(x,y))) 193#if (!defined(setU2)) 194# define setU2(x,y,z) { unsigned short hold = (unsigned short)(z); \ 195 *((unsigned short __FAR__ *)getUP1(x,y)) \ 196 = osdLocal2(&hold); \ 197 } 198#endif 199#if (!defined(setBU2)) --- 5 unchanged lines hidden (view full) --- 205#if (!defined(setLU2)) 206# define setLU2(x,y,z) { unsigned short hold = (unsigned short)(z); \ 207 *((unsigned short __FAR__ *)getUP1(x,y)) \ 208 = osdSLocal2(&hold); \ 209 } 210#endif 211 212/* to be deleted */ | 192 getUP1(x,y))) 193#if (!defined(setU2)) 194# define setU2(x,y,z) { unsigned short hold = (unsigned short)(z); \ 195 *((unsigned short __FAR__ *)getUP1(x,y)) \ 196 = osdLocal2(&hold); \ 197 } 198#endif 199#if (!defined(setBU2)) --- 5 unchanged lines hidden (view full) --- 205#if (!defined(setLU2)) 206# define setLU2(x,y,z) { unsigned short hold = (unsigned short)(z); \ 207 *((unsigned short __FAR__ *)getUP1(x,y)) \ 208 = osdSLocal2(&hold); \ 209 } 210#endif 211 212/* to be deleted */ |
213#define getU3(x,y) ((unsigned DPT_4_BYTES)osdLocal3((unsigned DPT_4_BYTES __FAR__ *) \ | 213#define getU3(x,y) ((unsigned DPT_4_BYTES)osdLocal3((unsigned DPT_4_BYTES __FAR__ *) \ |
214 getUP1(x,y))) 215#if (!defined(setU3)) 216# if (defined(_DPT_BIG_ENDIAN)) 217# define setU3(x,y,z) \ 218 { unsigned DPT_4_BYTES hold = z; \ 219 *(getUP1(x,y)) = (unsigned char)(hold >> 16L); \ 220 *((unsigned short __FAR__ *)(getUP1(x,y) + 1)) \ 221 = (unsigned short)hold; \ --- 4 unchanged lines hidden (view full) --- 226 *(getUP1(x,y) + 0) = (unsigned char)(hold >> 16) ; \ 227 *(getUP1(x,y) + 1) = (unsigned char)(hold >> 8L); \ 228 *(getUP1(x,y) + 2) = (unsigned char)(hold); \ 229 } 230# endif 231#endif 232/* up to here to be deleted */ 233 | 214 getUP1(x,y))) 215#if (!defined(setU3)) 216# if (defined(_DPT_BIG_ENDIAN)) 217# define setU3(x,y,z) \ 218 { unsigned DPT_4_BYTES hold = z; \ 219 *(getUP1(x,y)) = (unsigned char)(hold >> 16L); \ 220 *((unsigned short __FAR__ *)(getUP1(x,y) + 1)) \ 221 = (unsigned short)hold; \ --- 4 unchanged lines hidden (view full) --- 226 *(getUP1(x,y) + 0) = (unsigned char)(hold >> 16) ; \ 227 *(getUP1(x,y) + 1) = (unsigned char)(hold >> 8L); \ 228 *(getUP1(x,y) + 2) = (unsigned char)(hold); \ 229 } 230# endif 231#endif 232/* up to here to be deleted */ 233 |
234#define getBU3(x,y) ((unsigned DPT_4_BYTES)osdLocal3((unsigned DPT_4_BYTES __FAR__ *) \ | 234#define getBU3(x,y) ((unsigned DPT_4_BYTES)osdLocal3((unsigned DPT_4_BYTES __FAR__ *) \ |
235 getUP1(x,y))) 236#if (!defined(setBU3)) 237# if (defined(_DPT_BIG_ENDIAN)) 238# define setBU3(x,y,z) \ 239 { unsigned DPT_4_BYTES hold = z; \ 240 *(getUP1(x,y)) = (unsigned char)(hold >> 16L); \ 241 *((unsigned short __FAR__ *)(getUP1(x,y) + 1)) \ 242 = (unsigned short)hold; \ 243 } 244# else 245# define setBU3(x,y,z) \ 246 { unsigned DPT_4_BYTES hold = z; \ 247 *(getUP1(x,y) + 0) = (unsigned char)(hold >> 16) ; \ 248 *(getUP1(x,y) + 1) = (unsigned char)(hold >> 8L); \ 249 *(getUP1(x,y) + 2) = (unsigned char)(hold); \ 250 } 251# endif 252#endif | 235 getUP1(x,y))) 236#if (!defined(setBU3)) 237# if (defined(_DPT_BIG_ENDIAN)) 238# define setBU3(x,y,z) \ 239 { unsigned DPT_4_BYTES hold = z; \ 240 *(getUP1(x,y)) = (unsigned char)(hold >> 16L); \ 241 *((unsigned short __FAR__ *)(getUP1(x,y) + 1)) \ 242 = (unsigned short)hold; \ 243 } 244# else 245# define setBU3(x,y,z) \ 246 { unsigned DPT_4_BYTES hold = z; \ 247 *(getUP1(x,y) + 0) = (unsigned char)(hold >> 16) ; \ 248 *(getUP1(x,y) + 1) = (unsigned char)(hold >> 8L); \ 249 *(getUP1(x,y) + 2) = (unsigned char)(hold); \ 250 } 251# endif 252#endif |
253#define getUP4(x,y) ((unsigned DPT_4_BYTES __FAR__ *)(((unsigned char __FAR__ *) \ | 253#define getUP4(x,y) ((unsigned DPT_4_BYTES __FAR__ *)(((unsigned char __FAR__ *) \ |
254 (x))+(unsigned DPT_4_BYTES)(y))) | 254 (x))+(unsigned DPT_4_BYTES)(y))) |
255#define getBU4(x,y) ((unsigned DPT_4_BYTES)osdLocal4((unsigned DPT_4_BYTES __FAR__ *) \ | 255#define getBU4(x,y) ((unsigned DPT_4_BYTES)osdLocal4((unsigned DPT_4_BYTES __FAR__ *) \ |
256 getUP1(x,y))) | 256 getUP1(x,y))) |
257#define getLU4(x,y) ((unsigned DPT_4_BYTES)osdSLocal4((unsigned DPT_4_BYTES __FAR__ *) \ | 257#define getLU4(x,y) ((unsigned DPT_4_BYTES)osdSLocal4((unsigned DPT_4_BYTES __FAR__ *) \ |
258 getUP1(x,y))) 259/* to be deleted */ | 258 getUP1(x,y))) 259/* to be deleted */ |
260#define getU4(x,y) ((unsigned DPT_4_BYTES)osdSLocal4((unsigned DPT_4_BYTES __FAR__ *) \ | 260#define getU4(x,y) ((unsigned DPT_4_BYTES)osdSLocal4((unsigned DPT_4_BYTES __FAR__ *) \ |
261 getUP1(x,y))) 262#if (!defined(setU4)) 263# define setU4(x,y,z) { unsigned DPT_4_BYTES hold = z; \ 264 *((unsigned DPT_4_BYTES __FAR__ *)getUP1(x,y)) \ 265 = osdLocal4(&hold); \ 266 } 267#endif 268/* up to here */ --- 6 unchanged lines hidden (view full) --- 275#if (!defined(setLU4)) 276# define setLU4(x,y,z) { unsigned DPT_4_BYTES hold = z; \ 277 *((unsigned DPT_4_BYTES __FAR__ *)getUP1(x,y)) \ 278 = osdSLocal4(&hold); \ 279 } 280#endif 281 282 | 261 getUP1(x,y))) 262#if (!defined(setU4)) 263# define setU4(x,y,z) { unsigned DPT_4_BYTES hold = z; \ 264 *((unsigned DPT_4_BYTES __FAR__ *)getUP1(x,y)) \ 265 = osdLocal4(&hold); \ 266 } 267#endif 268/* up to here */ --- 6 unchanged lines hidden (view full) --- 275#if (!defined(setLU4)) 276# define setLU4(x,y,z) { unsigned DPT_4_BYTES hold = z; \ 277 *((unsigned DPT_4_BYTES __FAR__ *)getUP1(x,y)) \ 278 = osdSLocal4(&hold); \ 279 } 280#endif 281 282 |
283#define osdSwap16bit(x) ( (((unsigned short )x & 0xf000) >> 12) | \ | 283#define osdSwap16bit(x) ( (((unsigned short )x & 0xf000) >> 12) | \ |
284 (((unsigned short )x & 0x0f00) >> 4) | \ 285 (((unsigned short )x & 0x00f0) << 4) | \ 286 (((unsigned short )x & 0x000f) << 12 ) ) 287 288/* 289 * note that in big endian a 12 bit number (0x123) is stored as 1203 290 */ 291 | 284 (((unsigned short )x & 0x0f00) >> 4) | \ 285 (((unsigned short )x & 0x00f0) << 4) | \ 286 (((unsigned short )x & 0x000f) << 12 ) ) 287 288/* 289 * note that in big endian a 12 bit number (0x123) is stored as 1203 290 */ 291 |
292#define osdSwap12bit(x) (( (((unsigned short )x & 0x0f00) >> 8) | \ | 292#define osdSwap12bit(x) (( (((unsigned short )x & 0x0f00) >> 8) | \ |
293 ((unsigned short )x & 0x00f0) | \ 294 (((unsigned short )x & 0x000f) << 8 ) ) ) 295 | 293 ((unsigned short )x & 0x00f0) | \ 294 (((unsigned short )x & 0x000f) << 8 ) ) ) 295 |
296#define osdSwap8bit(x) ( (((unsigned char )x & 0x0f) << 4) | \ | 296#define osdSwap8bit(x) ( (((unsigned char )x & 0x0f) << 4) | \ |
297 (((unsigned char )x &0xf0) >> 4 ) ) 298 | 297 (((unsigned char )x &0xf0) >> 4 ) ) 298 |
299#define getL24bit1(w,x,y) ((unsigned DPT_4_BYTES)((unsigned char __FAR__ *)(&w->x))[0+(y)] \ | 299#define getL24bit1(w,x,y) ((unsigned DPT_4_BYTES)((unsigned char __FAR__ *)(&w->x))[0+(y)] \ |
300 + ((((unsigned DPT_4_BYTES)((unsigned char __FAR__ *)(&w->x))[1+(y)]) << 8) & 0xFF00) \ 301 + ((((unsigned DPT_4_BYTES)((unsigned char __FAR__ *)(&w->x))[2+(y)]) << 16) & 0xFF0000)) 302 | 300 + ((((unsigned DPT_4_BYTES)((unsigned char __FAR__ *)(&w->x))[1+(y)]) << 8) & 0xFF00) \ 301 + ((((unsigned DPT_4_BYTES)((unsigned char __FAR__ *)(&w->x))[2+(y)]) << 16) & 0xFF0000)) 302 |
303#define setL24bit1(w,x,y,z) { ((unsigned char __FAR__ *)(&w->x))[0+(y)] = (z); \ | 303#define setL24bit1(w,x,y,z) { ((unsigned char __FAR__ *)(&w->x))[0+(y)] = (z); \ |
304 ((unsigned char __FAR__ *)(&w->x))[1+(y)] = ((z) >> 8) & 0xFF; \ 305 ((unsigned char __FAR__ *)(&w->x))[2+(y)] = ((z) >> 16) & 0xFF; \ 306 } 307 | 304 ((unsigned char __FAR__ *)(&w->x))[1+(y)] = ((z) >> 8) & 0xFF; \ 305 ((unsigned char __FAR__ *)(&w->x))[2+(y)] = ((z) >> 16) & 0xFF; \ 306 } 307 |
308#define getL16bit(w,x,y) ((unsigned short)((unsigned char __FAR__ *)(&w->x))[0+(y)] \ | 308#define getL16bit(w,x,y) ((unsigned short)((unsigned char __FAR__ *)(&w->x))[0+(y)] \ |
309 + ((((unsigned short)((unsigned char __FAR__ *)(&w->x))[1+(y)]) << 8) & 0xFF00)) 310 | 309 + ((((unsigned short)((unsigned char __FAR__ *)(&w->x))[1+(y)]) << 8) & 0xFF00)) 310 |
311#define setL16bit(w,x,y,z) { ((unsigned char __FAR__ *)(&w->x))[0+(y)] = (z); \ | 311#define setL16bit(w,x,y,z) { ((unsigned char __FAR__ *)(&w->x))[0+(y)] = (z); \ |
312 ((unsigned char __FAR__ *)(&w->x))[1+(y)] = ((z) >> 8) & 0xFF; \ 313 } 314 | 312 ((unsigned char __FAR__ *)(&w->x))[1+(y)] = ((z) >> 8) & 0xFF; \ 313 } 314 |
315#define getL16bit2(w,x,y) ((unsigned short)((unsigned char __FAR__ *)(&w->x))[2+(y)] \ | 315#define getL16bit2(w,x,y) ((unsigned short)((unsigned char __FAR__ *)(&w->x))[2+(y)] \ |
316 + ((((unsigned short)((unsigned char __FAR__ *)(&w->x))[3+(y)]) << 8) & 0xFF00)) 317 | 316 + ((((unsigned short)((unsigned char __FAR__ *)(&w->x))[3+(y)]) << 8) & 0xFF00)) 317 |
318#define setL16bit2(w,x,y,z) { ((unsigned char __FAR__ *)(&w->x))[2+(y)] = (z); \ | 318#define setL16bit2(w,x,y,z) { ((unsigned char __FAR__ *)(&w->x))[2+(y)] = (z); \ |
319 ((unsigned char __FAR__ *)(&w->x))[3+(y)] = ((z) >> 8) & 0xFF; \ 320 } 321 322/* y is the number of bytes from beg of DPT_4_BYTES to get upper 4 bit of the addressed byte */ | 319 ((unsigned char __FAR__ *)(&w->x))[3+(y)] = ((z) >> 8) & 0xFF; \ 320 } 321 322/* y is the number of bytes from beg of DPT_4_BYTES to get upper 4 bit of the addressed byte */ |
323#define getL4bit(w,x,y) \ | 323#define getL4bit(w,x,y) \ |
324 ((unsigned char)(((unsigned char __FAR__ *)(&w->x))[0+(y)] >> 4) & 0x0f) 325 | 324 ((unsigned char)(((unsigned char __FAR__ *)(&w->x))[0+(y)] >> 4) & 0x0f) 325 |
326#define setL4bit(w,x,y,z) { \ | 326#define setL4bit(w,x,y,z) { \ |
327 ((unsigned char __FAR__ *)(&w->x))[0+(y)] &= 0xF0; \ 328 ((unsigned char __FAR__ *)(&w->x))[0+(y)] |= ((z) << 4) & 0xF0; \ 329 } 330/* y is number of bytes from beg of DPT_4_BYTES */ | 327 ((unsigned char __FAR__ *)(&w->x))[0+(y)] &= 0xF0; \ 328 ((unsigned char __FAR__ *)(&w->x))[0+(y)] |= ((z) << 4) & 0xF0; \ 329 } 330/* y is number of bytes from beg of DPT_4_BYTES */ |
331#define getL1bit(w,x,y) \ | 331#define getL1bit(w,x,y) \ |
332 ((unsigned char)(((unsigned char __FAR__ *)(&w->x))[0+(y)] ) & 0x01) 333 | 332 ((unsigned char)(((unsigned char __FAR__ *)(&w->x))[0+(y)] ) & 0x01) 333 |
334#define setL1bit(w,x,y,z) { \ | 334#define setL1bit(w,x,y,z) { \ |
335 ((unsigned char __FAR__ *)(&w->x))[0+(y)] &= 0xFE; \ 336 ((unsigned char __FAR__ *)(&w->x))[0+(y)] |= (z) & 0x01; \ 337 } | 335 ((unsigned char __FAR__ *)(&w->x))[0+(y)] &= 0xFE; \ 336 ((unsigned char __FAR__ *)(&w->x))[0+(y)] |= (z) & 0x01; \ 337 } |
338#define getL1bit1(w,x,y) \ | 338#define getL1bit1(w,x,y) \ |
339 ((unsigned char)(((unsigned char __FAR__ *)(&w->x))[0+(y)] >> 1) & 0x01) 340 | 339 ((unsigned char)(((unsigned char __FAR__ *)(&w->x))[0+(y)] >> 1) & 0x01) 340 |
341#define setL1bit1(w,x,y,z) { \ | 341#define setL1bit1(w,x,y,z) { \ |
342 ((unsigned char __FAR__ *)(&w->x))[0+(y)] &= 0xFD; \ 343 ((unsigned char __FAR__ *)(&w->x))[0+(y)] |= (z << 1) & 0x02; \ 344 } 345 346 347 348/* 12 bit at the first 12 bits of a DPT_4_BYTES word */ | 342 ((unsigned char __FAR__ *)(&w->x))[0+(y)] &= 0xFD; \ 343 ((unsigned char __FAR__ *)(&w->x))[0+(y)] |= (z << 1) & 0x02; \ 344 } 345 346 347 348/* 12 bit at the first 12 bits of a DPT_4_BYTES word */ |
349#define getL12bit(w,x,y) ((unsigned short)((unsigned char __FAR__ *)(&w->x))[0+(y)] \ | 349#define getL12bit(w,x,y) ((unsigned short)((unsigned char __FAR__ *)(&w->x))[0+(y)] \ |
350 + ((((unsigned short)((unsigned char __FAR__ *)(&w->x))[1+(y)]) << 8) & 0xF00)) 351 | 350 + ((((unsigned short)((unsigned char __FAR__ *)(&w->x))[1+(y)]) << 8) & 0xF00)) 351 |
352#define setL12bit(w,x,y,z) { ((unsigned char __FAR__ *)(&w->x))[0+(y)] = (z); \ | 352#define setL12bit(w,x,y,z) { ((unsigned char __FAR__ *)(&w->x))[0+(y)] = (z); \ |
353 ((unsigned char __FAR__ *)(&w->x))[1+(y)] &= 0xF0; \ 354 ((unsigned char __FAR__ *)(&w->x))[1+(y)] |= ((z) >> 8) & 0xF; \ 355 } 356/* 12 bit after another 12 bit in DPT_4_BYTES word */ | 353 ((unsigned char __FAR__ *)(&w->x))[1+(y)] &= 0xF0; \ 354 ((unsigned char __FAR__ *)(&w->x))[1+(y)] |= ((z) >> 8) & 0xF; \ 355 } 356/* 12 bit after another 12 bit in DPT_4_BYTES word */ |
357#define getL12bit1(w,x,y) (((unsigned short)((unsigned char __FAR__ *)(&w->x))[1+(y)]) >> 4 \ | 357#define getL12bit1(w,x,y) (((unsigned short)((unsigned char __FAR__ *)(&w->x))[1+(y)]) >> 4 \ |
358 + ((((unsigned short)((unsigned char __FAR__ *)(&w->x))[2+(y)]) << 4) )) 359 | 358 + ((((unsigned short)((unsigned char __FAR__ *)(&w->x))[2+(y)]) << 4) )) 359 |
360#define setL12bit1(w,x,y,z) { ((unsigned char __FAR__ *)(&w->x))[1+(y)] &= 0x0F; \ | 360#define setL12bit1(w,x,y,z) { ((unsigned char __FAR__ *)(&w->x))[1+(y)] &= 0x0F; \ |
361 ((unsigned char __FAR__ *)(&w->x))[1+(y)] |= ((z) & 0xF) << 4; \ 362 ((unsigned char __FAR__ *)(&w->x))[2+(y)] &= 0x00;\ 363 ((unsigned char __FAR__ *)(&w->x))[2+(y)] |= ((z) >> 8) & 0xff;\ 364 } 365 366/* 12 at the 3rd byte in a DPT_4_BYTES word */ | 361 ((unsigned char __FAR__ *)(&w->x))[1+(y)] |= ((z) & 0xF) << 4; \ 362 ((unsigned char __FAR__ *)(&w->x))[2+(y)] &= 0x00;\ 363 ((unsigned char __FAR__ *)(&w->x))[2+(y)] |= ((z) >> 8) & 0xff;\ 364 } 365 366/* 12 at the 3rd byte in a DPT_4_BYTES word */ |
367#define getL12bit2(w,x,y) ((unsigned short)((unsigned char __FAR__ *)(&w->x))[2+(y)] \ | 367#define getL12bit2(w,x,y) ((unsigned short)((unsigned char __FAR__ *)(&w->x))[2+(y)] \ |
368 + ((((unsigned short)((unsigned char __FAR__ *)(&w->x))[3+(y)]) << 8) & 0xF00)) 369 | 368 + ((((unsigned short)((unsigned char __FAR__ *)(&w->x))[3+(y)]) << 8) & 0xF00)) 369 |
370#define setL12bit2(w,x,y,z) { ((unsigned char __FAR__ *)(&w->x))[2+(y)] = (z); \ | 370#define setL12bit2(w,x,y,z) { ((unsigned char __FAR__ *)(&w->x))[2+(y)] = (z); \ |
371 ((unsigned char __FAR__ *)(&w->x))[3+(y)] &= 0xF0; \ 372 ((unsigned char __FAR__ *)(&w->x))[3+(y)] |= ((z) >> 8) & 0xF; \ 373 } 374 | 371 ((unsigned char __FAR__ *)(&w->x))[3+(y)] &= 0xF0; \ 372 ((unsigned char __FAR__ *)(&w->x))[3+(y)] |= ((z) >> 8) & 0xF; \ 373 } 374 |
375#define getL8bit(w,x,y) (\ | 375#define getL8bit(w,x,y) (\ |
376 (*(((unsigned char __FAR__ *)(&((w)->x)))\ 377 + y)) ) 378 | 376 (*(((unsigned char __FAR__ *)(&((w)->x)))\ 377 + y)) ) 378 |
379#define setL8bit(w,x,y,z) {\ | 379#define setL8bit(w,x,y,z) {\ |
380 (*(((unsigned char __FAR__ *)(&((w)->x)))\ 381 + y) = (z));\ 382 } 383 384 385#endif /* __DPTALIGN_H */ | 380 (*(((unsigned char __FAR__ *)(&((w)->x)))\ 381 + y) = (z));\ 382 } 383 384 385#endif /* __DPTALIGN_H */ |