From: "Jan Beulich" <JBeulich@novell.com>
To: <linux-kernel@vger.kernel.org>
Subject: [PATCH 27/39] NLKD/i386 - run time library
Date: Wed, 09 Nov 2005 15:23:05 +0100 [thread overview]
Message-ID: <43721459.76F0.0078.0@novell.com> (raw)
In-Reply-To: 4372143F.76F0.0078.0@novell.com
[-- Attachment #1: Type: text/plain, Size: 138 bytes --]
i386-specific implementation of the support routines of NLKD.
Signed-Off-By: Jan Beulich <jbeulich@novell.com>
(actual patch attached)
[-- Attachment #2: nlkd-rtl-i386.patch --]
[-- Type: application/octet-stream, Size: 14728 bytes --]
i386-specific implementation of the support routines of NLKD.
Signed-Off-By: Jan Beulich <jbeulich@novell.com>
Index: 2.6.14-nlkd/debug/nlkd/dbgIA32.S
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ 2.6.14-nlkd/debug/nlkd/dbgIA32.S 2005-10-05 11:37:24.000000000 +0200
@@ -0,0 +1,721 @@
+/*****************************************************************************
+ *
+ * File Name: dbgIA32.S
+ * Created by: jbeulich
+ * %version: 10 %
+ * %derived_by: jbeulich %
+ * %date_modified: Wed Oct 05 01:10:16 2005 %
+ *
+ ****************************************************************************/
+/*****************************************************************************
+ * *
+ * Copyright (c) 2001-2005 Novell, Inc. All Rights Reserved. *
+ * *
+ * This program is free software; you can redistribute it and/or *
+ * modify it under the terms of version 2 of the GNU General Public License *
+ * as published by the Free Software Foundation. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, contact Novell, Inc. *
+ * *
+ * To contact Novell about this file by physical or electronic mail, *
+ * you may find current contact information at www.novell.com. *
+ * *
+ *****************************************************************************/
+/*****************************************************************************
+ *
+ * File Description:
+ *
+ ****************************************************************************/
+
+#include <linux/config.h>
+.equiv PROCEDURE_ALIGN, 1
+#include "asm-ia32.h"
+
+//todo .file "dbgutil"
+.text
+
+// int dbgCompareMem(const void*, const void*, size_t);
+.pubproc dbgCompareMem
+ mov ecx, [esp+3*dword]
+ EHpush esi
+ xor eax, eax
+ EHpush edi
+ xor edx, edx
+ mov esi, [esp+3*dword]
+ mov edi, [esp+4*dword]
+ repe cmpsb
+ seta al
+ EHpop edi
+ setb dl
+ EHpop esi
+ sub eax, edx
+ ret
+.endp dbgCompareMem
+
+// int dbgCompareStr(const char*, const char*);
+.pubproc dbgCompareStr
+ xor eax, eax
+ mov ecx, [esp+dword]
+ mov edx, [esp+2*dword]
+0:
+ mov al, [ecx]
+ inc ecx
+ test al, al
+ jz 1f
+ cmp al, [edx]
+ jne 1f
+ inc edx
+ jmp 0b
+1:
+ movzx edx, byte ptr [edx]
+ sub eax, edx
+ ret
+.endp dbgCompareStr
+
+// void*dbgCopyMem(void*, const void*, size_t);
+// Note: The minimum requirements to this routine are that copying between properly
+// aligned buffers with a suitable size will be carried out with the maximum
+// access granularity possible.
+.pubproc dbgCopyMem
+#if !defined(CONFIG_REGPARM) || __GNUC__ < 3
+ mov ecx, [esp+3*dword]
+#endif
+ EHpush esi
+ EHpush edi
+ test cl, byte
+#if !defined(CONFIG_REGPARM) || __GNUC__ < 3
+ mov edi, [esp+3*dword]
+ mov esi, [esp+4*dword]
+ mov eax, edi
+#else
+ mov edi, eax
+ mov esi, edx
+#endif
+ jz 0f
+ rep movsb
+ EHpushState
+ EHpop edi
+ EHpop esi
+ ret
+0:
+ EHpopState
+ shr ecx, 2
+ jnc 1f
+ adc ecx, ecx
+ .byte 0x66
+1:
+ rep movsd
+ EHpop edi
+ EHpop esi
+ ret
+.endp dbgCopyMem
+
+// char*dbgCopyStr(char*, const char*);
+.pubproc dbgCopyStr
+ mov ecx, [esp+2*dword]
+ mov edx, [esp+dword]
+ EHpush ecx
+0:
+ mov al, [ecx]
+ inc ecx
+ mov [edx], al
+ inc edx
+ test al, al
+ jnz 0b
+ EHpop eax
+ ret
+.endp dbgCopyStr
+
+// char*dbgCopyStrP(char*, const char*);
+.pubproc dbgCopyStrP
+ mov ecx, [esp+2*dword]
+ mov edx, [esp+dword]
+0:
+ mov al, [ecx]
+ inc ecx
+ mov [edx], al
+ inc edx
+ test al, al
+ jnz 0b
+ lea eax, [edx-byte]
+ ret
+.endp dbgCopyStrP
+
+// unsigned dbgCountBits(uint64_t);
+.pubproc dbgCountBits
+ mov ecx, [esp+dword]
+ mov edx, [esp+2*dword]
+ xor eax, eax
+0:
+ shr ecx, 1
+ adc eax, 0
+ shr edx, 1
+ adc eax, 0
+ test ecx, ecx
+ jnz 0b
+ test edx, edx
+ jnz 0b
+ ret
+.endp dbgCountBits
+
+// size_t dbgCountStr(const char*);
+.pubproc dbgCountStr
+ EHpush edi
+ or ecx, not 0
+ xor eax, eax
+ mov edi, [esp+2*dword]
+ repne scasb
+ add ecx, 2
+ EHpop edi
+ sub eax, ecx
+ ret
+.endp dbgCountStr
+
+// size_t dbgCountWstr(const wchar_t*);
+.pubproc dbgCountWstr
+ EHpush edi
+ or ecx, not 0
+ xor eax, eax
+ mov edi, [esp+2*dword]
+ repne scasw
+ add ecx, 2
+ EHpop edi
+ sub eax, ecx
+ ret
+.endp dbgCountWstr
+
+// char*dbgFindChar(const char*, char);
+.pubproc dbgFindChar
+ mov eax, [esp+dword]
+ movzx ecx, byte ptr [esp+2*dword]
+0:
+ movzx edx, byte ptr [eax]
+ cmp ecx, edx
+ je 1f
+ inc eax
+ test edx, edx
+ jnz 0b
+ xor eax, eax
+0:
+ ret
+.endp dbgFindChar
+
+// wchar_t*dbgFindWchar(const wchar_t*, wchar_t);
+.pubproc dbgFindWchar
+ mov eax, [esp+dword]
+ movzx ecx, word ptr [esp+2*dword]
+0:
+ movzx edx, word ptr [eax]
+ cmp ecx, edx
+ je 1f
+ add eax, word
+ test edx, edx
+ jnz 0b
+ xor eax, eax
+1:
+ ret
+.endp dbgFindWchar
+
+// char*dbgWstr2Str(char*, const wchar_t*);
+.pubproc dbgWstr2Str
+ EHpush ebx
+ mov bl, '?'
+ mov ecx, [esp+3*dword]
+ mov edx, [esp+2*dword]
+ EHpush ecx
+0:
+ movzx eax, word ptr [ecx]
+ add ecx, word
+ cmp eax, 0x7f
+ cmova eax, ebx
+ mov [edx], al
+ inc edx
+ test eax, eax
+ jnz 0b
+ EHpop eax
+ EHpop ebx
+ ret
+.endp dbgWstr2Str
+
+// int dbgLower(int);
+.pubproc dbgLower
+ mov eax, [esp+dword]
+ cmp eax, 'A'
+ jb 0f
+ cmp eax, 'Z'
+ ja 0f
+ add al, 'a' - 'A'
+0:
+ ret
+.endp dbgLower
+
+// int dbgUpper(int);
+.pubproc dbgUpper
+ mov eax, [esp+dword]
+ cmp eax, 'a'
+ jb 0f
+ cmp eax, 'z'
+ ja 0f
+ add al, 'A' - 'a'
+0:
+ ret
+.endp dbgUpper
+
+// void*dbgFillMem(void*, int, size_t);
+.pubproc dbgFillMem
+#if !defined(CONFIG_REGPARM) || __GNUC__ < 3
+ mov ecx, [esp+3*dword]
+ mov eax, [esp+2*dword]
+#else
+ xchg eax, edx
+#endif
+ jmp 0f
+// void*dbgZeroMem(void*, size_t);
+.pubentry dbgZeroMem
+#if !defined(CONFIG_REGPARM) || __GNUC__ < 3
+ mov ecx, [esp+2*dword]
+#else
+ mov ecx, edx
+ mov edx, eax
+#endif
+ xor eax, eax
+0:
+ EHpush edi
+#if !defined(CONFIG_REGPARM) || __GNUC__ < 3
+ mov edi, [esp+2*dword]
+ EHpush edi, FALSE
+#else
+ mov edi, edx
+#endif
+ rep stosb
+#if !defined(CONFIG_REGPARM) || __GNUC__ < 3
+ EHpop eax
+#else
+ mov eax, edx
+#endif
+ EHpop edi
+ ret
+.endp dbgFillMem
+
+// uint8_t*dbgFindInt8(const uint8_t*, uint8_t, size_t);
+// void*dbgFindByte(const void*, int, size_t);
+.pubproc dbgFindInt8
+.pubentry dbgFindByte
+ mov ecx, [esp+3*dword]
+ EHpush edi
+ jecxz 0f
+ mov edi, [esp+2*dword]
+ mov al, [esp+3*dword]
+ repne scasb
+ lea eax, [edi-byte]
+ je 1f
+0:
+ xor eax, eax
+1:
+ EHpop edi
+ ret
+.endp dbgFindInt8
+
+// uint16_t*dbgFindInt16(const uint16_t*, uint16_t, size_t);
+.pubproc dbgFindInt16
+ mov ecx, [esp+3*dword]
+ EHpush edi
+ jecxz 0f
+ mov edi, [esp+2*dword]
+ mov eax, [esp+3*dword]
+ repne scasw
+ lea eax, [edi-word]
+ je 1f
+0:
+ xor eax, eax
+1:
+ EHpop edi
+ ret
+.endp dbgFindInt16
+
+// uint32_t*dbgFindInt32(const uint32_t*, uint32_t, size_t);
+// nuint_t*dbgFindIntN(const nuint_t*, nuint_t, size_t);
+// void**dbgFindPtr(const void**, const void*, size_t);
+.pubproc dbgFindInt32
+.pubentry dbgFindIntN
+.pubentry dbgFindPtr
+ mov ecx, [esp+3*dword]
+ EHpush edi
+ jecxz 0f
+ mov edi, [esp+2*dword]
+ mov eax, [esp+3*dword]
+ repne scasd
+ lea eax, [edi-dword]
+ je 1f
+0:
+ xor eax, eax
+1:
+ EHpop edi
+ ret
+.endp dbgFindInt32
+
+// uint64_t dbgMultiply(uint64_t, uint64_t, uint64_t*overflow);
+.pubproc dbgMultiply
+ mov eax, [esp+2*dword]
+ EHpush edi
+ mov edi, [esp+6*dword]
+ mul dword ptr [esp+5*dword]
+ mov [edi], eax
+ mov eax, [esp+2*dword]
+ mov [edi+dword], edx
+ mul dword ptr [esp+5*dword]
+ mov ecx, eax
+ add [edi], edx
+ mov eax, [esp+3*dword]
+ adc dword ptr [edi+dword], 0
+ mul dword ptr [esp+4*dword]
+ add ecx, eax
+ adc [edi], edx
+ mov eax, [esp+2*dword]
+ adc dword ptr [edi+dword], 0
+ mul dword ptr [esp+4*dword]
+ add edx, ecx
+ adc dword ptr [edi], 0
+ add dword ptr [edi+dword], 0
+ EHpop edi
+ ret
+.endp dbgMultiply
+
+// nint_t dbgLog2(uint64_t)
+.pubproc dbgLog2
+ bsr eax, [esp+2*dword]
+ lea eax, [eax+32]
+ jnz 0f
+ bsr eax, [esp+1*dword]
+ jnz 0f
+ or eax, not 0
+0:
+ ret
+.endp dbgLog2
+
+// uint8_t dbgRotl8(uint8_t, nuint_t);
+.pubproc dbgRotl8
+ mov cl, [esp+2*dword]
+ mov al, [esp+dword]
+ rol al, cl
+ ret
+.endp dbgRotl8
+
+// uint8_t dbgRotr8(uint8_t, nuint_t);
+.pubproc dbgRotr8
+ mov cl, [esp+2*dword]
+ mov al, [esp+dword]
+ ror al, cl
+ ret
+.endp dbgRotr8
+
+// uint16_t dbgRotl16(uint16_t, nuint_t);
+.pubproc dbgRotl16
+ mov cl, [esp+2*dword]
+ mov eax, [esp+dword]
+ rol ax, cl
+ ret
+.endp dbgRotl16
+
+// uint16_t dbgRotr16(uint16_t, nuint_t);
+.pubproc dbgRotr16
+ mov cl, [esp+2*dword]
+ mov eax, [esp+dword]
+ ror ax, cl
+ ret
+.endp dbgRotr16
+
+// uint32_t dbgRotl32(uint32_t, nuint_t);
+.pubproc dbgRotl32
+ mov cl, [esp+2*dword]
+ mov eax, [esp+dword]
+ rol eax, cl
+ ret
+.endp dbgRotl32
+
+// uint32_t dbgRotr32(uint32_t, nuint_t);
+.pubproc dbgRotr32
+ mov cl, [esp+2*dword]
+ mov eax, [esp+dword]
+ ror eax, cl
+ ret
+.endp dbgRotr32
+
+// uint64_t dbgRotl64(uint64_t, nuint_t);
+.pubproc dbgRotl64
+ mov cl, [esp+3*dword]
+ mov eax, [esp+dword]
+ test cl, 0x20
+ mov edx, [esp+2*dword]
+ EHpush ebx
+ jz 0f
+ xchg eax, edx
+0:
+ mov ebx, edx
+ shld edx, eax, cl
+ shld eax, ebx, cl
+ EHpop ebx
+ ret
+.endp dbgRotl64
+
+// uint64_t dbgRotr64(uint64_t, nuint_t);
+.pubproc dbgRotr64
+ mov cl, [esp+3*dword]
+ mov eax, [esp+dword]
+ test cl, 0x20
+ mov edx, [esp+2*dword]
+ EHpush ebx
+ jz 0f
+ xchg eax, edx
+0:
+ mov ebx, eax
+ shrd eax, edx, cl
+ shrd edx, ebx, cl
+ EHpop ebx
+ ret
+.endp dbgRotr64
+
+.pubproc dbgDivideU
+ mov eax, [esp+2*dword]
+ xor edx, edx
+ mov ecx, [esp+1*dword]
+ div dword ptr [esp+3*dword]
+ mov [ecx], eax
+ mov [ecx+dword], edx
+ mov eax, ecx
+ ret dword
+.endp dbgDivideU
+
+.pubproc dbgDivideS
+ mov eax, [esp+2*dword]
+ mov ecx, [esp+1*dword]
+ cdq
+ idiv dword ptr [esp+3*dword]
+ mov [ecx], eax
+ mov [ecx+dword], edx
+ mov eax, ecx
+ ret dword
+.endp dbgDivideS
+
+.pubproc dbg__divdi3
+#if !defined(CONFIG_REGPARM) || __GNUC__ < 3
+ mov eax, [esp+1*dword]
+ mov edx, [esp+2*dword]
+# define ARG2_SLOT 3
+#else
+# define ARG2_SLOT 1
+#endif
+ EHpushState
+ EHpush ebp
+ EHpush ebx
+ mov ebp, [esp+(ARG2_SLOT+3)*dword]
+ mov ebx, [esp+(ARG2_SLOT+2)*dword]
+ EHpush esi
+ mov ecx, edx
+ mov esi, ebp
+ sar ecx, 31
+ sar esi, 31
+ xor eax, ecx
+ xor edx, ecx
+ xor ebx, esi
+ xor ebp, esi
+ sub eax, ecx
+ sbb edx, ecx
+ xor ecx, esi
+ sub ebx, esi
+ sbb ebp, esi
+ EHpop esi
+ jz .LquickDIV
+ jns .LscaleDIV
+ // EDX:EAX <= 80000000:00000000, EBP:EBX == 80000000:00000000
+ mov eax, edx
+ xor edx, edx
+ shr eax, 31
+ jmp .LreturnDIV
+ EHpopState
+.pubentry dbg__udivdi3
+#if !defined(CONFIG_REGPARM) || __GNUC__ < 3
+ mov eax, [esp+1*dword]
+ mov edx, [esp+2*dword]
+#endif
+ EHpush ebp
+ EHpush ebx
+ xor ecx, ecx
+ mov ebp, [esp+(ARG2_SLOT+3)*dword]
+ mov ebx, [esp+(ARG2_SLOT+2)*dword]
+ test ebp, ebp
+ jz .LquickDIV
+ js .LcompareDIV
+.LscaleDIV:
+ EHpush ecx
+ bsr ecx, ebp
+ EHpush edx
+ EHpush eax
+ inc ecx // number of bits to shift (at most 31)
+ EHpush ebx, FALSE
+ shrd ebx, ebp, cl
+ shrd eax, edx, cl
+ shr edx, cl
+ div ebx
+ EHpop ebx, FALSE
+ imul ebp, eax // lo(quotient * hi(divisor))
+ mov ecx, eax
+ mul ebx // quotient * lo(divisor)
+ EHpop ebx, FALSE
+ add ebp, edx // EBP:EAX = quotient * divisor
+ sbb ecx, 0 // adjust quotient (if overflow)
+ xor edx, edx
+ sub ebx, eax
+ EHpop ebx, FALSE
+ mov eax, ecx
+ sbb ebx, ebp
+ EHpop ecx
+ sbb eax, edx // adjust quotient
+ jmp .LreturnDIV
+.LcompareDIV:
+ sub eax, ebx
+ mov eax, 0
+ sbb edx, ebp
+ mov edx, eax
+ sbb eax, -1
+ jmp .LreturnDIV
+.LquickDIV:
+ cmp edx, ebx
+ jb 0f
+ mov ebp, eax
+ mov eax, edx
+ xor edx, edx
+ div ebx
+ xchg eax, ebp
+0:
+ div ebx
+ mov edx, ebp
+.LreturnDIV:
+ xor eax, ecx
+ EHpop ebx
+ xor edx, ecx
+ sub eax, ecx
+ EHpop ebp
+ sbb edx, ecx
+ ret
+#undef ARG2_SLOT
+.endp dbg__divdi3
+
+.pubproc dbg__moddi3
+#if !defined(CONFIG_REGPARM) || __GNUC__ < 3
+ mov eax, [esp+1*dword]
+ mov edx, [esp+2*dword]
+# define ARG2_SLOT 3
+#else
+# define ARG2_SLOT 1
+#endif
+ EHpushState
+ EHpush ebp
+ EHpush ebx
+ mov ebp, [esp+(ARG2_SLOT+3)*dword]
+ mov ebx, [esp+(ARG2_SLOT+2)*dword]
+ EHpush esi
+ mov ecx, edx
+ mov esi, ebp
+ sar ecx, 31
+ sar esi, 31
+ xor eax, ecx
+ xor edx, ecx
+ xor ebx, esi
+ xor ebp, esi
+ sub eax, ecx
+ sbb edx, ecx
+ sub ebx, esi
+ sbb ebp, esi
+ EHpop esi
+ jz .LquickMOD
+ jns .LscaleMOD
+ // EDX:EAX <= 80000000:00000000, EBP:EBX == 80000000:00000000
+ not ebp
+ and edx, ebp
+ jmp .LreturnMOD
+ EHpopState
+.pubentry dbg__umoddi3
+#if !defined(CONFIG_REGPARM) || __GNUC__ < 3
+ mov eax, [esp+1*dword]
+ mov edx, [esp+2*dword]
+#endif
+ EHpush ebp
+ EHpush ebx
+ xor ecx, ecx
+ mov ebp, [esp+(ARG2_SLOT+3)*dword]
+ mov ebx, [esp+(ARG2_SLOT+2)*dword]
+ test ebp, ebp
+ jz .LquickMOD
+ js .LcompareMOD
+.LscaleMOD:
+ EHpush ecx
+ bsr ecx, ebp
+ EHpush esi
+ mov esi, edx
+ EHpush edi
+ inc ecx // number of bits to shift (at most 31)
+ mov edi, eax
+ EHpush ebx, FALSE
+ shrd ebx, ebp, cl
+ shrd eax, edx, cl
+ shr edx, cl
+ mov ecx, [esp]
+ div ebx
+ mov [esp], ebp
+ imul ebp, eax // lo(quotient * hi(divisor))
+ mul ecx // quotient * lo(divisor)
+ add edx, ebp // EDX:EAX = quotient * divisor
+ sbb ebp, ebp // record overflow
+ sub edi, eax
+ sbb esi, edx
+ mov eax, ecx
+ sbb ebp, 0 // accumulate overflow
+ EHpop edx
+ and eax, ebp
+ and edx, ebp
+ add eax, edi
+ EHpop edi
+ adc edx, esi
+ EHpop esi
+ EHpop ecx
+ jmp .LreturnMOD
+.LcompareMOD:
+ sub eax, ebx
+ EHpush esi
+ sbb edx, ebp
+ sbb esi, esi
+ and ebx, esi
+ and ebp, esi
+ add eax, ebx
+ EHpop esi
+ adc edx, ebp
+ jmp .LreturnMOD
+.LquickMOD:
+ cmp edx, ebx
+ jb 0f
+ mov ebp, eax
+ mov eax, edx
+ xor edx, edx
+ div ebx
+ xchg eax, ebp
+0:
+ div ebx
+ mov eax, edx
+ xor edx, edx
+.LreturnMOD:
+ xor eax, ecx
+ EHpop ebx
+ xor edx, ecx
+ sub eax, ecx
+ EHpop ebp
+ sbb edx, ecx
+ ret
+#undef ARG2_SLOT
+.endp dbg__moddi3
next prev parent reply other threads:[~2005-11-09 14:22 UTC|newest]
Thread overview: 105+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-11-09 13:54 [PATCH 0/39] NLKD - Novell Linux Kernel Debugger Jan Beulich
2005-11-09 13:56 ` [PATCH 1/39] NLKD - an alternative kallsyms approach Jan Beulich
2005-11-09 13:57 ` [PATCH 2/39] NLKD - an alternative early ioremap approach Jan Beulich
2005-11-09 13:58 ` [PATCH 3/39] NLKD - early/late CPU up/down notification Jan Beulich
2005-11-09 13:59 ` [PATCH 4/39] NLKD/i386 " Jan Beulich
2005-11-09 14:01 ` [PATCH 5/39] NLKD/x86-64 " Jan Beulich
2005-11-10 13:10 ` Andi Kleen
2005-11-14 8:04 ` [discuss] " Jan Beulich
2005-11-14 12:37 ` Andi Kleen
2005-11-09 14:01 ` [PATCH 6/39] NLKD - early panic notification Jan Beulich
2005-11-09 14:02 ` [PATCH 7/39] NLKD - task create/destroy notification Jan Beulich
2005-11-09 14:03 ` [PATCH 8/39] NLKD - rmmod notification Jan Beulich
2005-11-09 14:04 ` [PATCH 9/39] NLKD - hotkey notification Jan Beulich
2005-11-09 14:05 ` [PATCH 10/39] NLKD - console layout change notification Jan Beulich
2005-11-09 14:06 ` [PATCH 11/39] NLKD - time adjustment Jan Beulich
2005-11-09 14:06 ` [PATCH 12/39] NLKD/i386 " Jan Beulich
2005-11-09 19:10 ` George Anzinger
2005-11-10 8:12 ` Jan Beulich
2005-11-11 0:17 ` George Anzinger
2005-11-09 14:08 ` [PATCH 13/39] NLKD/x86-64 " Jan Beulich
2005-11-09 14:13 ` [PATCH 18/39] NLKD/x86-64 - INT1/INT3 handling changes Jan Beulich
2005-11-09 14:14 ` [PATCH 19/39] NLKD/x86-64 - stack-pointer-invalid markers Jan Beulich
2005-11-09 14:15 ` [PATCH 20/39] NLKD/x86-64 - switch_to() floating point adjustment Jan Beulich
2005-11-09 14:16 ` [PATCH 21/39] NLKD/x86-64 - core adjustments Jan Beulich
2005-11-10 13:24 ` [PATCH 20/39] NLKD/x86-64 - switch_to() floating point adjustment Andi Kleen
2005-11-10 14:07 ` Jan Beulich
2005-11-10 13:23 ` [PATCH 19/39] NLKD/x86-64 - stack-pointer-invalid markers Andi Kleen
2005-11-10 14:25 ` Jan Beulich
2005-11-10 13:21 ` [PATCH 18/39] NLKD/x86-64 - INT1/INT3 handling changes Andi Kleen
2005-11-10 14:07 ` Jan Beulich
2005-11-10 14:25 ` Andi Kleen
2005-11-10 15:00 ` Jan Beulich
2005-11-11 3:39 ` [discuss] " Andi Kleen
2005-11-10 13:19 ` [PATCH 13/39] NLKD/x86-64 - time adjustment Andi Kleen
2005-11-10 14:23 ` Jan Beulich
2005-11-11 2:12 ` Andi Kleen
2005-11-12 9:22 ` Vojtech Pavlik
2005-11-12 17:21 ` Andi Kleen
2005-11-12 20:44 ` Vojtech Pavlik
2005-11-15 0:38 ` George Anzinger
2005-11-15 1:05 ` [discuss] " Andi Kleen
2005-11-15 7:50 ` Vojtech Pavlik
2005-11-15 8:24 ` Jan Beulich
2005-11-10 14:43 ` Vojtech Pavlik
2005-11-09 14:09 ` [PATCH 14/39] NLKD - kernel trace buffer access Jan Beulich
2005-11-09 14:09 ` [PATCH 15/39] NLKD - early pseudo-fs Jan Beulich
2005-11-09 14:11 ` [PATCH 16/39] NLKD - core adjustments Jan Beulich
2005-11-09 14:11 ` [PATCH 17/39] NLKD/i386 " Jan Beulich
2005-11-09 19:00 ` Adrian Bunk
2005-11-10 8:04 ` Jan Beulich
2005-11-10 10:29 ` Adrian Bunk
2005-11-10 11:52 ` Jan Beulich
2005-11-10 12:36 ` Lars Marowsky-Bree
2005-11-09 14:18 ` [PATCH 22/39] NLKD - core Jan Beulich
2005-11-09 14:19 ` [PATCH 23/39] NLKD/x86 " Jan Beulich
2005-11-09 14:20 ` [PATCH 24/39] NLKD/i386 " Jan Beulich
2005-11-09 14:21 ` [PATCH 25/39] NLKD/x86-64 " Jan Beulich
2005-11-10 13:30 ` Andi Kleen
2005-11-09 14:22 ` [PATCH 26/39] NLKD - run time library Jan Beulich
2005-11-09 14:23 ` Jan Beulich [this message]
2005-11-09 14:23 ` [PATCH 28/39] NLKD/x86-64 " Jan Beulich
2005-11-10 13:32 ` Andi Kleen
[not found] ` <437214B7.76F0.0078.0@novell.com>
[not found] ` <4372156A.76F0.0078.0@novell.com>
2005-11-09 14:28 ` [PATCH 34/39] NLKD/x86 - Console Debug Agent Jan Beulich
[not found] ` <43721600.76F0.0078.0@novell.com>
2005-11-09 14:30 ` [PATCH 38/39] NLKD/i386 - Remote " Jan Beulich
2005-11-09 14:31 ` [PATCH 39/39] NLKD/x86-64 " Jan Beulich
2005-11-09 14:29 ` [PATCH 15/39] NLKD - early pseudo-fs Al Viro
2005-11-09 14:37 ` Jan Beulich
2005-11-09 15:00 ` Al Viro
2005-11-09 16:00 ` Jan Beulich
2005-11-10 5:44 ` [PATCH 14/39] NLKD - kernel trace buffer access Keith Owens
2005-11-10 8:02 ` Jan Beulich
2005-11-09 18:51 ` [PATCH 11/39] NLKD - time adjustment George Anzinger
2005-11-09 16:50 ` [PATCH 6/39] NLKD - early panic notification Greg KH
2005-11-09 16:45 ` [PATCH 3/39] NLKD - early/late CPU up/down notification Greg KH
2005-11-09 17:09 ` Jan Beulich
2005-11-09 17:19 ` Greg KH
2005-11-10 7:41 ` Jan Beulich
2005-11-10 20:59 ` Sam Ravnborg
2005-11-11 7:52 ` Jan Beulich
2005-11-12 20:52 ` Randy.Dunlap
2005-11-10 23:01 ` Greg KH
2005-11-11 10:06 ` [PATCH 2/39] NLKD - an alternative early ioremap approach Pavel Machek
2005-11-11 10:19 ` Jan Beulich
2005-11-09 16:50 ` [PATCH 1/39] NLKD - an alternative kallsyms approach Randy.Dunlap
2005-11-09 16:57 ` Greg KH
2005-11-09 17:20 ` Jan Beulich
2005-11-09 16:59 ` [PATCH 0/39] NLKD - Novell Linux Kernel Debugger Jeff Garzik
2005-11-09 17:06 ` Randy.Dunlap
2005-11-09 17:14 ` Jan Beulich
2005-11-09 17:56 ` Alan Cox
2005-11-09 18:05 ` Greg KH
2005-11-09 18:54 ` Paul Jackson
2005-11-10 12:41 ` Christoph Hellwig
2005-11-13 1:09 ` Andi Kleen
2005-11-13 2:53 ` jmerkey
2005-11-13 3:44 ` Andi Kleen
2005-11-13 3:26 ` Jeff V. Merkey
2005-11-13 3:32 ` Jeff V. Merkey
2005-11-09 17:53 ` Alan Cox
2005-11-09 16:25 ` Jeffrey V. Merkey
2005-11-10 14:48 ` Mark Lord
2005-11-10 15:28 ` Tom Rini
2005-11-10 16:37 ` Alan Cox
2005-11-13 1:11 ` Andi Kleen
[not found] ` <437214E4.76F0.0078.0@novell.com>
[not found] ` <4372153C.76F0.0078.0@novell.com>
2005-11-10 13:33 ` [PATCH 32/39] NLKD/x86-64 - Core Debug Engine Andi Kleen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=43721459.76F0.0078.0@novell.com \
--to=jbeulich@novell.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox