龙芯俱乐部开源技术社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 3648|回复: 1

检测龙芯 2K1000B 对 MIPS SIMD 的支持

[复制链接]

16

主题

55

帖子

2万

积分

论坛元老

Rank: 8Rank: 8

积分
23613
发表于 2018-6-12 21:51:41 | 显示全部楼层 |阅读模式
本帖最后由 brep 于 2018-6-12 22:07 编辑

根据《MIPS® Architecture for Programmers Volume IV-j: The MIPS64® SIMD Architecture Module》的说明,Config3 (CP0 Register 16, Select 3) 的Bit28是 MSA 实现的存在位,如果此位为1,则说明CPU中存在MSA实现,如果为0,则说明CPU没有实现MSA,这个位是由硬件设置的只读位;Config5 (CP0 Register 16, Select 5) 的Bit27是MSA使能位,这个位是可读写的,如果将此位置1,则启用MSA,置0,则关闭MSA。
为此编写下列程序,对龙芯派上的2K1000B CPU进行检测,看看它是否支持MSA,是否启用了MSA,源程序msa.c内容如下:
  1. #include <linux/init.h>
  2. #include <linux/module.h>
  3. MODULE_LICENSE("GPL");

  4. static int msa_init(void)
  5. {
  6.   int msap;
  7.   int msaen;
  8.   asm (
  9.                 "mfc0 %[result1], $16, 3\n\t"
  10.                 "mfc0 %[result2], $16, 5\n\t"
  11.                 : [result1] "=r" (msap), [result2] "=r" (msaen)
  12.        );
  13.   printk(KERN_ALERT "msap=0x%X msaen=0x%X\n", msap, msaen);
  14.   return 0;
  15. }

  16. static void msa_exit(void)
  17. {
  18.   printk(KERN_ALERT "msa exit\n");
  19. }

  20. module_init(msa_init);
  21. module_exit(msa_exit);
复制代码

Makefile 内容如下:
  1. MODDIR ?= /lib/modules/$(shell uname -r)/build
  2. PWD := $(shell pwd)

  3. obj-m += msa.o

  4. modules:
  5.         $(MAKE) -C $(MODDIR) M=$(PWD) modules

  6. clean:
  7.         rm -rf *.o *.ko *.cmd *.mod.* Module.symvers modules.order

  8. .PHONY: modules
复制代码
执行结果如下:
  1. [brep@LoongsonPi]$ make
  2. [brep@LoongsonPi]$ sudo insmod msa.ko
  3. [brep@LoongsonPi]$ sudo rmmod msa.ko
  4. [brep@LoongsonPi]$ sudo dmesg | tail -n2
  5. [ 8958.777343] msap=0xD00030A0 msaen=0x0
  6. [ 8968.417968] msa exit
  7. [brep@LoongsonPi]$
复制代码
由执行结果可知,MSA存在位为1,因此龙芯派的2K1000B实现了MSA,而MSA使能位为0,因此默认情况下,2K1000B的MSA并未启用。







84

主题

465

帖子

44万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
440445
发表于 2018-6-13 16:18:29 | 显示全部楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|龙芯俱乐部开源技术社区

GMT+8, 2024-12-1 05:12 , Processed in 0.113970 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表