diff options
author | marcel <marcel@FreeBSD.org> | 2002-06-06 22:49:23 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2002-06-06 22:49:23 +0000 |
commit | dc5340bd65de5c15085ca431071e47320d721be8 (patch) | |
tree | 836487252ac8f6c08168062745bfcbcdfeec430e /sys/ia64 | |
parent | df281667d31d06efb78224d4082c214fa312def0 (diff) | |
download | FreeBSD-src-dc5340bd65de5c15085ca431071e47320d721be8.zip FreeBSD-src-dc5340bd65de5c15085ca431071e47320d721be8.tar.gz |
Work around a bug in the Linux version of ski, that's specific to
SSC_GET_RTC. This fixes the panic seen shortly after mounting the
root file system.
Thanks to: "K.Sumitani" <ksumitani@mui.biglobe.ne.jp>
Diffstat (limited to 'sys/ia64')
-rw-r--r-- | sys/ia64/ia64/ski.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/sys/ia64/ia64/ski.c b/sys/ia64/ia64/ski.c index 496ce8d..a387000 100644 --- a/sys/ia64/ia64/ski.c +++ b/sys/ia64/ia64/ski.c @@ -58,6 +58,17 @@ ssc(u_int64_t in0, u_int64_t in1, u_int64_t in2, u_int64_t in3, int which) "break 0x80001" : "=r"(ret0) : "r"(which), "r"(in0), "r"(in1), "r"(in2), "r"(in3)); + + /* + * Ugh... Work around a bug in the Linux version of ski for + * SSC_GET_RTC. The PSR.dt register is not preserved properly + * and causes further memory references to be done without + * translation. All we need to do is set PSR.dt again. Note + * that dependency violations do not exist in ski, so we + * don't have to serialize. + */ + __asm __volatile("ssm psr.dt"); + return ret0; } |