Commit ea98af13 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k

Pull m68k updates from Geert Uytterhoeven:
 "Summary:
   - Kill harmless warning messages when running a multi-platform kernel
     on Atari
   - Correct virt/phys mixups that didn't actually hurt due to identity
     mappings"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
  m68k/atari: ARAnyM - Always use physical addresses in NatFeat calls
  m68k: Ignore disabled HSYNC interrupt on Atari for irqs_disabled()
parents 7e752241 55490050
...@@ -18,11 +18,11 @@ ...@@ -18,11 +18,11 @@
#include <asm/machdep.h> #include <asm/machdep.h>
#include <asm/natfeat.h> #include <asm/natfeat.h>
extern long nf_get_id2(const char *feature_name); extern long nf_get_id_phys(unsigned long feature_name);
asm("\n" asm("\n"
" .global nf_get_id2,nf_call\n" " .global nf_get_id_phys,nf_call\n"
"nf_get_id2:\n" "nf_get_id_phys:\n"
" .short 0x7300\n" " .short 0x7300\n"
" rts\n" " rts\n"
"nf_call:\n" "nf_call:\n"
...@@ -31,7 +31,7 @@ asm("\n" ...@@ -31,7 +31,7 @@ asm("\n"
"1: moveq.l #0,%d0\n" "1: moveq.l #0,%d0\n"
" rts\n" " rts\n"
" .section __ex_table,\"a\"\n" " .section __ex_table,\"a\"\n"
" .long nf_get_id2,1b\n" " .long nf_get_id_phys,1b\n"
" .long nf_call,1b\n" " .long nf_call,1b\n"
" .previous"); " .previous");
EXPORT_SYMBOL_GPL(nf_call); EXPORT_SYMBOL_GPL(nf_call);
...@@ -46,7 +46,7 @@ long nf_get_id(const char *feature_name) ...@@ -46,7 +46,7 @@ long nf_get_id(const char *feature_name)
if (n >= sizeof(name_copy)) if (n >= sizeof(name_copy))
return 0; return 0;
return nf_get_id2(name_copy); return nf_get_id_phys(virt_to_phys(name_copy));
} }
EXPORT_SYMBOL_GPL(nf_get_id); EXPORT_SYMBOL_GPL(nf_get_id);
...@@ -58,7 +58,7 @@ void nfprint(const char *fmt, ...) ...@@ -58,7 +58,7 @@ void nfprint(const char *fmt, ...)
va_start(ap, fmt); va_start(ap, fmt);
n = vsnprintf(buf, 256, fmt, ap); n = vsnprintf(buf, 256, fmt, ap);
nf_call(nf_get_id("NF_STDERR"), buf); nf_call(nf_get_id("NF_STDERR"), virt_to_phys(buf));
va_end(ap); va_end(ap);
} }
...@@ -83,7 +83,7 @@ void nf_init(void) ...@@ -83,7 +83,7 @@ void nf_init(void)
id = nf_get_id("NF_NAME"); id = nf_get_id("NF_NAME");
if (!id) if (!id)
return; return;
nf_call(id, buf, 256); nf_call(id, virt_to_phys(buf), 256);
buf[255] = 0; buf[255] = 0;
pr_info("NatFeats found (%s, %lu.%lu)\n", buf, version >> 16, pr_info("NatFeats found (%s, %lu.%lu)\n", buf, version >> 16,
......
...@@ -41,8 +41,8 @@ static inline s32 nfhd_read_write(u32 major, u32 minor, u32 rwflag, u32 recno, ...@@ -41,8 +41,8 @@ static inline s32 nfhd_read_write(u32 major, u32 minor, u32 rwflag, u32 recno,
static inline s32 nfhd_get_capacity(u32 major, u32 minor, u32 *blocks, static inline s32 nfhd_get_capacity(u32 major, u32 minor, u32 *blocks,
u32 *blocksize) u32 *blocksize)
{ {
return nf_call(nfhd_id + NFHD_GET_CAPACITY, major, minor, blocks, return nf_call(nfhd_id + NFHD_GET_CAPACITY, major, minor,
blocksize); virt_to_phys(blocks), virt_to_phys(blocksize));
} }
static LIST_HEAD(nfhd_list); static LIST_HEAD(nfhd_list);
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/err.h> #include <linux/err.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>
#include <linux/io.h>
#include <asm/natfeat.h> #include <asm/natfeat.h>
...@@ -25,17 +26,18 @@ static struct tty_driver *nfcon_tty_driver; ...@@ -25,17 +26,18 @@ static struct tty_driver *nfcon_tty_driver;
static void nfputs(const char *str, unsigned int count) static void nfputs(const char *str, unsigned int count)
{ {
char buf[68]; char buf[68];
unsigned long phys = virt_to_phys(buf);
buf[64] = 0; buf[64] = 0;
while (count > 64) { while (count > 64) {
memcpy(buf, str, 64); memcpy(buf, str, 64);
nf_call(stderr_id, buf); nf_call(stderr_id, phys);
str += 64; str += 64;
count -= 64; count -= 64;
} }
memcpy(buf, str, count); memcpy(buf, str, count);
buf[count] = 0; buf[count] = 0;
nf_call(stderr_id, buf); nf_call(stderr_id, phys);
} }
static void nfcon_write(struct console *con, const char *str, static void nfcon_write(struct console *con, const char *str,
...@@ -79,7 +81,7 @@ static int nfcon_tty_put_char(struct tty_struct *tty, unsigned char ch) ...@@ -79,7 +81,7 @@ static int nfcon_tty_put_char(struct tty_struct *tty, unsigned char ch)
{ {
char temp[2] = { ch, 0 }; char temp[2] = { ch, 0 };
nf_call(stderr_id, temp); nf_call(stderr_id, virt_to_phys(temp));
return 1; return 1;
} }
......
...@@ -195,7 +195,8 @@ static struct net_device * __init nfeth_probe(int unit) ...@@ -195,7 +195,8 @@ static struct net_device * __init nfeth_probe(int unit)
char mac[ETH_ALEN], host_ip[32], local_ip[32]; char mac[ETH_ALEN], host_ip[32], local_ip[32];
int err; int err;
if (!nf_call(nfEtherID + XIF_GET_MAC, unit, mac, ETH_ALEN)) if (!nf_call(nfEtherID + XIF_GET_MAC, unit, virt_to_phys(mac),
ETH_ALEN))
return NULL; return NULL;
dev = alloc_etherdev(sizeof(struct nfeth_private)); dev = alloc_etherdev(sizeof(struct nfeth_private));
...@@ -217,9 +218,9 @@ static struct net_device * __init nfeth_probe(int unit) ...@@ -217,9 +218,9 @@ static struct net_device * __init nfeth_probe(int unit)
} }
nf_call(nfEtherID + XIF_GET_IPHOST, unit, nf_call(nfEtherID + XIF_GET_IPHOST, unit,
host_ip, sizeof(host_ip)); virt_to_phys(host_ip), sizeof(host_ip));
nf_call(nfEtherID + XIF_GET_IPATARI, unit, nf_call(nfEtherID + XIF_GET_IPATARI, unit,
local_ip, sizeof(local_ip)); virt_to_phys(local_ip), sizeof(local_ip));
netdev_info(dev, KBUILD_MODNAME " addr:%s (%s) HWaddr:%pM\n", host_ip, netdev_info(dev, KBUILD_MODNAME " addr:%s (%s) HWaddr:%pM\n", host_ip,
local_ip, mac); local_ip, mac);
......
...@@ -67,6 +67,10 @@ static inline void arch_local_irq_restore(unsigned long flags) ...@@ -67,6 +67,10 @@ static inline void arch_local_irq_restore(unsigned long flags)
static inline bool arch_irqs_disabled_flags(unsigned long flags) static inline bool arch_irqs_disabled_flags(unsigned long flags)
{ {
if (MACH_IS_ATARI) {
/* Ignore HSYNC = ipl 2 on Atari */
return (flags & ~(ALLOWINT | 0x200)) != 0;
}
return (flags & ~ALLOWINT) != 0; return (flags & ~ALLOWINT) != 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment