#include #include MODULE_DESCRIPTION("Probe test"); MODULE_AUTHOR("Christian Hildner"); MODULE_LICENSE("GPL"); int init_module(void) { unsigned long addr; unsigned long res; printk("init_module called ...\n"); asm volatile ("\n\n" "movl %0=0xe000100000000000\n\n" ";;\n\n" "probe.r %1=%0,0\n\n" ";;\n\n" : "=r"(addr), "=r"(res) :); printk("init_module result 0x%016lx\n", res); printk("init_module done\n"); return(0); } void cleanup_module(void) { unsigned long addr; unsigned long res; printk("cleanup_module called ...\n"); asm volatile ("\n\n" "rsm psr.i | psr.ic\n\n" "movl %0=0xe000100000000000\n\n" ";;\n\n" "srlz.i\n\n" ";;\n\n" "probe.r %1=%0,0\n\n" ";;\n\n" "ssm psr.ic\n\n" ";;\n\n" "srlz.d\n\n" "ssm psr.i\n\n" ";;\n\n" "srlz.i\n\n" ";;\n\n" : "=r"(addr), "=r"(res) :); printk("cleanup_module result 0x%016lx\n", res); printk("cleanup_module done\n"); return; }