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()
This commit is contained in:
@@ -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"
|
|||||||
"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)
|
|||||||
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, ...)
|
|||||||
|
|
||||||
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)
|
|||||||
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,
|
|||||||
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 @@
|
|||||||
#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;
|
|||||||
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)
|
|||||||
{
|
{
|
||||||
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)
|
|||||||
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)
|
|||||||
}
|
}
|
||||||
|
|
||||||
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)
|
|||||||
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user