Skip to content

Commit 6b57cbb

Browse files
committed
Fix ioctl code generation for 32-bit powerpc.
`__powerpc__` is defined on both 32-bit and 64-bit powerpc, fix the preprocessor tests to correctly detect 32-bit powerpc. Also, remove the `KVM_*` ioctls, since most of them get errors with current Linux versions. Fixes #148.
1 parent a3b520f commit 6b57cbb

File tree

15 files changed

+1692
-2100
lines changed

15 files changed

+1692
-2100
lines changed

gen/ioctl/generate.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ qemu-arm -L /usr/arm-linux-gnueabihf ./main.exe >> "$out"
3232
powerpc64le-linux-gnu-gcc -Iinclude -c list.c $cflags
3333
powerpc64le-linux-gnu-gcc main.c list.o -o main.exe $cflags
3434
qemu-ppc64le -L /usr/powerpc64le-linux-gnu ./main.exe >> "$out"
35+
powerpc-linux-gnu-gcc -Iinclude -c list.c $cflags
36+
powerpc-linux-gnu-gcc main.c list.o -o main.exe $cflags
37+
qemu-ppc -L /usr/powerpc-linux-gnu ./main.exe >> "$out"
3538
mips64el-linux-gnuabi64-gcc -Iinclude -c list.c $cflags
3639
mips64el-linux-gnuabi64-gcc main.c list.o -o main.exe $cflags
3740
qemu-mips64el -L /usr/mips64el-linux-gnuabi64 ./main.exe >> "$out"

gen/ioctl/generated.txt

Lines changed: 0 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -299,110 +299,6 @@ MGSL_IOCGPARAMS
299299
ENI_SETMULT
300300
RIO_GET_EVENT_MASK
301301
LIRC_GET_MAX_TIMEOUT
302-
KVM_SET_BOOT_CPU_ID
303-
KVM_SET_MP_STATE
304-
KVM_GET_MP_STATE
305-
KVM_GET_API_VERSION
306-
KVM_S390_GET_SKEYS
307-
KVM_SET_ONE_REG
308-
KVM_IRQ_LINE_STATUS
309-
KVM_SET_USER_MEMORY_REGION
310-
KVM_S390_INTERRUPT
311-
KVM_TPR_ACCESS_REPORTING
312-
KVM_GET_FPU
313-
KVM_ASSIGN_SET_MSIX_ENTRY
314-
KVM_MEMORY_ENCRYPT_REG_REGION
315-
KVM_S390_UCAS_MAP
316-
KVM_ASSIGN_SET_INTX_MASK
317-
KVM_MEMORY_ENCRYPT_OP
318-
KVM_CREATE_PIT2
319-
KVM_S390_VCPU_FAULT
320-
KVM_REGISTER_COALESCED_MMIO
321-
KVM_SET_VAPIC_ADDR
322-
KVM_CREATE_DEVICE
323-
KVM_GET_IRQCHIP
324-
KVM_TRANSLATE
325-
KVM_S390_SET_INITIAL_PSW
326-
KVM_X86_SETUP_MCE
327-
KVM_DEASSIGN_PCI_DEVICE
328-
KVM_XEN_HVM_SET_ATTR
329-
KVM_GET_CLOCK
330-
KVM_SET_FPU
331-
KVM_KVMCLOCK_CTRL
332-
KVM_PPC_GET_PVINFO
333-
KVM_X86_GET_MCE_CAP_SUPPORTED
334-
KVM_S390_GET_IRQ_STATE
335-
KVM_GET_DEVICE_ATTR
336-
KVM_S390_INITIAL_RESET
337-
KVM_SET_REGS
338-
KVM_GET_TSC_KHZ
339-
KVM_CHECK_EXTENSION
340-
KVM_PPC_RESIZE_HPT_COMMIT
341-
KVM_GET_DIRTY_LOG
342-
KVM_S390_SET_IRQ_STATE
343-
KVM_S390_NORMAL_RESET
344-
KVM_SET_SIGNAL_MASK
345-
KVM_XEN_VCPU_SET_ATTR
346-
KVM_SET_GSI_ROUTING
347-
KVM_CREATE_VCPU
348-
KVM_S390_UCAS_UNMAP
349-
KVM_S390_STORE_STATUS
350-
KVM_UNREGISTER_COALESCED_MMIO
351-
KVM_ASSIGN_DEV_IRQ
352-
KVM_S390_PV_COMMAND
353-
KVM_S390_ENABLE_SIE
354-
KVM_CLEAR_DIRTY_LOG
355-
KVM_GET_ONE_REG
356-
KVM_ARM_SET_DEVICE_ADDR
357-
KVM_DIRTY_TLB
358-
KVM_NMI
359-
KVM_HYPERV_EVENTFD
360-
KVM_S390_MEM_OP
361-
KVM_PPC_SVM_OFF
362-
KVM_PPC_RESIZE_HPT_PREPARE
363-
KVM_INTERRUPT
364-
KVM_XEN_HVM_GET_ATTR
365-
KVM_GET_SREGS
366-
KVM_SET_IDENTITY_MAP_ADDR
367-
KVM_GET_REGS
368-
KVM_S390_GET_CMMA_BITS
369-
KVM_CREATE_IRQCHIP
370-
KVM_ASSIGN_PCI_DEVICE
371-
KVM_SET_NR_MMU_PAGES
372-
KVM_IOEVENTFD
373-
KVM_RUN
374-
KVM_S390_SET_SKEYS
375-
KVM_SET_DEVICE_ATTR
376-
KVM_DEASSIGN_DEV_IRQ
377-
KVM_SMI
378-
KVM_SET_TSS_ADDR
379-
KVM_GET_NR_MMU_PAGES
380-
KVM_XEN_VCPU_GET_ATTR
381-
KVM_REINJECT_CONTROL
382-
KVM_HAS_DEVICE_ATTR
383-
KVM_IRQFD
384-
KVM_S390_SET_CMMA_BITS
385-
KVM_SET_IRQCHIP
386-
KVM_SIGNAL_MSI
387-
KVM_GET_VCPU_MMAP_SIZE
388-
KVM_CREATE_VM
389-
KVM_S390_CLEAR_RESET
390-
KVM_RESET_DIRTY_RINGS
391-
KVM_ASSIGN_SET_MSIX_NR
392-
KVM_CREATE_PIT
393-
KVM_SET_GUEST_DEBUG
394-
KVM_GET_REG_LIST
395-
KVM_ARM_VCPU_FINALIZE
396-
KVM_SET_CLOCK
397-
KVM_PPC_ALLOCATE_HTAB
398-
KVM_PPC_GET_SMMU_INFO
399-
KVM_SET_TSC_KHZ
400-
KVM_S390_IRQ
401-
KVM_ENABLE_CAP
402-
KVM_IRQ_LINE
403-
KVM_SET_SREGS
404-
KVM_MEMORY_ENCRYPT_UNREG_REGION
405-
KVM_GET_STATS_FD
406302
USBDEVFS_CLAIMINTERFACE
407303
CHIOMOVE
408304
SONYPI_IOCGBATFLAGS

gen/ioctl/list.c

Lines changed: 1 addition & 245 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ struct sockaddr {
171171
#include <linux/watchdog.h>
172172
#include <linux/wmi.h>
173173

174-
#ifdef __powerpc64__
174+
#if defined(__powerpc64__) || defined(__powerpc__)
175175
typedef __kernel_loff_t loff_t;
176176
#endif
177177

@@ -597,250 +597,6 @@ void list(void) {
597597
IOCTL_REQUEST(ENI_SETMULT);
598598
IOCTL_REQUEST(RIO_GET_EVENT_MASK);
599599
IOCTL_REQUEST(LIRC_GET_MAX_TIMEOUT);
600-
#if !defined(__arm__) && !defined(__loongarch__) && !defined(__powerpc64__) && !defined(__riscv) && !defined(__csky__)
601-
#if 0 // needs `struct kvm_cpuid2`
602-
IOCTL_REQUEST(KVM_GET_SUPPORTED_CPUID);
603-
#endif
604-
IOCTL_REQUEST(KVM_SET_BOOT_CPU_ID);
605-
IOCTL_REQUEST(KVM_SET_MP_STATE);
606-
IOCTL_REQUEST(KVM_GET_MP_STATE);
607-
IOCTL_REQUEST(KVM_GET_API_VERSION);
608-
IOCTL_REQUEST(KVM_S390_GET_SKEYS);
609-
#if 0 // needs `struct kvm_create_spapr_tce_64`
610-
IOCTL_REQUEST(KVM_CREATE_SPAPR_TCE_64);
611-
#endif
612-
IOCTL_REQUEST(KVM_SET_ONE_REG);
613-
#if 0 // needs `struct kvm_xcrs`
614-
IOCTL_REQUEST(KVM_SET_XCRS);
615-
#endif
616-
IOCTL_REQUEST(KVM_IRQ_LINE_STATUS);
617-
IOCTL_REQUEST(KVM_SET_USER_MEMORY_REGION);
618-
IOCTL_REQUEST(KVM_S390_INTERRUPT);
619-
IOCTL_REQUEST(KVM_TPR_ACCESS_REPORTING);
620-
#if 0 // needs `struct kvm_xsave`
621-
IOCTL_REQUEST(KVM_SET_XSAVE);
622-
#endif
623-
IOCTL_REQUEST(KVM_GET_FPU);
624-
IOCTL_REQUEST(KVM_ASSIGN_SET_MSIX_ENTRY);
625-
IOCTL_REQUEST(KVM_MEMORY_ENCRYPT_REG_REGION);
626-
IOCTL_REQUEST(KVM_S390_UCAS_MAP);
627-
IOCTL_REQUEST(KVM_ASSIGN_SET_INTX_MASK);
628-
#if 0 // needs `struct kvm_xen_hvm_config`
629-
IOCTL_REQUEST(KVM_XEN_HVM_CONFIG);
630-
#endif
631-
#if 0 // needs `struct kvm_x86_mce`
632-
IOCTL_REQUEST(KVM_X86_SET_MCE);
633-
#endif
634-
#if 0 // needs `struct kvm_vcpu_init`
635-
IOCTL_REQUEST(KVM_ARM_PREFERRED_TARGET);
636-
#endif
637-
IOCTL_REQUEST(KVM_MEMORY_ENCRYPT_OP);
638-
IOCTL_REQUEST(KVM_CREATE_PIT2);
639-
#if 0 // needs `struct kvm_rtas_token_args`
640-
IOCTL_REQUEST(KVM_PPC_RTAS_DEFINE_TOKEN);
641-
#endif
642-
#if 0 // needs `struct kvm_get_htab_fd`
643-
IOCTL_REQUEST(KVM_PPC_GET_HTAB_FD);
644-
#endif
645-
IOCTL_REQUEST(KVM_S390_VCPU_FAULT);
646-
IOCTL_REQUEST(KVM_REGISTER_COALESCED_MMIO);
647-
IOCTL_REQUEST(KVM_SET_VAPIC_ADDR);
648-
IOCTL_REQUEST(KVM_CREATE_DEVICE);
649-
IOCTL_REQUEST(KVM_GET_IRQCHIP);
650-
#if 0 // needs `struct kvm_nested_state`
651-
IOCTL_REQUEST(KVM_SET_NESTED_STATE);
652-
#endif
653-
IOCTL_REQUEST(KVM_TRANSLATE);
654-
IOCTL_REQUEST(KVM_S390_SET_INITIAL_PSW);
655-
IOCTL_REQUEST(KVM_X86_SETUP_MCE);
656-
IOCTL_REQUEST(KVM_DEASSIGN_PCI_DEVICE);
657-
#if 0 // needs `struct kvm_nested_state`
658-
IOCTL_REQUEST(KVM_GET_NESTED_STATE);
659-
#endif
660-
IOCTL_REQUEST(KVM_XEN_HVM_SET_ATTR);
661-
IOCTL_REQUEST(KVM_GET_CLOCK);
662-
#if 0 // needs `struct kvm_cpuid`
663-
IOCTL_REQUEST(KVM_SET_CPUID);
664-
#endif
665-
IOCTL_REQUEST(KVM_SET_FPU);
666-
IOCTL_REQUEST(KVM_KVMCLOCK_CTRL);
667-
#ifdef KVM_GET_SREGS2
668-
#if 0 // needs `struct kvm_xcrs`
669-
IOCTL_REQUEST(KVM_GET_SREGS2);
670-
#endif
671-
#endif
672-
IOCTL_REQUEST(KVM_PPC_GET_PVINFO);
673-
IOCTL_REQUEST(KVM_X86_GET_MCE_CAP_SUPPORTED);
674-
IOCTL_REQUEST(KVM_S390_GET_IRQ_STATE);
675-
#if 0 // needs `struct kvm_xcrs`
676-
IOCTL_REQUEST(KVM_GET_XCRS);
677-
#endif
678-
IOCTL_REQUEST(KVM_GET_DEVICE_ATTR);
679-
IOCTL_REQUEST(KVM_S390_INITIAL_RESET);
680-
IOCTL_REQUEST(KVM_SET_REGS);
681-
#if 0 // needs `struct kvm_msr_list`
682-
IOCTL_REQUEST(KVM_GET_MSR_INDEX_LIST);
683-
#endif
684-
#if 0 // needs `struct kvm_msrs`
685-
IOCTL_REQUEST(KVM_SET_MSRS);
686-
#endif
687-
IOCTL_REQUEST(KVM_GET_TSC_KHZ);
688-
#if 0 // needs `struct kvm_ppc_mmuv3_cfg`
689-
IOCTL_REQUEST(KVM_PPC_CONFIGURE_V3_MMU);
690-
#endif
691-
IOCTL_REQUEST(KVM_CHECK_EXTENSION);
692-
IOCTL_REQUEST(KVM_PPC_RESIZE_HPT_COMMIT);
693-
IOCTL_REQUEST(KVM_GET_DIRTY_LOG);
694-
IOCTL_REQUEST(KVM_S390_SET_IRQ_STATE);
695-
IOCTL_REQUEST(KVM_S390_NORMAL_RESET);
696-
#if 0 // needs `struct kvm_lapic_state`
697-
IOCTL_REQUEST(KVM_SET_LAPIC);
698-
#endif
699-
IOCTL_REQUEST(KVM_SET_SIGNAL_MASK);
700-
#if 0 // needs `struct kvm_pit_state`
701-
IOCTL_REQUEST(KVM_GET_PIT);
702-
#endif
703-
#if 0 // needs `struct kvm_arm_copy_mte_tags`
704-
IOCTL_REQUEST(KVM_ARM_MTE_COPY_TAGS);
705-
#endif
706-
#if 0 // needs `struct kvm_ppc_cpu_char`
707-
IOCTL_REQUEST(KVM_PPC_GET_CPU_CHAR);
708-
#endif
709-
#if 0 // needs `struct kvm_vcpu_events`
710-
IOCTL_REQUEST(KVM_GET_VCPU_EVENTS);
711-
#endif
712-
IOCTL_REQUEST(KVM_XEN_VCPU_SET_ATTR);
713-
IOCTL_REQUEST(KVM_SET_GSI_ROUTING);
714-
IOCTL_REQUEST(KVM_CREATE_VCPU);
715-
IOCTL_REQUEST(KVM_S390_UCAS_UNMAP);
716-
IOCTL_REQUEST(KVM_S390_STORE_STATUS);
717-
IOCTL_REQUEST(KVM_UNREGISTER_COALESCED_MMIO);
718-
IOCTL_REQUEST(KVM_ASSIGN_DEV_IRQ);
719-
IOCTL_REQUEST(KVM_S390_PV_COMMAND);
720-
IOCTL_REQUEST(KVM_S390_ENABLE_SIE);
721-
IOCTL_REQUEST(KVM_CLEAR_DIRTY_LOG);
722-
IOCTL_REQUEST(KVM_GET_ONE_REG);
723-
#if 0 // needs `struct kvm_ppc_rmmu_info`
724-
IOCTL_REQUEST(KVM_PPC_GET_RMMU_INFO);
725-
#endif
726-
IOCTL_REQUEST(KVM_ARM_SET_DEVICE_ADDR);
727-
IOCTL_REQUEST(KVM_DIRTY_TLB);
728-
IOCTL_REQUEST(KVM_NMI);
729-
IOCTL_REQUEST(KVM_HYPERV_EVENTFD);
730-
IOCTL_REQUEST(KVM_S390_MEM_OP);
731-
#if 0 // needs `struct kvm_pit_state2`
732-
IOCTL_REQUEST(KVM_GET_PIT2);
733-
#endif
734-
IOCTL_REQUEST(KVM_PPC_SVM_OFF);
735-
IOCTL_REQUEST(KVM_PPC_RESIZE_HPT_PREPARE);
736-
#if 0 // needs `struct kvm_cpuid2`
737-
IOCTL_REQUEST(KVM_GET_SUPPORTED_HV_CPUID);
738-
#endif
739-
IOCTL_REQUEST(KVM_INTERRUPT);
740-
#if 0 // needs `struct kvm_create_spapr_tce`
741-
IOCTL_REQUEST(KVM_CREATE_SPAPR_TCE);
742-
#endif
743-
IOCTL_REQUEST(KVM_XEN_HVM_GET_ATTR);
744-
#if 0 // needs `struct kvm_xsave`
745-
IOCTL_REQUEST(KVM_GET_XSAVE);
746-
#endif
747-
IOCTL_REQUEST(KVM_GET_SREGS);
748-
IOCTL_REQUEST(KVM_SET_IDENTITY_MAP_ADDR);
749-
#if 0 // needs `struct kvm_msr_list`
750-
IOCTL_REQUEST(KVM_GET_MSR_FEATURE_INDEX_LIST);
751-
#endif
752-
#if 0 // needs `struct kvm_vcpu_init`
753-
IOCTL_REQUEST(KVM_ARM_VCPU_INIT);
754-
#endif
755-
#if 0 // needs `struct kvm_cpuid2`
756-
IOCTL_REQUEST(KVM_GET_CPUID2);
757-
#endif
758-
IOCTL_REQUEST(KVM_GET_REGS);
759-
#if 0 // needs `struct kvm_msrs`
760-
IOCTL_REQUEST(KVM_GET_MSRS);
761-
#endif
762-
IOCTL_REQUEST(KVM_S390_GET_CMMA_BITS);
763-
IOCTL_REQUEST(KVM_CREATE_IRQCHIP);
764-
IOCTL_REQUEST(KVM_ASSIGN_PCI_DEVICE);
765-
IOCTL_REQUEST(KVM_SET_NR_MMU_PAGES);
766-
IOCTL_REQUEST(KVM_IOEVENTFD);
767-
#if 0 // needs `struct kvm_pit_state`
768-
IOCTL_REQUEST(KVM_SET_PIT);
769-
#endif
770-
IOCTL_REQUEST(KVM_RUN);
771-
IOCTL_REQUEST(KVM_S390_SET_SKEYS);
772-
IOCTL_REQUEST(KVM_SET_DEVICE_ATTR);
773-
IOCTL_REQUEST(KVM_DEASSIGN_DEV_IRQ);
774-
IOCTL_REQUEST(KVM_SMI);
775-
IOCTL_REQUEST(KVM_SET_TSS_ADDR);
776-
IOCTL_REQUEST(KVM_GET_NR_MMU_PAGES);
777-
IOCTL_REQUEST(KVM_XEN_VCPU_GET_ATTR);
778-
#if 0 // needs `struct kvm_debugregs`
779-
IOCTL_REQUEST(KVM_GET_DEBUGREGS);
780-
#endif
781-
IOCTL_REQUEST(KVM_REINJECT_CONTROL);
782-
IOCTL_REQUEST(KVM_HAS_DEVICE_ATTR);
783-
#if 0 // needs `struct kvm_memory_alias`
784-
IOCTL_REQUEST(KVM_SET_MEMORY_ALIAS);
785-
#endif
786-
IOCTL_REQUEST(KVM_IRQFD);
787-
#if 0 // needs `struct kvm_vcpu_events`
788-
IOCTL_REQUEST(KVM_SET_VCPU_EVENTS);
789-
#endif
790-
#if 0 // needs `struct kvm_debugregs`
791-
IOCTL_REQUEST(KVM_SET_DEBUGREGS);
792-
#endif
793-
IOCTL_REQUEST(KVM_S390_SET_CMMA_BITS);
794-
#if 0 // needs `struct kvm_lapic_state`
795-
IOCTL_REQUEST(KVM_GET_LAPIC);
796-
#endif
797-
IOCTL_REQUEST(KVM_SET_IRQCHIP);
798-
#ifdef KVM_SET_SREGS2
799-
#if 0 // needs `struct kvm_xcrs`
800-
IOCTL_REQUEST(KVM_SET_SREGS2);
801-
#endif
802-
#endif
803-
IOCTL_REQUEST(KVM_SIGNAL_MSI);
804-
IOCTL_REQUEST(KVM_GET_VCPU_MMAP_SIZE);
805-
IOCTL_REQUEST(KVM_CREATE_VM);
806-
#if 0 // needs `struct kvm_allocate_rma`
807-
IOCTL_REQUEST(KVM_ALLOCATE_RMA);
808-
#endif
809-
IOCTL_REQUEST(KVM_S390_CLEAR_RESET);
810-
IOCTL_REQUEST(KVM_RESET_DIRTY_RINGS);
811-
IOCTL_REQUEST(KVM_ASSIGN_SET_MSIX_NR);
812-
IOCTL_REQUEST(KVM_CREATE_PIT);
813-
IOCTL_REQUEST(KVM_SET_GUEST_DEBUG);
814-
IOCTL_REQUEST(KVM_GET_REG_LIST);
815-
IOCTL_REQUEST(KVM_ARM_VCPU_FINALIZE);
816-
#if 0 // needs `struct kvm_cpuid2`
817-
IOCTL_REQUEST(KVM_SET_CPUID2);
818-
#endif
819-
#if 0 // needs `struct kvm_pit_state2`
820-
IOCTL_REQUEST(KVM_SET_PIT2);
821-
#endif
822-
IOCTL_REQUEST(KVM_SET_CLOCK);
823-
IOCTL_REQUEST(KVM_PPC_ALLOCATE_HTAB);
824-
IOCTL_REQUEST(KVM_PPC_GET_SMMU_INFO);
825-
#if 0 // needs `struct kvm_msr_filter`
826-
IOCTL_REQUEST(KVM_X86_SET_MSR_FILTER);
827-
#endif
828-
IOCTL_REQUEST(KVM_SET_TSC_KHZ);
829-
IOCTL_REQUEST(KVM_S390_IRQ);
830-
IOCTL_REQUEST(KVM_ENABLE_CAP);
831-
IOCTL_REQUEST(KVM_IRQ_LINE);
832-
IOCTL_REQUEST(KVM_SET_SREGS);
833-
IOCTL_REQUEST(KVM_MEMORY_ENCRYPT_UNREG_REGION);
834-
#if 0 // needs `struct kvm_cpuid2`
835-
IOCTL_REQUEST(KVM_GET_EMULATED_CPUID);
836-
#endif
837-
#if 0 // needs `struct kvm_pmu_event_filter`
838-
IOCTL_REQUEST(KVM_SET_PMU_EVENT_FILTER);
839-
#endif
840-
#ifdef KVM_GET_STATS_FD
841-
IOCTL_REQUEST(KVM_GET_STATS_FD);
842-
#endif
843-
#endif
844600
IOCTL_REQUEST(USBDEVFS_CLAIMINTERFACE);
845601
IOCTL_REQUEST(CHIOMOVE);
846602
IOCTL_REQUEST(SONYPI_IOCGBATFLAGS);

gen/ioctl/main.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ int main(void) {
3131
printf("#ifdef __arm__\n");
3232
#elif defined(__aarch64__)
3333
printf("#ifdef __aarch64__\n");
34-
#elif defined(__powerpc__)
35-
printf("#ifdef __powerpc__\n");
3634
#elif defined(__powerpc64__)
3735
printf("#ifdef __powerpc64__\n");
36+
#elif defined(__powerpc__)
37+
printf("#ifdef __powerpc__\n");
3838
#elif __mips == 32
3939
printf("#if __mips == 32\n");
4040
#elif __mips == 64

0 commit comments

Comments
 (0)