⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unaligned.h

📁 基于组件方式开发操作系统的OSKIT源代码
💻 H
字号:
#ifndef __ARM_UNALIGNED_H#define __ARM_UNALIGNED_H#define get_unaligned(ptr) \	((__typeof__(*(ptr)))__get_unaligned((ptr), sizeof(*(ptr))))#define put_unaligned(val, ptr) \	__put_unaligned((unsigned long)(val), (ptr), sizeof(*(ptr)))extern void bad_unaligned_access_length (void);	extern inline unsigned long __get_unaligned(const void *ptr, size_t size){    unsigned long val;    switch (size) {	case 1:	    val = *(const unsigned char *)ptr;	    break;	case 2:	    val = ((const unsigned char *)ptr)[0] | (((const unsigned char *)ptr)[1] << 8);	    break;	case 4:	    val = ((const unsigned char *)ptr)[0]        | (((const unsigned char *)ptr)[1] << 8) |		 (((const unsigned char *)ptr)[2]) << 16 | (((const unsigned char *)ptr)[3] << 24);	    break;	default:	    bad_unaligned_access_length ();    }    return val;}extern inline void __put_unaligned(unsigned long val, void *ptr, size_t size){    switch (size) {	case 1:	    *(unsigned char *)ptr = val;	    break;	case 2:	    ((unsigned char *)ptr)[0] = val;	    ((unsigned char *)ptr)[1] = val >> 8;	    break;	case 4:	    ((unsigned char *)ptr)[0] = val;	    ((unsigned char *)ptr)[1] = val >> 8;	    ((unsigned char *)ptr)[2] = val >> 16;	    ((unsigned char *)ptr)[3] = val >> 24;	    break;	default:	    bad_unaligned_access_length ();    }}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -