From owner-freebsd-hackers Wed Nov 18 21:00:10 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id VAA09027 for freebsd-hackers-outgoing; Wed, 18 Nov 1998 21:00:10 -0800 (PST) (envelope-from owner-freebsd-hackers@FreeBSD.ORG) Received: from apollo.backplane.com (apollo.backplane.com [209.157.86.2]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id VAA09022 for ; Wed, 18 Nov 1998 21:00:09 -0800 (PST) (envelope-from dillon@apollo.backplane.com) Received: (from dillon@localhost) by apollo.backplane.com (8.9.1/8.9.1) id UAA07948; Wed, 18 Nov 1998 20:59:40 -0800 (PST) (envelope-from dillon) Date: Wed, 18 Nov 1998 20:59:40 -0800 (PST) From: Matthew Dillon Message-Id: <199811190459.UAA07948@apollo.backplane.com> To: Joel Ray Holveck Cc: Marius Bendiksen , Terry Lambert , rnordier@nordier.com, freebsd-hackers@FreeBSD.ORG Subject: Re: FreeBSD on i386 memory model References: <199811171806.LAA03809@usr09.primenet.com> <3.0.5.32.19981118121341.00975ac0@mail.scancall.no> <199811181842.KAA06180@apollo.backplane.com> <86ogq4gv1v.fsf@detlev.UUCP> Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG :>> have a separate 'interrupt stack'. On Intel cpu's, however, the :>> abstraction is useless due to the completely broken ring design :>> because many supervisor instructions only work in ring 0. ring 1 :>> and ring 2 are almost completely useless. : :So they're useless (for our purposes); I don't see why that makes :their ring design broken. : :Could you please explain a bit more? : :Happy hacking, :joelh The biggest single problem to Intel's ring design is their stack pointer methodology. Rather then keep track of each ring's stack pointer in a hardware register like, say, the motorola architecture, the IA pushes the old %esp onto the stack and loads the new one from the cpu Task structure. This results in completely non-reentrant stack switching unless the interrupt/call procedure pops the saved %esp off the stack on entry, figures out which ring it came from, and re-stores it into the cpu Task structure before proceeding, then pulls it out of the cpu Task structure and pushes it back onto the stack prior to returning. In anycase, I could go on for hours about deficiencies in IA gating. That's just the tip of the iceberg. -Matt :-- :Joel Ray Holveck - joelh@gnu.org : Fourth law of programming: : Anything that can go wrong wi :sendmail: segmentation violation - core dumped : :To Unsubscribe: send mail to majordomo@FreeBSD.org :with "unsubscribe freebsd-hackers" in the body of the message : Matthew Dillon Engineering, HiWay Technologies, Inc. & BEST Internet Communications & God knows what else. (Please include original email in any response) To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message