使用vec_ld处理页面错误

时间:2015-01-23 05:55:18

标签: c aix simd altivec

我有以下程序将向量加载到向量寄存器。

char *buf = (char *)malloc(10);

vector unsigned char t = vec_perm( vec_ld( 0, (unsigned char *)buf),
                                   vec_ld( 15, (unsigned char *)buf),
                                   vec_lvsl( 0, (unsigned char *)buf)
                              );

如果buf在页面结束之前结束,就像让我们把页面从0到4000地址,缓冲区从3990开始。第二个vec_ld将地址对齐地址小于(3990 + 15),等于4000.

如果未映射从地址4000开始的页面,则上述程序将崩溃。

如何避免分段错误?

我所能想到的是当大小小于16字节时,使用memcpy将数据从缓冲区复制到向量寄存器。

0 个答案:

没有答案