mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Pawel Sikora <pluto@agmk.net>
To: linux-kernel@vger.kernel.org
Subject: [2.6.8] OOPS and SIGSEGV on altivec instruction on PowerPC 7540.
Date: Fri, 13 May 2005 17:49:20 +0200	[thread overview]
Message-ID: <200505131749.20752.pluto@agmk.net> (raw)

[-- Attachment #1: Type: text/plain, Size: 1395 bytes --]

Hi,

simple runtime altivec detection from userspace causes an oops
on the `vand` instruction. kernel was built *without* CONFIG_ALTIVEC.
i think kernel should return a SIGILL instead of an oops ;-)

Oops: kernel access of bad area, sig: 11 [#65]
NIP: C0008B84 LR: C0007F2C SP: CF373F20 REGS: cf373e70 TRAP: 0300 Not tainted
MSR: 00009032 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 11
DAR: 00000088, DSISR: 40000000
TASK = c81e04f0[12983] 'altivec' THREAD: cf372000Last syscall: 174
GPR00: C0007F2C CF373F20 C81E04F0 00000004 00000004 00030001 00000000 0FEE08D0
GPR08: 0000F932 C0007F2C 00009032 C0350000 081E0788 00000000 00000000 100A37D8
GPR16: 100A0000 00000000 100A0000 00000000 10070000 100A37C8 100AEF08 00000000
GPR24: 100A1108 00000000 100A59A8 3002AEF8 3002BB80 3002AE60 0FFEA6FC 00000004
Call trace: [c0007f2c]


processor       : 0
cpu             : 7450
clock           : 700MHz
revision        : 2.1 (pvr 8000 0201)
bogomips        : 696.32
machine         : PowerMac4,4
motherboard     : PowerMac4,4 MacRISC2 MacRISC Power Macintosh
detected as     : 80 (eMac)
pmac flags      : 00000001
L2 cache        : 256K unified
memory          : 384MB
pmac-generation : NewWorld

-- 
The only thing necessary for the triumph of evil
  is for good men to do nothing.
                                           - Edmund Burke

[-- Attachment #2: altivec.c --]
[-- Type: text/x-csrc, Size: 803 bytes --]

#include <setjmp.h>
#include <signal.h>

static sigjmp_buf jmpbuf;
static volatile sig_atomic_t canjump = 0;

void sigill_handler(int sig)
{
        if (!canjump)
        {
                signal(sig, SIG_DFL);
                raise(sig);
        }
        canjump = 0;
        siglongjmp(jmpbuf, 1);
}

int arch_accel()
{
        signal(SIGILL, sigill_handler);
        if (sigsetjmp(jmpbuf, 1))
        {
                signal(SIGILL, SIG_DFL);
                return 0;
        }
        canjump = 1;
        asm volatile
        (
                "mtspr 256, %0          \n\t"
                "vand %%v0, %%v0, %%v0  \n\t"
                :
                : "r" (-1)
        );
        signal(SIGILL, SIG_DFL);
        return 1;
}

int main(int argc, char** argv)
{
        return arch_accel();
}

             reply	other threads:[~2005-05-13 15:49 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-05-13 15:49 Pawel Sikora [this message]
2005-05-13 16:03 ` Kumar Gala

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=200505131749.20752.pluto@agmk.net \
    --to=pluto@agmk.net \
    --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

all inboxes | Powered by JetHome®