js_imports.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #pragma once
  2. #include <math.h>
  3. #include <stdbool.h>
  4. #include <stddef.h>
  5. #include <stdint.h>
  6. #include "cpu.h"
  7. // like memcpy, but only efficient for large (approximately 10k) sizes
  8. // See memcpy in https://github.com/kripken/emscripten/blob/master/src/library.js
  9. extern void* memcpy_large(void* dest, const void* src, size_t n);
  10. extern bool cpu_exception_hook(int32_t);
  11. extern bool has_rand_int(void);
  12. extern int32_t arpl(int32_t, int32_t);
  13. extern int32_t bswap(int32_t);
  14. extern int32_t get_rand_int(void);
  15. extern int32_t int_log2(int32_t);
  16. extern int32_t lar(int32_t, int32_t);
  17. extern int32_t lsl(int32_t, int32_t);
  18. extern int32_t mmap_read16(uint32_t);
  19. extern int32_t mmap_read32(uint32_t);
  20. extern int32_t mmap_read8(uint32_t);
  21. extern int32_t set_cr0(int32_t);
  22. extern int32_t verr(int32_t);
  23. extern int32_t verw(int32_t);
  24. extern void cpl_changed(void);
  25. extern void cpuid(void);
  26. extern void enter16(int32_t, int32_t);
  27. extern void enter32(int32_t, int32_t);
  28. extern void far_jump(int32_t, int32_t, int32_t);
  29. extern void far_return(int32_t, int32_t, int32_t);
  30. extern void handle_irqs(void);
  31. extern void hlt_op(void);
  32. extern void invlpg(int32_t);
  33. extern void iret16(void);
  34. extern void iret32(void);
  35. extern void load_ldt(int32_t);
  36. extern void load_tr(int32_t);
  37. extern void mmap_write128(uint32_t, int32_t, int32_t, int32_t, int32_t);
  38. extern void mmap_write16(uint32_t, int32_t);
  39. extern void mmap_write32(uint32_t, int32_t);
  40. extern void mmap_write8(uint32_t, int32_t);
  41. extern void popa16(void);
  42. extern void popa32(void);
  43. extern void todo(void);
  44. extern void undefined_instruction(void);
  45. extern void unimplemented_sse(void);
  46. extern void update_cs_size(int32_t);
  47. extern void update_eflags(int32_t);
  48. extern void switch_seg(int32_t, int32_t);
  49. extern void lss16(int32_t, int32_t, int32_t);
  50. extern void lss32(int32_t, int32_t, int32_t);
  51. extern void test_privileges_for_io(int32_t, int32_t);
  52. extern int32_t io_port_read8(int32_t);
  53. extern int32_t io_port_read16(int32_t);
  54. extern int32_t io_port_read32(int32_t);
  55. extern void io_port_write8(int32_t, int32_t);
  56. extern void io_port_write16(int32_t, int32_t);
  57. extern void io_port_write32(int32_t, int32_t);
  58. extern int32_t convert_f64_to_i32(double_t);
  59. extern void jit_clear_func(int32_t index);
  60. extern void call_interrupt_vector(int32_t interrupt_nr, bool is_software_int, bool has_error_code, int32_t error_code);
  61. extern void throw_cpu_exception(void);
  62. extern double_t microtick(void);