public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
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

  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