LINUX.ORG.RU

История изменений

Исправление LINUX-ORG-RU, (текущая версия) :

Основная репа вот

Патченая до Linux 6.12 включительно вот

Патч из второго до первого висит тут

Патченная до Linux 6.16 включительно вот

Последняя репа моя, реорганизована, убраны предупреждения, может быть сломана, я в ней экспериментирую, наверное лучше взять от Spacefish и взять у меня или поправить самому вот так или типа того

Там структурку поменяли и всё.

Сейчас модуль не передаёт значение из rax в xmm0 через _sstore_gpr64 и 32 там регистры не передаются. Пока можно вот так

inline void _sstore_gpr64 (struct pt_regs * r,ud_type_t n, uint64_t *where) {

	struct pt_regs *regs = r;
	switch (n) {
		case UD_R_RAX:
		     *where = regs->ax;
	             break;
...

И там где надо их регистра общего назначения сунуть в SIMD так
(да, я вижу что криво, и можно просто передать ssse3_obj, я просто пока как есть скопировал и всё, суть ты понял)

_sstore_gpr64 (ssse3_obj->op_obj->state,ssse3_obj->udo_src->base, &ssse3_obj->src.uint64[0]);

В ssse3_obj->op_obj->state лежат регистры (типа)

Вместо того что там сейчас в первых двух репах, сайчас там мусор выдаётся, а у меня вообще закомментировано, на тот момент чистил от варнингов, а PINSRQ у меня никогда не дёргалась и закомментированный код я думал что просто мёртвый.

Вроде всё, как-то так.


opemu это эмулятор новых процов ядерным модулем?

Почти, он чисто для SSE4.x инструкций, сам требует msse и msse2 без них пока оно даже не собирается, можно пофиксить, но я в эту сторону не смотрел. Оно мне пока не надо.

Исправление LINUX-ORG-RU, :

Основная репа вот

Патченая до Linux 6.12 включительно вот

Патч из второго до первого висит тут

Патченная до Linux 6.16 включительно вот

Последняя репа моя, реорганизована, убраны предупреждения, может быть сломана, я в ней экспериментирую, наверное лучше взять от Spacefish и взять у меня или поправить самому вот так или типа того

Там структурку поменяли и всё.

Сейчас модуль не передаёт значение из rax в xmm0 через _sstore_gpr64 и 32 там регистры не передаются. Пока можно вот так

inline void _sstore_gpr64 (struct pt_regs * r,ud_type_t n, uint64_t *where) {

	struct pt_regs *regs = r;
	switch (n) {
		case UD_R_RAX:
		     *where = regs->ax;
	             break;
...

И там где надо их регистра общего назначения сунуть в SIMD так
(да, я вижу что криво, и можно просто передать ssse3_obj, я просто пока как есть скопировал и всё, суть ты понял)

_sstore_gpr64 (ssse3_obj->op_obj->state,ssse3_obj->udo_src->base, &ssse3_obj->src.uint64[0]);

В ssse3_obj->op_obj->state лежат регистры (типа)

Вместо того что там сейчас в первых двух репах, сайчас там мусор выдаётся, а у меня вообще закомментировано, на тот момент чистил от варнингов, а PINSRQ у меня никогда не дёргалась и закомментированный код я думал что просто мёртвый.

Вроде всё, как-то так.

Исправление LINUX-ORG-RU, :

Основная репа вот

Патченая до Linux 6.12 включительно вот

Патч из второго до первого висит тут

Патченная до Linux 6.16 включительно вот

Последняя репа моя, реорганизована, убраны предупреждения, может быть сломана, я в ней экспериментирую, наверное лучше взять от Spacefish и взять у меня или поправить самому вот так или типа того

Там структурку поменяли и всё.

Сейчас модуль не передаёт значение из rax в xmm0 через _sstore_gpr64 и 32 там регистры не передаются. Пока можно вот так

inline void _sstore_gpr64 (struct pt_regs * r,ud_type_t n, uint64_t *where) {

	struct pt_regs *regs = r;
	switch (n) {
		case UD_R_RAX:
		     *where = regs->ax;
	             break;
...

И там где надо их регистра общего назначения сунуть в SIMD так

_sstore_gpr64 (ssse3_obj->op_obj->state,ssse3_obj->udo_src->base, &ssse3_obj->src.uint64[0]);

В ssse3_obj->op_obj->state лежат регистры (типа)

Вместо того что там сейчас в первых двух репах, сайчас там мусор выдаётся, а у меня вообще закомментировано, на тот момент чистил от варнингов, а PINSRQ у меня никогда не дёргалась и закомментированный код я думал что просто мёртвый.

Вроде всё, как-то так.

Исправление LINUX-ORG-RU, :

Основная репа вот

Патченая до Linux 6.12 включительно вот

Патч из второго до первого висит тут

Патченная до Linux 6.16 включительно вот

Последняя репа моя, реорганизована, убраны предупреждения, может быть сломана, я в ней экспериментирую, наверное лучше взять от Spacefish и взять у меня или поправить самому вот так или типа того

Там структурку поменяли и всё.

Сейчас модуль не передаёт значение из rax в xmm0 через _sstore_gpr64 и 32 там регистры не передаются. Пока можно вот так


inline void _sstore_gpr64 (struct pt_regs * r,ud_type_t n, uint64_t *where) {

	struct pt_regs *regs = r;
	switch (n) {
		case UD_R_RAX:
		     *where = regs->ax;
	             break;
...

И там где надо их регистра общего назначения сунуть в SIMD так

			_sstore_gpr64 (ssse3_obj->op_obj->state,ssse3_obj->udo_src->base, &ssse3_obj->src.uint64[0]);

В ssse3_obj->op_obj->state лежат регистры (типа)

Вместо того что там сейчас в первых двух репах, сайчас там мусор выдаётся, а у меня вообще закомментировано, на тот момент чистил от варнингов, а PINSRQ у меня никогда не дёргалась и закомментированный код я думал что просто мёртвый.

Вроде всё, как-то так.

Исправление LINUX-ORG-RU, :

Основная репа вот

Патченая до Linux 6.12 включительно вот

Патч из второго до первого висит тут

Патченная до Linux 6.16 включительно вот

Последняя репа моя, реорганизована, убраны предупреждения, может быть сломана, я в ней экспериментирую, наверное лучше взять от Spacefish и взять у меня или поправить самому вот так или типа того

Там структурку поменяли и всё.

Сейчас модуль не передаёт значение из rax в xmm0 через _sstore_gpr64 и 32 там регистры не передаются. Пока можно вот так


inline void _sstore_gpr64 (struct pt_regs * r,ud_type_t n, uint64_t *where) {

	struct pt_regs *regs = r;
	switch (n) {
		case UD_R_RAX:
		     *where = regs->ax;
	             break;
...

И там где надо их регистра общего назначения сунуть в SIMD так

			_sstore_gpr64 (ssse3_obj->op_obj->state,ssse3_obj->udo_src->base, &ssse3_obj->src.uint64[0]);

В ssse3_obj->op_obj->state лежат регистры (типа)

Вместо того что там сейчас в первых двух репах, сайчас там мусор выдаётся, а у меня вообще закомментировано, на тот момент чистил от варнингов, а PINSRQ у меня никогда не дёргалась и закомментированный код я думал что просто мёртвый.

Вроде всё, как-то так.

Исходная версия LINUX-ORG-RU, :

Основная репа вот

Патченая до Linux 6.12 включительно вот

Патч из второго до первого висит тут

Патченная до Linux 6.16 включительно вот

Последняя репа моя, реорганизована, убраны предупреждения, может быть сломана, я в ней экспериментирую, наверное лучше взять от Spacefish и взять у меня или поправить самому вот так или типа того

Там структурку поменяли и всё.

Сейчас модуль не передаёт значение из rax в xmm0 через _sstore_gpr64 и 32 там регистры не передаются. Пока можно вот так


inline void _sstore_gpr64 (struct pt_regs * r,ud_type_t n, uint64_t *where) {
/*
	struct pt_regs *regs = r;
	switch (n) {
		case UD_R_RAX:
		     *where = regs->ax;
	             break;
...

И там где надо их регистра общего назначения сунуть в SIMD так

			_sstore_gpr64 (ssse3_obj->op_obj->state,ssse3_obj->udo_src->base, &ssse3_obj->src.uint64[0]);

В ssse3_obj->op_obj->state лежат регистры (типа)

Вместо того что там сейчас в первых двух репах, сайчас там мусор выдаётся, а у меня вообще закомментировано, на тот момент чистил от варнингов, а PINSRQ у меня никогда не дёргалась и закомментированный код я думал что просто мёртвый.

Вроде всё, как-то так.