#undef DEBUG_CMDLINE
 
+/*
+ * A 32-bit ARC PROM pass arguments and environment as 32-bit pointer.
+ * These macro take care of sign extension.
+ */
+#define prom_argv(index) ((char *) (long)argv[(index)])
+
 static char *ignored[] = {
        "ConsoleIn=",
        "ConsoleOut=",
        { "OSLoadOptions=", "" }
 };
 
-static char * __init move_firmware_args(char* cp)
+static char __init *move_firmware_args(int argc, LONG *argv, char *cp)
 {
        char *s;
        int actr, i;
 
        actr = 1; /* Always ignore argv[0] */
 
-       while (actr < prom_argc) {
+       while (actr < argc) {
                for(i = 0; i < ARRAY_SIZE(used_arc); i++) {
                        int len = strlen(used_arc[i][0]);
 
        return cp;
 }
 
-void __init prom_init_cmdline(void)
+void __init prom_init_cmdline(int argc, LONG *argv)
 {
        char *cp;
        int actr, i;
         * Move ARC variables to the beginning to make sure they can be
         * overridden by later arguments.
         */
-       cp = move_firmware_args(cp);
+       cp = move_firmware_args(argc, argv, cp);
 
-       while (actr < prom_argc) {
+       while (actr < argc) {
                for (i = 0; i < ARRAY_SIZE(ignored); i++) {
                        int len = strlen(ignored[i]);
 
 
 
 /* Master romvec interface. */
 struct linux_romvec *romvec;
-int prom_argc;
-LONG *_prom_argv;
 
 #if defined(CONFIG_64BIT) && defined(CONFIG_FW_ARC32)
 /* stack for calling 32bit ARC prom */
 
        romvec = ROMVECTOR;
 
-       prom_argc = fw_arg0;
-       _prom_argv = (LONG *) fw_arg1;
-
        if (pb->magic != 0x53435241) {
                printk(KERN_CRIT "Aieee, bad prom vector magic %08lx\n",
                       (unsigned long) pb->magic);
                        ;
        }
 
-       prom_init_cmdline();
+       prom_init_cmdline(fw_arg0, (LONG *)fw_arg1);
        prom_identify_arch();
        printk(KERN_INFO "PROMLIB: ARC firmware Version %d Revision %d\n",
               pb->ver, pb->rev);
 
 #include <asm/sgiarcs.h>
 
 extern struct linux_romvec *romvec;
-extern int prom_argc;
-
-extern LONG *_prom_argv;
-
-/* A 32-bit ARC PROM pass arguments and environment as 32-bit pointer.
-   These macros take care of sign extension.  */
-#define prom_argv(index) ((char *) (long) _prom_argv[(index)])
 
 extern int prom_flags;
 
 extern PCHAR ArcGetEnvironmentVariable(PCHAR name);
 
 /* ARCS command line parsing. */
-extern void prom_init_cmdline(void);
+extern void prom_init_cmdline(int argc, LONG *argv);
 
 /* File operations. */
 extern LONG ArcRead(ULONG fd, PVOID buf, ULONG num, PULONG cnt);