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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.